Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
Status
The first post of this thread is a WikiPost and can be edited by anyone with the appropiate permissions. Your edits will be public.
I have a MacPro3,1, 3.2 Ghz eight core, no NVMe drives, just one HD and three SSDs connected to the four SATA drive bays. Catalina was running super slow with 64GB of ram. I used the "maxmem=63488" (62GB) nvram boot-arg, rebooted, and now everything is running normal speed again.
Glad to help!
 
  • Like
Reactions: Grunchy
I have made an executable script to enable PCIE 2.0 speeds on slot 2 of my MacPro 3,1 but because there is a sudo command in it I have to enter the password when I double click on it.

Is there a way of avoiding enter administrator password by some kind of entering it on the script itself? That way I could drop the script on startup items and it will be launched automatically when boots up.

I have checked the speeds with black magic disk speed test and I get proper speeds of about 1300MB/s on read and about 1000MB/s on write but on System profiler on NVME express tab it displays my NVME drive but says 2.5Gt/s. Is that correct? because on my GFX card it does display 5Gt/s speeds...
 
I have made an executable script to enable PCIE 2.0 speeds on slot 2 of my MacPro 3,1 but because there is a sudo command in it I have to enter the password when I double click on it.

Is there a way of avoiding enter administrator password by some kind of entering it on the script itself? That way I could drop the script on startup items and it will be launched automatically when boots up.

I have checked the speeds with black magic disk speed test and I get proper speeds of about 1300MB/s on read and about 1000MB/s on write but on System profiler on NVME express tab it displays my NVME drive but says 2.5Gt/s. Is that correct? because on my GFX card it does display 5Gt/s speeds...
Maybe make a launch daemon? I don't know how to do that but you can find info about it somewhere and look at existing examples in your system.

System Information.app only shows that speed at startup. You need to use lspci from pciutils to check the current speed.
 
I have a MacPro3,1, 3.2 Ghz eight core, no NVMe drives, just one HD and three SSDs connected to the four SATA drive bays. Catalina was running super slow with 64GB of ram. I used the "maxmem=63488" (62GB) nvram boot-arg, rebooted, and now everything is running normal speed again.
64 GB slow down problem and Windows 10:
I was having problems booting Windows 10 with 64 GB #460 . I think it was just taking a long time. Once it finished booting I was able to use EasyBCD to edit the bcd (you can use bcdedit) and deduct 2048 MB from the RAM. I used CPU-Z to run benchmarks before->after:Single: 157->283 Multi: 592->2126
Can anyone confirm this problem/solution?

Setting PCIe 2.0 speed at boot for PCIe 3.0 cards:
I am running Catalina from an APFS partition. I'm using dosdude1's APFS Patch which consists of booting an EFI Shell and running a startup.nsh script #6,938 . I added some PCIe commands to force PCIe 2.0 speed for slot 2. The start of the script looks like this:
Code:
echo -off
mode 320 84

set StartupDelay 1
set -v efishellmode 1.1.2

echo "Enabling PCIe 2.0 for slot 2..."
mm 0000010009C 42 -w 1 -PCIE -n
mm 0000010007C 20 -w 1 -PCIE -n
The mode 320 84 is the max for my Apple Cinema 30" Display in the EFI Shell. You can press Escape to enter the shell before the startup.nsh script runs and run the commands manually to be sure they work. Type "mode" to see all the modes. Type "help pci" and "help mm" to learn about the pci and mm command. You should be able to use the "pci 00 01 00 -i" to see the link speed.

Update: preferred method for fixing PCIe link rate is FixPCIeLinkRate.efi mentioned in first post
 
Last edited:
Do we expect that to impact GPUs? Or only SAS/SATA/NVME controllers?
What are you asking about? Please quote at least a couple words from the post you are responding to. I didn't mention GPU or SAS/SATA/NVMe controller. The CPU-Z benchmark only measures the CPU performance in Windows. I did not check drive speed. I did not try a CPU benchmark in macOS.
 
What are you asking about? Please quote at least a couple words from the post you are responding to. I didn't mention GPU or SAS/SATA/NVMe controller. The CPU-Z benchmark only measures the CPU performance in Windows. I did not check drive speed. I did not try a CPU benchmark in macOS.
Silly me for expecting you to relate to your own posts.
Anyways, I was asking in relation to your changes to PCIe speeds which would clearly impact any of the devices I mentioned.
I know that GPUs typically are not able to have their speed adjusted inside macOS as they purportedly do this in some magical way based on load but I’ve not seen proof of this in a non Mac OEM card.
 
Silly me for expecting you to relate to your own posts.
Silly you for expecting me to be a mind reader. My post had two topics. I thought you might be asking about the first (Windows 64 GB slowdown which may affect everything) but you are asking about the second (setting PCIe 2.0 speed which affects PCIe 3.0 cards).

Anyways, I was asking in relation to your changes to PCIe speeds which would clearly impact any of the devices I mentioned.
I know that GPUs typically are not able to have their speed adjusted inside macOS as they purportedly do this in some magical way based on load but I’ve not seen proof of this in a non Mac OEM card.
Right. Changes to PCIe speed don't affect GPUs that have their own method for changing their speed. A PCIe device can choose to not change its speed. I don't know if the GPU driver or the GPU changes the speed.
 
Or modify your sudoers file to allow no password for the commands needed.
I searched about this option, but what I've found is how to enable sudo access to users but I don't want any user on my system to be able to execute sudo commands without granted permissions. I couldn't find anything about allowing specific files.

The best way I've found is to create a .plist file to be used on launch deamons folder but I couldn't understand searching on the net how to do that, I'm quite impotent at that :/
 
I searched about this option, but what I've found is how to enable sudo access to users but I don't want any user on my system to be able to execute sudo commands without granted permissions. I couldn't find anything about allowing specific files.

The best way I've found is to create a .plist file to be used on launch deamons folder but I couldn't understand searching on the net how to do that, I'm quite impotent at that :/
create file /Library/LaunchDaemons/local.gz.startup.plist
put this code in this file
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
   “http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>local.gz.startup</string>

<key>Program</key>
<string>/etc/rc.local</string>

<key>StandardInPath</key>
<string>/tmp/test.stdin</string>
<key>StandardOutPath</key>
<string>/tmp/test.stdout</string>
<key>StandardErrorPath</key>
<string>/tmp/test.stderr</string>


<key>KeepAlive</key>
<dict>
  <key>SuccessfulExit</key>
  <false/>

<key>Nice</key>
<integer>-15</integer>
</dict>


</dict>
</plist>

create file /etc/rc.local
put this code in this file
Code:
#!/bin/bash
sudo kextutil /System/Library/Extensions/DirectHW.kext
/path/to/your/script/to/make/pcie/faster.sh

make your script and /etc/rc.local executable with chmod +x /path/filename

load your launchdaemon
launchctl load /Library/LaunchDaemons/local.gz.startup.plist
 
Last edited:
create file /Library/LaunchDaemons/local.gz.startup.plist
put this code in this file
Code:
?xml version="1.0" encoding=="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
   “http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>local.gz.startup</string>

<key>Program</key>
<string>/etc/rc.local</string>

<key>StandardInPath</key>
<string>/tmp/test.stdin</string>
<key>StandardOutPath</key>
<string>/tmp/test.stdout</string>
<key>StandardErrorPath</key>
<string>/tmp/test.stderr</string>


<key>KeepAlive</key>
<dict>
  <key>SuccessfulExit</key>
  <false/>

<key>Nice</key>
<integer>-15</integer>
</dict>


</dict>
</plist>

create file /etc/rc.local
put this code in this file
Code:
#!/bin/bash
sudo kextutil /System/Library/Extensions/DirectHW.kext
/path/to/your/script/to/make/pcie/faster.sh

make your script and /etc/rc.local executable with chmod +x /path/filename

load your launchdaemon
launchctl load /Library/LaunchDaemons/local.gz.startup.plist

THANK YOU VERY MUCH!!!
That worked and also solved a weird behaviour that my write speed was about 500MB/s although my read speed was 1400MB/s.
Now both read and write is in 1400MB/s mark!

Although you have a mistake in the code on the local.gz.startup.plist
In the first line there is a missing < in the start of the line and also in the first line an = must be removed because it is duplicate. I've found it by comparing the code with a different launched deamon, because when I tried to launchctl the code I got an error of "this is not a valid property list".

Now my oldie but Goldie Mac Pro 3,1 is again a modern beast with all bells and whistles like NVME, SoftRAID with 4 sata SSDs, AMD HD7970 3GB gfx. Now I have to find a compatible USB C card to complete the setup!
 
  • Like
Reactions: Grunchy
THANK YOU VERY MUCH!!!
That worked and also solved a weird behaviour that my write speed was about 500MB/s although my read speed was 1400MB/s.
Now both read and write is in 1400MB/s mark!

Although you have a mistake in the code on the local.gz.startup.plist
In the first line there is a missing < in the start of the line and also in the first line an = must be removed because it is duplicate. I've found it by comparing the code with a different launched deamon, because when I tried to launchctl the code I got an error of "this is not a valid property list".

