MP 1,1-5,1 OpenCore on the Mac Pro

Status
The first post in this thread is a WikiPost, and can be edited by anyone with the appropriate permissions.

cdf

macrumors 6502
Original poster
Jul 27, 2012
437
318
This is a preliminary account of how to use the excellent OpenCore (OC) bootloader on a Mac Pro 5,1 to install, run, and update macOS Catalina, resulting in a clean, unpatched operating system no different than what you would find on a supported Mac.

This documentation is an ongoing process. The steps here are subject to change as more testing gets done.

1. Test Setup

Variations of this setup are likely possible:

Disk A. Newly APFS-formatted drive (GUID scheme)

This is where OC and a clean install of Catalina will go.

Disk B. macOS Mojave

Installation and configuration will be done from here.

C. Non-bootscreen graphics card

Of course, a flashed card can't hurt.

2. Materials

A. The application "Install macOS Catalina" (the full installer)

B. OpenCore

See the releases page of the project site. Download OpenCore-0.5.2-RELEASE.zip. The uncompressed folder will be referred to here as "OpenCore."

C. Support files

See the releases page of the project site. Download AppleSupport-2.1.2-RELEASE.zip. The uncompressed folder will be referred to here as "AppleSupport."

D. Configuration file

Provided in this post. Download config.zip. The uncompressed file is "config.plist".

Most important is the manual located at OpenCore/Docs/Configuration.pdf. By reading the manual you will be able to better understand the settings in the configuration file. For a sustainable use of OC, it is important that you read the manual.

The configuration described in this guide should be safe, but please be aware of the following:

WARNING!
Using OpenCore without extensive knowledge of the configuration options
may lead to a bricked Mac.

Because OC is in active development, the configuration file for the current version (0.5.2) will likely be incompatible with future versions.

3. Installing OC

a) Mount the EFI partition of Disk A: To find the identifier of the partition, enter the following in terminal:
Code:
diskutil list
The identifier will be something like "disk0s1;" the next step will assume that this is the case.
Code:
sudo diskutil mount /dev/disk0s1
You may need to authorize this. The partition should mount as /Volumes/EFI and appear as "EFI" in Finder.

b) Copy the OpenCore/EFI folder to the EFI partition. The resulting folder, /Volumes/EFI/EFI, should contain the folders OC and BOOT.

c) Copy AppleSupport/Drivers/FwRuntimeServices.efi to /Volumes/EFI/EFI/OC/Drivers.

d) Copy config.plist to /Volumes/EFI/EFI/OC.

4. Configuration

The file config.plist can be edited with any plist editor and even with TextEdit; the following steps will assume TextEdit.

a) Open config.plist with TextEdit.

b) Enable the VMM flag: Find the Cpuid1Mask entry, and carefully change AAAAAAAAAAAAAAAAAAAAAA== to AAAAAAAAAAAAAACAAAAAAA==. The value should now be the same as for Cpuid1Data.

c) Enable boot entry preservation: Find the RequestBootVarRouting entry, and change false to true.

d) Close the file. It should be saved automatically (select OK if informed about there being no permanent version storage).

The purpose of doing these steps explicitly is to be able to reverse them if desired.

5. Booting

a) Reboot into recovery mode by entering
Code:
sudo nvram "recovery-boot-mode=unused" && sudo reboot recovery
You may need to authorize this. Be patient. Mac Pro boot times can be long, especially when booting into recovery mode.

b) Carry out step 3a (sudo is not needed in recovery).

c) Set the partition for booting:
Code:
bless --mount /Volumes/EFI --setBoot
d) Shut down the Mac and do an SMC reset (unplug the power cord, wait 15 seconds, plug the power cord back in, wait 5 seconds, and then press the power button).

Remark: Being installed on Disk A, OC can have trouble seeing Disk B. Doing an SMC reset helps ensure that Disk B is seen when OC starts.

e) Power up the machine. OC should boot Disk B (currently the only macOS system).

Be patient. Mac Pro boot times can be long. If it seems that the machine is not booting up. Hold the power button to shut down the machine. Do an NVRAM reset on the next power up (immediately press and hold Option, Command, P, and R, and release after 20 seconds or after you hear the second startup chime). The Mac should boot without OC. Recheck all the steps above.

f) Booted into the system on Disk B, verify that it is indeed OC that has booted the system by entering this in terminal:
Code:
nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:opencore-version
You should see REL-052-2019-10-30.

You can also verify that the VMM flag is present by entering
Code:
sysctl machdep.cpu.features
Congratulations for making it this far! The hard part is done.

6. Installing Catalina

a) Booted into the system on Disk B, run Install macOS Catalina. Install to Disk A.

The machine will reboot and eventually you should see the installation progress bar.

b) Complete the installation.

From now on, OC should boot Catalina on Disk A by default. In any case, OC will respect the selection in Startup Disk; however, be mindful of the remark in step 5d. Also, by carrying out step 5a, OC should boot the recovery mode corresponding to the system currently booted into.

7. Updates

As long as the VMM flag is present, Software Update should just work.

8. Post Install

To make the system as native as possible while still using OC, the VMM flag can be disabled by reversing step 4b. This might be a good idea until the long term effects of having the VMM flag enabled on a non-virtualized system are clarified.

9. Platform Information

It is possible to use OC to customize platform information. You may want to preserve some of the original identifiers.

The MLB can be obtained by entering the following in terminal:
Code:
nvram 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:MLB | awk '{ print $NF }'
There is also the serial number of the processor tray:
Code:
ioreg -l -p IODeviceTree | awk '/"processor-memory-board-serial-number"/ {gsub(/\"/,""); print $NF}'
The ROM (in Base64, suitable for entry using TextEdit) can be obtained with
Code:
nvram 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ROM | awk '{split($NF,chars,""); for(n=0;n<256;n++){ord[sprintf("%c",n)]=n}; i=1; j=0; while(i<=length($NF)){if(substr($NF,i,1)=="%"){printf "%s",toupper(substr($NF,i+1,2)); i=i+2} else {printf "%x",toupper(ord[chars[i]])} j=j+2; i++} print("")}' | xxd -r -p | base64
The SSN can be obtained with
Code:
ioreg -l -p IODeviceTree | awk '/"IOPlatformSerialNumber"/ {gsub(/\"/,""); print $NF}'
and the system UUID with
Code:
ioreg -l -p IODeviceTree | awk '/"system-id"/ {print toupper(substr($NF,2,8)"-"substr($NF,10,4)"-"substr($NF,14,4)"-"substr($NF,18,4)"-"substr($NF,22,12))}'

10. Disabling OC

a) Carry out step 3a.

b) Open config.plist with TextEdit.

c) Reverse step 4c.

d) Reboot.

e) Select the desired entry in Startup Disk.

f) Reboot.

It is also possible to boot Catalina natively, after using recovery to add the "-no_compat_check" boot argument. In this case replace step c above by 5a. In recovery, enter
Code:
nvram boot-args="-no_compat_check"
and then carry out steps d and e in recovery. Catalina should boot without OC.

Failure to add the "-no_compat_check" boot argument may result in the machine suddenly shutting down when booting into Catalina. Although OC adds this argument, booting without OC does not guarantee that the argument will be there, unless it is added as described above.

11. Uninstalling OC

a) Disable OC (see 10).

b) Carry out step 3a.

c) Delete the /Volumes/EFI/EFI folder.

Acknowledgements

A big thank you to the talented developers of OpenCore for making all of this possible.
 

Attachments

Last edited:

Syncretic

macrumors member
Apr 22, 2019
40
118
Before I venture down this path, does your OpenCore setup enable boot screens on your "non-bootscreen graphics card"? I'm currently using rEFInd to achieve that, but I'm interested in OpenCore if it can provide the same functionality.
 

cdf

macrumors 6502
Original poster
Jul 27, 2012
437
318
Before I venture down this path, does your OpenCore setup enable boot screens on your "non-bootscreen graphics card"? I'm currently using rEFInd to achieve that, but I'm interested in OpenCore if it can provide the same functionality.
For a 3,1, I would say that the chances are good. OpenCore provides GOP support. However, you will have to edit the configuration file appropriately.
 

w1z

macrumors 6502
Aug 20, 2013
449
277
I can also confirm that OpenCore is working beautifully with Catalina installed on a dedicated NVMe drive, Mojave installed on a shared NVMe drive and with Windows 10 installed in EFI mode on the same shared drive as Mojave.

I did not need to have Mojave installed on a SATA drive.

