Hello everybody!
I'm newly owner of MP 3,1 and I want to discuss upgrading of this nice but old machine with you.
I suggest everyone to take part in creating this guide. Now I will post my achievement in making it bootable from NVMe SSD.
Bootable NVMe
APFS Support
Enable PCI 2.0 on slot 2
Questions about Slot 2 PCI 2.0
Max RAM in MP3,1. 62, 56 or 64GB [Partially SOLVED]
Can I have more RAM? Yes, you can run 62GB without speed penalty!
Using PCI Slot 2 with fat GPU
Useful Links
I invite @W1SS , @MrAverigeUser , @jimj740 , @freqrider , @tsialex , @dosdude1 , @joevt and others to discuss and complete this guide.
PS: If I mention users the way above will they receive notification about this thread?
PS2: Does anyone know how to contact with the authors of this Google Doc created by @handheldgames ?
Or where was it originally posted?
I'm newly owner of MP 3,1 and I want to discuss upgrading of this nice but old machine with you.
I suggest everyone to take part in creating this guide. Now I will post my achievement in making it bootable from NVMe SSD.
Bootable NVMe
Note: it can be dangerous for your MP 3,1, you can brick it if something goes wrong while flashing ROM. It's hard to repair, because you should unsolder chip, flash it with external usb programmer and then solder it back.
Useful links:
all credit for this instructional document goes to @handheldgames
There are four approaches to get NVMe booting. Three of them are without BootROM modification.
A) EFI Shell with startup.nsh script
Without any Boot-Rom Modification loading NVME and APFS EFI drivers from a non nvme drive
a) I booted dosdude Mojave Patcher and installed macOs on the NVMe disk using APFS. When applying the dosdude patches I chose the APFS patch. The latter will install a efi bootloader (actually an EFI Shell) in the EFI Partition which will load the apfs driver via a the startup.nsh script.
b) Now I wasn't able to boot the NVMe disk, because the drive cannot be seen by the firmware. I copied the EFI Folder of the EFI Partition to the EFI Partition of a thumb drive in order to do the initial boot from there loading then nvme and apfs driver so the NVMe disk can be read and macOs can be booted.
c) So I extracted a NVMe EFI driver from Mojave's 10.14.5 MP5,1.fd firmware file using UEFITool by "extract body" on the NVMe DXE Driver's "PE32 image section" -> Saved to nvme.efi next to apfs.efi . I modified the startup.nsh so that it also loads the nvme.efi file similarly to how it loads the apfs.efi. You can also start experimenting by entering the EFI Shell (hit ESC very fast)... and use the various commands like 'load' 'drivers' 'connect -r' 'map -u' . And that all worked pretty nice for me! So I knew the nvme driver of MP51 cannot be bad for my machine.
B) EFI Boot loader (rEFInd, RefindPlus or OpenCore)
You need install rEFInd or RefindPlus or OpenCore and set to load an NVMe driver such as NVMExpressDxe.
NB: RefindPlus can supply both NVMe and APFS functionality by default when detected as required without BootROM modification or driver installation.
C) Driver#### and DriverOrder NVRAM variables
Mac Pro 3,1 NVMe support + Upgrade Guide + Questions
Adding NVMe and apfs support to MacPro3,1 without flashing ROM or using a EFI boot loader or Shell: You can place the EFI drivers on a EFI or FAT or HFS+ partition, then set Driver#### and DriverOrder NVRAM variables using the commands discussed here. In my example below, I chose a folder...
forums.macrumors.com
D) BootROM modification
I had a success with these steps which are almost the same as in Google Doc but you CAN use guide in Google Doc to flash your ROM. It's okey. ROMTool is GUI for flashrom tool I used in my guide. So these two guides are almost the same. Here is just another approach to do the same. My guide has steps to get nvme.ffs file with nvme driver. You need it because there is no link for this file in Google Doc now.
If you have old macOs which doesn't support ROMTool and have reasons not to update you Mac with newer OS but need NVMe drive you can use my steps.
Many thanks to @dosdude1 for this nice and easy to use GUI tool.
You should use guide in Google Doc and steps 1—3 in my guide , it would be much simpler and faster.
Many thanks to @handheldgames for the guide in Google Doc. I hope you will add steps 1—3 from my guide to your's one.
1. Download any version of MacOs Mojave with native NVMe boot support (look here). It can be 10.14.1 or any newer including latest for today (08/23/2019).
2. Right click on Install macOS Mojave, click Show Package Contents, go to Contents/Resources/Firmware,
copy MP51.fd to any folder.
3. Download binary UEFITool from here. Open MP5,1.fd in UEFITool, search text for NVMe, right click on NVMe branch, choose Extract as is..., save it with proper name like nvme.ffs
4. I had OsX 10.5 and no good internet connection on my MP3,1 (I can't download El Capitan for example, programs from Google Doc require higher version of MacOs than 10.5 I had on that moment) so I followed this steps. You can follow steps in Google Doc, but there were some reports here that ROMTool can be buggy. I created bootable USB stick with Grml Live Linux (you need 'full'). It's important to start MP3,1 in flash write mode. According to Google Doc power off MP3,1, wait at least 15 sec, press and hold power button, when LED above button starts to flash release power button. Then I booted my MP3,1 from USB stick (hold Option key when start and choose EFI).
In CLI write flashrom -p internal -r myrom.bin, after I mounted another USB stick, copied myrom.bin to it).
So now you have your ROM downloaded.
On another Mac I downloaded DXEInject, put myrom.bin and nvme.ffs in folder containing DXEInject and ran it in Terminal to create new patched ROM with NVMe support:
./DXEInject ./myrom.bin ./newromnvme.bin ./nvme.ffs
Now you have patched ROM and can flash it.
5. I copied newromvme.bin to MP3,1 via USB stick and ran flashrom:
flashrom -p internal -w newromnvme.bin
NOTE: You should be still in EFI FLASH MODE.
6.a. Then reboot and your MP3,1 is now NVMe bootable.
6.b. If something went wrong during startup, reset SMC and PRAM according to Google Doc. May be you bricked your MP3,1.
APFS Support
APFS support can be added using any of the above methods used to add Bootable NVMe.
You can inject APFS and APFSJumpstart.ffs extracted from same, 5,1fd rom to your 3,1 rom and reflash it. Or you can use Dosdude1's APFS Flasher tool to do basically the same thing. http://dosdude1.com/apps/APFS ROM Patcher.zip (Only on Intel Sata chipset macs!) Password for zip is APFS.
Thanks to @freqrider
Alternatively, you can use either one or both of RefindPlus and OpenCore to provide APFS Support without flashing your ROM.
- RefindPlus: Provides APFS capability by default when APFS support is not available
- OpenCore: Activate the EnableJumpstart config key
If you use MyBootMgr to set RefindPlus andOpenCore up, it will configure both tools automatically.
Enable PCI 2.0 on slot 2
A) pciutils and bash script
1. Download pcietools from Google Doc
2. Follow this guide using notes in 2.a. to know your number for PCI slot: Post from joevt
2.a. Notes: after running sudo lspci -nnvt, find your NVMe drive in output and see pic in Spoiler how to edit script
In MP3,1 you should use 00:5 for Slot 1 and 00:1 for Slot 2
My result is 1050MB/s instead of 800MB/s.
When I did the same in Debian (with 64GB RAM) I get 1280MB/s with hdparm -Tt /path-to-disk
With dd command after dropping buffer cache I got 1.4 GB/s. Is it possible to achieve this result or 1500MB/s on MacOS?
B) EFI Shell with startup.nsh script
You can use the EFI Shell
mm
commands in the startup.nsh script to try to force PCIe 2.0 speed.
C) EFI driver
Create an EFI driver to do the work. Then you can have it loaded using any of the above methods used to add Bootable NVMe. FixPCIeLinkRate.efi is one such driver.
Questions about Slot 2 PCI 2.0
I use this PCIe to NVMe adapter.
According to Google Doc created by @handheldgames and other reports in Macrumors forum my SSD with simple x4 PCIe M.2 adapter should achieve 1500MB/s but it can't.
So I have 3 questions:
1. [SOLVED] How can I achieve speed more than 1050MB/s (1500MB/s) on MacOs?
I used Disk Sensei to check speed. It showed 1050MB/s. BlackMagick, AJA and dd CLI command shows 1500MB/s read and write.
2. [SOLVED] Did I have success with changing Slot 2 settings or something gone wrong and thats why NVMe SSD didn't achieve 1500MB/s reading speed?
If you are getting over 750MB/s on slot 2, you have successfully switched your pci speeds with pciutil. Your slower speeds are probably due to your HD or adapter. I'm getting 1500 MB/s r/w with an 970 EVO and the Lycom DT-120 in my 3,1.
3. [PARTIALLY SOLVED] Is it possible to make Slot 2 permanently PCI 2.0?
Anything is possible. I don't think anyone's done the work to make it happen. It's been discussed elsewhere. There are many ways.
1) EFI driver
2) Login Item
3) launch daemon
4) kext
5) etc.
Max RAM in MP3,1. 62, 56 or 64GB [Partially SOLVED]
As it was earlier reported, you can use only 56GB in OsX 10.9+ without speed issues of your hard drives. In my case speed penalty was much more higher than 50% and macOS completely booted after 25 or more minutes
I have nice solution for those who run multiple OS (not only MacOS, but also Windows and/or Linux/Unix) to use 64GB without speed penalty in MacOS.
Updated: you can run MacOs with 62GB RAM available without speed penalty (with 64GB installed)
You need simply limit max memory available for MacOS using this command:
sudo nvram boot-args="maxmem=57344"
So you will have 56GB in MacOS and 64FB in other OS.
Step-by-step guide:
1) Put RAM sticks in you MP3,1 to get total RAM lower or equal to 56GB.
2) Run sudo nvram boot-args="maxmem=57344" in Terminal
3) Shutdown you MP3,1 and put 64GB RAM.
4) Now you can use MacOS with 56GB RAM available without any speed penalties and other OS with 64GB RAM in total.
Note: 56GB is 57344MB
Can I have more RAM? Yes, you can run 62GB without speed penalty!
Simply change 57344 to 63488. 62GB is 63488MB
sudo nvram boot-args="maxmem=63488" in Terminal
Now you will have 62GB in MacOS and 64GB in other OS.
Note: I had no speed penalties running 56GB and 62GB with 64GB installed.
But my PCI to NVMe adapter is simple x4.
Probably you will have speed penalty if you are using x16 PCI to NVMe adapter. I have no such adapter so I can't test this approach with such adapter.
Please check and send your results.
See pics in Spoiler with my results.
Leopard (10.5)
Leopard has a 32-bit only kernel. A kernel panic occurs with
maxmem=63488
but maxmem=32768
works.Note that boot-args can be placed in /Library/Preferences/SystemConfiguration/com.apple.Boot.plist instead of NVRAM for flags that you don't want to apply to other OSs.
Snow Leopard (10.6)
Snow Leopard defaults to 32-bit kernel. A kernel panic occurs with
maxmem=63488
. You can add arch=x86_64
to boot-args to force using the 64-bit kernel.
Windows
You can set an option in the BCD using EasyBCD or BCDEdit. In EasyBCD, it's called "Deduct xx MB from physical memory". Just deduct 2048MB. Use CPU-Z to run benchmarks for before and after changing the setting.
Advanced Settings
EasyBCD offers a number of more-advanced features for power users. Be careful when modifying these options, as they may result in degraded PC performance or a non-booting PC. Make sure to always ba…
neosmart.net
Linux
Debian (and 99.99% all other Linux) can work with 64GB in MP 3,1 without any speed penalty. (800MB/s in my case as in High Sierra without changing pci settings.)
I could run High Sierra with vm_compressor=1 on 56GB without kernel panic, but with 64GB SSD speed is very slow again.
Probably it's possible to port RAM management system from OsX 10.8 to use 64GB without issues.
Curious notice: when I had 64GB installed and one stick in Riser A in Slot 4 was damaged (red light on riser), total RAM was recognised as 56GB in High Sierra and Debian. And About this Mac in memory tab showed that there were 2x 4GB (!) sticks in Riser A Slots 3, 4. Also there was no speed penalty.
Using PCI Slot 2 with fat GPU
I don't have fat GPU in my MP3,1, but some guys told me that they can't access Slot 2 because of fat GPU.
I think in this case you can use flexible PCI riser like this (see pic in Spoiler)
OtherIf you have much RAM you can disable SWAP using this command:
sudo nvram boot-args="vm_compressor=2"
Default value is 4.
If something gone wrong set default value or reset PRAM booting with holding Option+Cmd+P+R.
Useful Links
I invite @W1SS , @MrAverigeUser , @jimj740 , @freqrider , @tsialex , @dosdude1 , @joevt and others to discuss and complete this guide.
PS: If I mention users the way above will they receive notification about this thread?
PS2: Does anyone know how to contact with the authors of this Google Doc created by @handheldgames ?
Or where was it originally posted?
Last edited: