Hi Muhammet,
Sorry I had lot of work lately and didn't have the time to make a lot of documentation yet..
I'm in the process of making a tutorial on ifixit, maybe I'll have finished in next days but can't promise (I would really love to make this documentation available to all).
If you want all files and archives I made yet I can send you them via personal mail.
I think we have no right to publish any BootRom from Apple, but we can publish any procedure so that anyone can try the upgrade.
First of all, please,
make backups of your systems, Roms, etc.
I highly recommend, yet, to do backups with SPI programmer if possible.
Work with a uninterruptible power supply (UPS) if possible.
Any failure while working on the Bootrom can brick your computer...
Note that once your cMP flashed with a NVMe modded BootRom, you will be able to :
- run Sierra (like I did) or High Sierra, booted from a 4K compatible (and 4K formatted) NVMe drive. 4K capable NVMe SSD include any Kingston (A1000, KC1000), Toshiba (XG3-XG4-XG5), some WD / OCZ, some Intel datacenter SSDs.
- otherwise, run High Sierra from any 512b formated NVMe SSD, including any Samsung M.2 NVMe SSD.
In any case, macOS Sierra and High Sierra will both try to update the BootRom at each update, forever.
While we can't stop this process, fortunately the fact is that, while booted from any external or NVMe drive, BootRom update will fail... That will keep our cMP with its modded NVMe Bootrom !
But if you boot any time from an internal AHCI drive and proceed to macOS update, thought, there is a risk that a BootRom update may succed which can revert to a non-NVMe compatible BootRom.. You are warned !
That said, here are the process I made, and sorry for my bad english...
The process is doable either : 1) with hardware SPI programmer, which may be best at present (by safety, because with an SPI programmer it's easy to roll back any change if anything goes wrong), or : 2) with software, by patching the EFIUpdater files.
Pre-requirement : extraction of the NVMe DXE driver :
- download and install Pacifist.app :
https://www.charlessoft.com
- download and install UEFI Tool :
https://github.com/LongSoft/UEFITool/releases
- download "Install macOS High Sierra.app" :
https://itunes.apple.com/fr/app/macos-high-sierra/id1246284741
- locate your "Install macOS High Sierra.app", right-click on it and click on "show Package content"
- open "InstallESD.dmg" file in "Contents/SharedSupport"
- you get a mounted "InstallESD" volume. Right-click on the "Firmwareupdate" package and click on "Open with Pacifist"
- in Pacifist, click on the "Resources" tab and open "FirmwareUpdate.pkg"->"Scripts"->"Tools"->"EFIPayloads". Select any firmware payload from a Mac that has native NVMe support, I have used the rMBP 11.4 (MBP114_0182_B00.fd)
- click on "extract
as is" and save the MBP114_0182_B00.fd file [edit : corrected thanks to
LightBulbFun)
- open that same MBP114_0182_B00.fd file with "UEFI Tool"
- do a text search (not unicode) with "NVMe" : you will find the NVMe DXE driver at an address starting with "51116915-C34B"
- right-click on the DXE driver and click on "extract body", save the file (with an informative name like "NVMe_DXE_apple.ffs" for example )
Here it is, you have the NVMe DXE driver.
Next, solution n°1, with a SPI programmer :
process is very straightforward :
- unsolder the BootRom (chip U8700 on the logic board, a SST 25VF032B on my logic board)
- read the BootRom with an SPI programmer and save the 4M resulting file (for ex. : MP51.007F.xxxxxx_orig.rom
- open the result file with UEFI Tool
- search for a text (non unicode) field "DXE" : that will get you to the DXE driver image portion
- add the previously saved NVMe DXE driver after the last DXE driver (Insert after)
- save the file (ex: MP51.007F.xxxxx_NVMe.rom) and write it back to the Bootrom chip
- solder back the BootRom chip
- et voilà !
Otherwise, solution n°2, With software : (might only work yet on a 4.1 MacPro with BootRom MP51.007F)
the aim is to use the MP51.0085.00B_LOCKED firmware from High Sierra installer app, to patch it to add NVMe DXE driver, then to use the EfiUpdaterApp2.efi programm from MacPro Firmware Update 1.5 which will be patched with help of a script from Netkas MacPro2009-2010 Firmware tool to make accept our modded firmware (with a different CRC32 file)... Sorry if that sounds complicated, I've not managed to patch the EfiUpdaterApp2.efi from High Sierra yet...
Procedure might be changed if starting from a different BootRom version or board...
As always, make backups...
- If running on El Capitan or Sierra and have SIP enabled, start on recovery partition, disable SIP, and reboot.
- download
MacPro2009-2010FirmwareTool.zip from Netkas forums
- download MacPro Firmware Update 1.5 :
https://support.apple.com/kb/dl1321?locale=en_CA
- download Hexfriend (or any Hexadecimal editor)
- locate your "Install macOS High Sierra" app
- right-click on "Install macOS High Sierra.app", click on "show Package content"
- open "BaseSystem.dmg" file in "Contents/SharedSupport"
- you get an "OS X Base System" mounted volume. Open it, locate the "Install macOS High Sierra.app" at the root of this volume, right-click on it and click on "Show Package Content"
- open the folders "Contents/Resources/Firmware" : you will find in it the last MacPro 5.1 BootRom : MP51.0085.00B_LOCKED.fd
- Make a copy of this file to your desktop
- open this "MP51.0085.00B_LOCKED.fd" file with UEFI Tool
- search for a text (non unicode) field "DXE" : that will get you to the DXE driver image portion
- add the previously saved NVMe DXE driver after the last DXE driver (Insert after)
- save the file (ex: MP51.0085.00B_NVMe.fd)
- with the terminal, calculate the CRC32 of this modded fd file (type : CRC32 and drag your MP51.0085.00B_NVMe.fd file)
- If you used same XDE driver as mine (from rMBP11,4) you should get a value of f35a82b5 which translate to B5825AF3 in big endian
- locate your MacPro2009-2010FirmwareTool and right click on it -> Show Package Content
- open Contents/Resources/ folder, and locate EFIUpdater2010.patch and drag it on your hexadecimal editor
- search and replace for hexadecimal BDD7C676 (big end. crc32 of the 4.1 BootRom) with BE5899C0 (big end. CRC32 of our modded MP51.0085.00B_NVMe.fd file)
- save the obtained file as EFIUpdaterNVMe.patch
- locate your MacPro Firmware Update 1.5 dmg, and mount it on the Desktop
- open with Pacifist the MacProEFIUpdate.pkg
- extract the file "EfiUpdaterApp2.efi" from the resource tab and save it to the same folder as EFIUpdaterNVMe.patch. Note the name of the firmware : MP51_007F_03B_LOCKED.fd
- Patch your "EfiUpdaterApp2.efi" with the previously done "EFIUpdaterNVMe.patch" by typing in the terminal :
patch EfiUpdaterApp2.efi EFIUpdaterNVMe.patch
- If all done well, you now have your patched EfiUpdaterApp2.efi programm and your modded firmware MP51.0085.00B_NVMe.fd
- Place a copy of those both files in /System/Library/CoreServices/Firmware\ Updates/
- rename MP51.0085.00B_NVMe.fd as MP51_007F_03B_LOCKED.fd
- Bless the EfiUpdaterApp2.efi file :
/usr/sbin/bless -mount / -firmware /System/Library/CoreServices/Firmware\ Updates/EfiUpdaterApp2.efi -payload /System/Library/CoreServices/Firmware\ Updates/MP51_007F_03B_LOCKED.fd -options "-x efi-apple-payload0-data" --verbose
- if all done well, you should get "exit 0" as result
You can now shut down your MacPro, then press and hold the power button and let the firmware update be done.