Now to save those of you wanting to try OpenCore while using Windows 10 in EFI mode from going bananas, the trick to getting Windows EFI to play nicely with OpenCore's Bootx64.efi in /Volumes/EFI/EFI/Boot was to relocate the shared NVMe drive (which has Mojave / Windows 10 installed on it) from slot 3 to slot 2 on the 7101A thus placing it before the dedicated Catalina drive. Reason being, Apple's boot efi is scanning drives backwards / in reverse order with the 7101A ie. NVMe Slots 4 3 2 1 instead of 1 2 3 4 (not sure if this is the case too with other PCIe cards) so now Catalina shows up first in the boot screen.

Also, if you have enabled Apple's full mitigation for disabling hyper-threading, you will need to edit the config.plist file and append cwae=2 to the boot-args string:

Code:
<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
            <dict>
                <key>boot-args</key>
                <string>-no_compat_check cwae=2</string>
            </dict>
I'm loving this! Thanks for sharing @cdf as well as a massive thank you to the developers of OpenCore.

2019-10-28_00-42-34.png
 
Last edited:
  • Like
Reactions: octoviaa and cdf

h9826790

macrumors G5
Apr 3, 2014
13,048
5,906
Hong Kong
—- Warning!!! This config may brick your Mac. Do NOT use it unless you know what you are doing. —-

As a record. The following setting to simulate iMac Pro will cause black screen.


<key>PlatformInfo</key>
<dict>
<key>Automatic</key>
<true/>
<key>Generic</key>
<dict>
<key>MLB</key>
<string>C02706700J9JG36JA</string>
<key>ROM</key>
<data>ESIzAAAA</data>
<key>SpoofVendor</key>
<true/>
<key>SystemProductName</key>
<string>iMacPro1,1</string>
<key>SystemSerialNumber</key>
<string>C02T75Y5HX87</string>
<key>SystemUUID</key>
<string>EF81678C-50D7-4A13-9D1A-B423E7F7BE5B</string>
</dict>
<key>UpdateDataHub</key>
<true/>
<key>UpdateNVRAM</key>
<true/>
<key>UpdateSMBIOS</key>
<true/>
<key>UpdateSMBIOSMode</key>
<string>Create</string>
</dict>


Basically, UpdateSMBIOS = true will cause black screen.

I haven't have time to insert a Mac EFI UGA GPU or Remote Desktop to check what's happening yet. However, I highly suspect that the cMP actually booted to desktop with the above settings, because the Eject key works, Caps Lock key works, and Command + Control + power button also work.

If the cMP was jammed at loading screen, eject key shouldn't work.

And AFAIK, Command + Control + Power button only react properly inside macOS.

So, very high chance the cMP actually booted to desktop. However, using the iMac Pro SMBIOS cause the GPU fail to display properly.

Anyway, one more good news. PCIe info won't be mess up like using Clover. It's a good start.
 
Last edited:
  • Like
Reactions: Ludacrisvp and w1z

cdf

macrumors 6502
Original poster
Jul 27, 2012
437
318
Basically, UpdateSMBIOS = true will cause black screen.
Perhaps you could try with UpdateDataHub and UpdateNVRAM set to false. I have been successful with just UpdateSMBIOS set to true with a few model identifiers. I haven't tried iMacPro1,1, though.

I haven't have time to insert a Mac EFI UGA GPU or Remote Desktop to check what's happening yet.
Another option is setting the debug properties for creating a log file.
 

h9826790

macrumors G5
Apr 3, 2014
13,048
5,906
Hong Kong
My setting in post #7 is correct indeed. But it seems after applying the iMac Pro SMBIOS, only the 1st display port on my Radeon VII can display, the other ports are disabled. My cable was connected to the 3rd port, that's why I only got black screen.

Anyway, now I can see the screen, and my cMP ident itself as iMac Pro, and provide Catalina upgrade natively.

Screenshot 2019-10-28 at 8.35.11 AM.png
 

h9826790

macrumors G5
Apr 3, 2014
13,048
5,906
Hong Kong
Almost all sensor disappear after applying iMac Pro SMBIOS. But the 2 fans are controllable via iStat. I can spin them up manually.
Screenshot 2019-10-28 at 9.03.47 AM.png
 
  • Like
Reactions: octoviaa

Ludacrisvp

macrumors 6502
May 14, 2008
447
183
My setting in post #7 is correct indeed. But it seems after applying the iMac Pro SMBIOS, only the 1st display port on my Radeon VII can display, the other ports are disabled. My cable was connected to the 3rd port, that's why I only got black screen.