Now my oldie but Goldie Mac Pro 3,1 is again a modern beast with all bells and whistles like NVME, SoftRAID with 4 sata SSDs, AMD HD7970 3GB gfx. Now I have to find a compatible USB C card to complete the setup!
'<' was lost when copypaste))
second '=' doesn't matter, but thank you, I corrected it

Glad to hear you had success
The next step you should take is to add 8GB RAM more and limit it to 62 ;)

BTW what RAM do you use? Does it have large heatsinks?

Do you or anybody else have problems with RAM temperature?
My RAM with thin heatsinks usually is 76'C, I think it is too much
 
THANK YOU VERY MUCH!!!
That worked and also solved a weird behaviour that my write speed was about 500MB/s although my read speed was 1400MB/s.
Now both read and write is in 1400MB/s mark!
What device is this? VP100 512GB, 4xSSDs in SoftRaid level 4? I'm not sure about RAID 4. Oh wait, I think you mean four 2.5" SSDs (in the internal drive bays?) raided with Softraid and only one VP100 in a PCIe slot?

I don't understand the difference in write speed for the VP100. Do you mean the script, when not executed by the launch daemon, only allows the read speed to exceed 1000 MB/s while the write speed was stuck at 500 MB/s? But when the script is launched by the launch daemon, it allows write speeds to use the full PCIe 2.0x4 bandwidth like the read speed? I don't think there should be a difference.

Does System Information.app still show 2.5 GT/s for the NVMe drive? If you used the EFI shell script to change the PCIe speed before macOS starts, then System Information.app should show the correct 5 GT/s.
#30
Also, the EFI shell script would allow the NVMe drive to run at 5.0 GT/s in other OSs (Linux, Windows) if they don't have their own method to correct the link speed.

The next step you should take is to add 8GB RAM more and limit it to 62 ;)

BTW what RAM do you use? Does it have large heatsinks?

Do you or anybody else have problems with RAM temperature?
My RAM with thin heatsinks usually is 76'C, I think it is too much
I'm using 64GB from https://eshop.macsales.com/item/OWC/64FB8MPK64GB/
The heatsinks are full size, like Apple's. I haven't checked the temperature. What app do you use to check the temperature?

I use maxmem=63488 in nvram boot-args to limit it to 62 GB to avoid slow down in macOS. I am looking for someone with 64 GB to verify that the slow down also exists in Windows 10 in Boot Camp and that the solution described at #30 solves the problem for Windows.
 
  • Like
Reactions: StormLord
'<' was lost when copypaste))
second '=' doesn't matter, but thank you, I corrected it

Glad to hear you had success
The next step you should take is to add 8GB RAM more and limit it to 62 ;)

BTW what RAM do you use? Does it have large heatsinks?

Do you or anybody else have problems with RAM temperature?
My RAM with thin heatsinks usually is 76'C, I think it is too much

Well, I try to be in a golden line between performance and convenience, so even though I have 8x 8GB sticks for 64GB RAM I decided to pull 2 of these out and replace them with 2x 4GB on Riser A on slot 3 and 4 that I read on another thread that these exact positions give the best non bottleneck performance. Also that way it is more convenient when I want to setup a new disk with OS X without having to mess up with adding commands etc.
Not to mention that 56GB is something I will never use at full, and If for some reason I need that much, the problem will not be the 8 gigs less but more likely the CPUs /bus speed will be the problem.
I'm using the very cheap DDR2 667 server rams with thin heatsinks, and I know from experience as an IT tech that I will have some dying Dimms from time to time, they are so cheap that I really don't care, I would prefer 800Mhz Dimms but they are extraordinary rare and expensive that the benefits does not add up to the cost.

What program do you use to measure RAM temps? till now I just haven't found one measuring RAM temps and I just speculate by seeing the exhaust fan turn up a bit from 600RPM up to about 1000RPM from time to time.
 
What device is this? VP100 512GB, 4xSSDs in SoftRaid level 4? I'm not sure about RAID 4. Oh wait, I think you mean four 2.5" SSDs (in the internal drive bays?) raided with Softraid and only one VP100 in a PCIe slot?

I don't understand the difference in write speed for the VP100. Do you mean the script, when not executed by the launch daemon, only allows the read speed to exceed 1000 MB/s while the write speed was stuck at 500 MB/s? But when the script is launched by the launch daemon, it allows write speeds to use the full PCIe 2.0x4 bandwidth like the read speed? I don't think there should be a difference.