Anyway, now I can see the screen, and my cMP ident itself as iMac Pro, and provide Catalina upgrade natively.

View attachment 872912
Now the slightly offtopic question... did this allow you to enable HEVC encode / decode in Catalina (and Mojave hevc encode)?
 

w1z

macrumors 6502
Aug 20, 2013
449
277
My setting in post #7 is correct indeed. But it seems after applying the iMac Pro SMBIOS, only the 1st display port on my Radeon VII can display, the other ports are disabled. My cable was connected to the 3rd port, that's why I only got black screen.

Anyway, now I can see the screen, and my cMP ident itself as iMac Pro, and provide Catalina upgrade natively.

View attachment 872912
I wonder if the model identifier MacPro7,1 would provide functioning sensors, ports and hevc.
 

startergo

macrumors 65816
Sep 20, 2018
1,319
492
The fan control is an essential part of the SMC. If we cannot make them work automatically OC is not safe on the cMP. This is the main reason I did not try unraid server.
 

CMMChris

macrumors member
Oct 28, 2019
43
36
@h9826790 Whatevergreen and agdpmod=pikera (boot arg) should fix your black screen issue and enable all outputs of your graphics card. Alternatively you could also remove the iMacPro1,1 Board ID from the info.plist of AppleGraphicsDevicePolicy.

Regarding the HEVC issues you guys report on the real Mac Pros, try to do an ACPI rename of your GPU from whatever it is called by Apple to GFX0. If this is the root of the problem it should enable HEVC acceleration. On a Hackintosh GFX0 is mandatory for this.
 
Last edited:

cdf

macrumors 6502
Original poster
Jul 27, 2012
437
318
The fan control is an essential part of the SMC. If we cannot make them work automatically OC is not safe on the cMP. This is the main reason I did not try unraid server.
Fan control appears to function fine for my setup. The sensor issue seems to come from spoofing the iMac Pro.
 

cdf

macrumors 6502
Original poster
Jul 27, 2012
437
318
FaceTime and iMessage seem to work when using OC. However, I've been very careful not to play around with platform information when logged in to these services.
 
  • Like
Reactions: octoviaa

h9826790

macrumors G5
Apr 3, 2014
13,048
5,906
Hong Kong
@h9826790 Whatevergreen and agdpmod=pikera (boot arg) should fix your black screen issue and enable all outputs of your graphics card. Alternatively you could also remove the iMacPro1,1 Board ID from the info.plist of AppleGraphicsDevicePolicy.

Regarding the HEVC issues you guys report on the real Mac Pros, try to do an ACPI rename of your GPU from whatever it is called by Apple to GFX0. If this is the root of the problem it should enable HEVC acceleration. On a Hackintosh GFX0 is mandatory for this.
Thanks for pointing me into the right direction. I will study the OpenCore manual and try to config it accordingly.

Hopefully I can fix the following things

1) HEVC hardware encode (both in Mojave and Catalina), if possible, I want to make it available for a 5,1 ident cMP (may be the ACPI rename trick also work for 5,1 ident). This approach may able to avoid unnecessary SMC issue (if I ident the cMP as iMac Pro or 7,1, most sensors disappear).

Apparently, the Radeon VII isn't ident at GFX0 at this moment.
Screenshot 2019-10-29 at 2.16.40 PM.png


2) In the case of iMac Pro or 7,1 ident, fix the SMC. In my own experience so far. Using iMac Pro SMBIOS makes Handoff etc more reliable. Without 7,1 ident, when I login multiple profiles with multiple Apple ID on my cMP. Handoff often become unstable. But with 7,1 ident, it seems no matter how many profiles I logged in, Handoff still works. But the downside is, all sensors disappear.
Screenshot 2019-10-29 at 6.00.49 AM.png


I've already try few different VirtualSMC setup, but doesn't change anything yet.

Let's see if I can achieve anything in the next few days.
 

CMMChris

macrumors member
Oct 28, 2019
43
36
Your screenshot doesn't show what the ACPI device is called. You just see the bridges there. Please expand the "IOReg Name" column.
 

CMMChris

macrumors member
Oct 28, 2019
43
36
Then rename PXS1 to GFX0 and HEVC should start working. It's insane Apple don't take the Mac Pros into account when matching HEVC acceleration to GFX0....
 

Status
The first post in this thread is a WikiPost, and can be edited by anyone with the appropriate permissions.