Does System Information.app still show 2.5 GT/s for the NVMe drive? If you used the EFI shell script to change the PCIe speed before macOS starts, then System Information.app should show the correct 5 GT/s.
#30
Also, the EFI shell script would allow the NVMe drive to run at 5.0 GT/s in other OSs (Linux, Windows) if they don't have their own method to correct the link speed.


I'm using 64GB from https://eshop.macsales.com/item/OWC/64FB8MPK64GB/
The heatsinks are full size, like Apple's. I haven't checked the temperature. What app do you use to check the temperature?

I use maxmem=63488 in nvram boot-args to limit it to 62 GB to avoid slow down in macOS. I am looking for someone with 64 GB to verify that the slow down also exists in Windows 10 in Boot Camp and that the solution described at #30 solves the problem for Windows.

Yes you guess correctly, I have 1x NVME VP100 512GB on slot 2, another 4x patriot bursts sata SSDs on 2 "hidden" data ports mounted on the lower optical bay and another 2 in the tray slots, that gives me 2 free tray slots that 1 is a small 120GB SSD for windows 10 that I use only for programming CPLDs, Eproms and controllers and another 2TB mechanical that I use for Time machine backup or exchange it with another mechanical for setups, client data recovering etc..

No I don't use a shell script because I have a flashed firmware to allow direct boot from APFS and NVME and that way I don't need the soft-APFS patch to run Mojave or Catalina, so I believe there is no added partition to input the script. I may be wrong about that, and adding the shell script could be possible, but I have not research it because it is you that I learned about it :D

So, my system profiler just show 2.5GT/s but speed wise I have the full PCIE 2.0 on my NVME.

Also, yes, for some unknown reason, when I was running the sudo commands after the OS booted, I had only 500MB/s write on VP100 but I had about 1400MB/s read. I had tested another NVME a 256GB S5 GAMIX that gave me about 1300MB/s read and 600MB/s write. This was a lent for test NVME, so I decided to buy something faster (VP100) because I though that the 600MB/s I was getting was a disk problem having its writing speed halved (from about 1200MB/s specs) because of PCIE 3.0 vs PCIE 2.0 difference.

I was disappointed when I got my new VP100 and realised that it had an even less write speed of about 500MB/sec, but when I created the launch deamon that 500MB/sec write became ~1400MB/sec!

For now I'm happy with my 3,1 but I will research a bit more this shell script that may give a bit boost on boot up.
 
BTW, now that my 3,1 is firmware flashed with APFS and NVME bootrom, can I just dump my rom and flash with that rom any other 3,1 Mac Pro? or is there something in the bootrom that is specific for any Mac, like serial number etc?
 
BTW, now that my 3,1 is firmware flashed with APFS and NVME bootrom, can I just dump my rom and flash with that rom any other 3,1 Mac Pro? or is there something in the bootrom that is specific for any Mac, like serial number etc?
Lot's of unique info are stored inside the BootROM like:

HardwareID:Location inside the BootROM:
Serial Number (SSN)NVRAM volume
HWCNVRAM volume
Sales Order Number (SON)NVRAM volume
GaidNVRAM volume
MLBLast sector of BootROM
MLB Build DateLast sector of BootROM

HWC and Gaid are not truly unique, both are linked to the model you bought. Everything else is unique.



If you use your BootROM dump with another Mac, you will clone the original and Apple will block iMessage/FaceTime/iCloud.
 
Last edited:
Lot's of unique info are stored inside the BootROM like:

HardwareID:Location inside the BootROM:
Serial Number (SSN)NVRAM volume
HWCNVRAM volume
Sales Order Number (SON)NVRAM volume
GaidNVRAM volume
MLBLast sector of BootROM
MLB Build DateLast sector of BootROM
HWC and Gaid are not truly unique, both are linked to the model you bought. Everything else is unique.




If you use your BootROM dump with another Mac, you will clone the original and Apple will block iMessage/FaceTime/iCloud.
Thank you for clarifying it. It would be a waste to loose these services. Manual patching it is then!
I'm wondering of how apple distributed firmware upgrades... Maybe they have an automated script of dumping and patching the rom file on the fly?
 
Thank you for clarifying it. It would be a waste to loose these services. Manual patching it is then!
I'm wondering of how apple distributed firmware upgrades... Maybe they have an automated script of dumping and patching the rom file on the fly?
Apple's firmware upgrade image is blank where the hardwareIDs are and efiflasher don't write to this areas. You can't create a image with APFS and NVMe modules inside, since it's the same EFI version and efiflasher checks this before doing the upgrade.
 
APFS Flasher contains both APFS.ffs and APFSJumpstart.ffs. I don’t know what the difference/functionality is, although I noticed the latest 5,1 bootrom does not contain APFS.ffs, only APFSJumpstart. (that I could find?) My modified 3,1 bootrom contains both, as well as the latest nvme.ffs
I currently do not have a MP3,1. BUT I have ordered one on eBay
I spent the past 2-3 hours trying to figure out where APFS.ffs is in the 5,1 144.0.0.0.0, I was also trying to find the latest bootrom with APFS included but had no luck finding them. If is possible APFS has been renamed or the name isn't showing in UEFITool, It's also possible it has been bundled in some other module\no longer needed. As you said, APFSJumpstart is included in the 5,1 144.0.0.0.0, appears to be 17 bytes smaller than the version included in the rom patcher but that could be down to compression.
if I had the funds I would have gone for a 4,1 or 5,1. I just need something to do studying on, I have a few spare nvme drives, a SSUBX SSD, and a pair of SLANZ CPUs and DDR2 FB DIMMs from a HP workstation as well as an RX480 already on hand. I currently have an early 2015 13" MBP running Catalina. Would be easier to have a desktop permanently setup instead of having to plug everything into the MBP all the time.
I have a theory, APFS is not required, only APFSJumpstart is required (along with NVME obviously).
I could be completely wrong however. Reading a few Hackintosh things as well as the Apple Developer notes on APFS makes it seem that APFSJumpstart may load the APFS driver directly from the boot/physical sector of the drive. the developer notes state under the “EFI Jumpstart section” "A partition formatted using the Apple File System contains an embedded EFI driver thatʼs used to boot a machine from that partition."

When I finally get my 3,1 and give it a good work out/time to make sure it has no issues I will try out just inserting APFSJumpstart and NVME from 144.0.0.0.0 and see what happens.
I do not recommend anyone mess with anything I suggest or mention, make modifications at your own risk.

EDIT: My 3,1 arrived dead on arrival, I don’t think I will bother trying to find another, I’ll be keeping an eye out for a 5,1
 
Last edited:
  • Like
Reactions: Grunchy
This is all very exciting, I do have a question but I think I'll explain what I did so far.

1. I got a MacPro 3,1 at Christmas 2019 for $140 including dual CPU and 16GB Ram (4 x 4GB) and a blank 2TB HDD (it's salvage). First Mac I've had in a long time, I barely know what I'm doing!
2. I fussed around with El Capitan a bit, and I even got High Sierra and Catalina running too using the excellent Dosdude1 patchers. I am settled on two 1TB partitions, first is Catalina and second is Windows 10. (By the way I prepared all this installation material using Oracle VirtualBox running Mojave off another Windows PC, for which I also barely understood what I was doing.)
3. Just today I used Dosdude1's Mojave patcher to get a latest copy of Mojave installer, then isolated the MP5,1 NVME.ffs module, then inserted that into the MP3,1 boot rom, crossed fingers & rebooted, SUCCESS! (Didn't brick)
4. Read a little further into this very thread about APFS, got ahold of Dosdude1's APFS injector (zip password is actually "apfs" not "APFS" btw). Updated the MP3,1 boot rom again, crossed fingers & rebooted another time, SUCCESS! (again, no brick)

Now interesting thing. Before when I would boot into Catalina the computer would do this verbose bootup like an old DOS computer, all sorts of programs initializing and reporting status all whizzing by, prior to the Macintosh Apple graphic appearing on the display. But now that is all bypassed and it boots straight into the Macintosh Apple graphic and seems to load up a couple seconds faster.

My first question - is this going to be OK? I mean it seems to be bypassing all the Dosdude1 loaders and I wonder if it's just way awesome now, or I might regret something later?

Second question - I haven't gotten a NVME drive yet, but I intend to eventually. In the meantime I ordered this cheapie $2.39 M.2 adapter, I have no idea if it's any good or will even work or not: https://www.ebay.ca/itm/153678617786
I guess I'll have to try out that "matatata/lnkspd" if/when I ever get an M.2 drive. Any advice?
 
You may have flipped from having some form of verbose booting to not having it any longer.
I think what you had seen before was a EFI shell script being run for the patched APFS loader, and now that APFS is native in your bootROM that no longer needs to run.

Pretty much any simple PCIe NVME adapter will work as long as it isn't going to SATA. if you want to be able to sustain decent speeds though it sounds like you need a heatsink on the NVME drives.
That card looks like it should do the job just fine.

What GPU are you using?

Sounds like you're doing well enough already.
 
Add a little heat sink to the Blade, just did the nvme insertion on my 3.1, too. Impressing boot times, even with 2 lanes / 700 MB/sec.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.