Become a MacRumors Supporter for $25/year with no ads, private forums, and more!
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.

cdf

macrumors 68000
Original poster
Jul 27, 2012
1,574
1,536
Updated: October 4, 2021

OpenCore on Legacy Apple Hardware

This guide explains how to use the excellent OpenCore bootloader on a Mac Pro 5,1 to install, run and update macOS Catalina and macOS Big Sur, resulting in a clean, unpatched operating system no different than on a supported Mac.

🟢 With SurPlus, macOS Big Sur 11.3 and higher is now viable on the Mac Pro 5,1!​

Why OpenCore?

There are several advantages to using OpenCore on a classic Mac Pro:

Boot picker screen (even with a standard graphics card)
Boot Picker.png

Software Update (just like on a supported Mac)
Software Update.png

Hardware acceleration (and DRM for Netflix on Safari)
Hardware Acceleration.png

Another approach to installing and running macOS on unsupported Macs consist of applying a series of rigid patches. Although effective, this strategy may be considered undesirable, because it alters system files—a potential problem for updates. With OpenCore, macOS remains entirely untouched. Necessary modifications take place cleanly in memory.

Why this Guide?

The purpose of this guide is to provide step-by-step hands-on instructions to using OpenCore on the Mac Pro 5,1. Included with the instructions is a basic sample configuration to get you started. Guidelines for creating a more advanced configuration customized to your machine are also detailed.

👍 The included sample configuration is about as minimal of a configuration as possible for using OpenCore on a Mac.​

Additional Resources

Since this guide appeared, other solutions to OpenCore on Apple hardware have been proposed. Here on MacRumors, you have a few options:
  1. This guide (step-by-step hands-on instructions)
  2. Martin's Package (very popular easy-to-install one-package-fits-all solution provided by @h9826790 with emphasis on hardware acceleration)
  3. MyBootMgr (great multi-boot solution provided by @Dayo with a rich suite of helper apps for setting up and maintaining RefindPlus and OpenCore)
  4. OC Plistlib Generator (diligent programmatic solution provided by @TECK for automating OpenCore updates)
Another great solution is the OpenCore Legacy Patcher (OCLP) provided by the Dortania team. This solution, which applies not only to the Mac Pro 5,1, probes your hardware to dynamically configure OpenCore for your Mac.

Requirements

This guide is aimed at systems with the following specifications:

Mac Pro modelEarly 2009 with MacPro5,1 firmware,* Mid 2010 or Mid 2012
Processor architectureWestmere (E56xx, L56xx, X56xx) / Gulftown (W36xx)
Boot ROM version144.0.0.0.0
GraphicsEFI (flashed) or a standard UEFI card (PC GPU) supported in Catalina or Big Sur
WirelessChipset supported in Catalina or Big Sur (BCM943224, BCM9435x, BCM9436x)

Need to upgrade your boot ROM? See the upgrade instructions.

Regarding Graphics: Several GPUs supported in macOS High Sierra are not supported in macOS Mojave or later. This includes all non-Kepler generation NVIDIA GPUs as well as AMD GPUs earlier than HD 7950. Several HD 78xx GPUs (Pitcairn) were rebadged as R9 2xx and are not supported in macOS Mojave or later. All classic Mac Pro factory GPUs had support removed with Mojave.

Acknowledgements

A big thank you to @vit9696 and the other talented developers of Acidanthera for making all of this possible. Special gratitude goes to @h9826790 for spearheading the hardware acceleration study, @startergo for the relentless testing that led to boot screen support, and @Syncretic for the extraordinary accomplishment of solving the race condition in Big Sur! And thanks to all those that have contributed to this thread!


PART I
Basic Installation
Disk Setup

As a starting point, your Mac should have two disks as follows:

Disk ADisk B
Any GUID-formatted disk​
Natively bootable version of macOS​
OpenCore will be installed to the EFI partition​
The initial configuration will take place from here​

It is advised that these be the only two disks in your Mac during the installation.

⚠️ Having a natively bootable installation such as Mojave is of utmost importance when using OpenCore on a Mac. It is your lifeline in case of a misconfiguration. Physically removing Disk A will allow your Mac to boot natively without OpenCore.​

Install OpenCore

You will need:

Download the release version. The uncompressed folder will be referred to as OpenCore.​
The name of the uncompressed file is config.plist.​

The sample configuration is incompatible with any OpenCore version other than the one linked above. Before deviating from this configuration, make sure that you fully understand all the options by going over the manual (see OpenCore/Docs/Configuration.pdf). Seriously, read the manual.

Mount the EFI volume of Disk A
  • In macOS, open Terminal
  • Look for the EFI volume of Disk A by entering diskutil list
The identifier should be something like diskAs1. Replace the actual identifier in the next step.​
  • Mount the EFI volume by entering sudo diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder.

Copy the files to the EFI volume of Disk A
  • Copy the folder OpenCore/X64/EFI to the volume /Volumes/EFI
The EFI volume of Disk A may already contain a folder called EFI (which may contain a folder called APPLE). In this case, you can choose to merge the contents of the EFI folder if prompted by macOS.

The resulting folder /Volumes/EFI/EFI should include two new folders BOOT and OC.
  • Copy config.plist to /Volumes/EFI/EFI/OC
You are now ready for your first boot with OpenCore.

First Boot

Reboot into recovery

  • Reboot into recovery by entering the following command in Terminal: 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.

Select the EFI volume of Disk A for booting
  • In recovery, open Terminal (see Utilities in the menu bar)
  • Look for the EFI volume of Disk A by entering diskutil list
The identifier should be something like diskAs1. Replace the actual identifier in the next step.
  • Mount the EFI volume by entering diskutil mount /dev/diskAs1
You should see "Volume EFI on /dev/diskAs1 mounted".
  • Bless the volume for booting by entering bless --mount /Volumes/EFI --setBoot
This command may fail on some systems. If it does, try bless --mount /Volumes/EFI --setBoot --file /Volumes/EFI/EFI/BOOT/BOOTx64.efi --verbose instead.

OpenCore is now ready for booting.
  • Reboot your Mac by entering reboot in Terminal
If your Mac refuses to boot, restart your Mac natively and recheck all the steps. To restart your Mac natively:
  • Hold the power button until your Mac turns off
  • Remove Disk A
  • Turn on your Mac and reset the NVRAM (immediately press and hold Option, Command, P and R, and release after 20 seconds or after you hear the second startup chime)
Afterwards, provided that Disk B is present, macOS should start up.
  • In macOS, select your macOS volume in System Preferences > Startup Disk
  • Shutdown your Mac
  • Insert Disk A
  • Boot into macOS and recheck all the steps

When your Mac reboots, you may see a simple text-based boot picker. You can use this boot picker to select your macOS volume.

Confirm the installation
  • In macOS, open Terminal
  • Confirm that OpenCore has booted the system by entering: nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:opencore-version
You should see REL-074-2021-10-04.
🎉 Congratulations for making it this far!​

Post-Install

Open the configuration file for editing

  • Mount the EFI volume of Disk A
You can mount the EFI volume of Disk A by entering u=$(nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:boot-path | sed 's/.*GPT,\([^,]*\),.*/\1/'); if [ "$u" != "" ]; then sudo diskutil mount $u && open /Volumes/EFI/ ; fi in Terminal. The volume should mount and open as /Volumes/EFI in Finder.

Alternatively:
  • Look for the EFI volume of Disk A by entering diskutil list in Terminal
The identifier should be something like diskAs1. Replace the actual identifier in the next step.
  • Mount the EFI volume by entering diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder.
  • Navigate to /Volumes/EFI/EFI/OC and copy config.plist to your home folder
  • Open config.plist in your home folder with TextEdit
Familiarize yourself with the VMM flag

Adding the VMM flag to the CPUID helps enable installations and Software Update. Because the VMM flag causes a performance loss (about 5%) and disables power management, it is a good idea to only have the flag ON when installing or checking for updates.
For Catalina: the VMM flag must be ON to install or update. Turn the VMM flag OFF for improved performance.
For Big Sur: if hybridization is used (see below), the VMM flag is not necessary for installing or updating and can be left OFF. If hybridization is not used the VMM flag should be ON to install or update.
  • Find Cpuid1Data and Cpuid1Mask and make the appropriate change to the data for both keys
ONOFF
AAAAAAAAAAAAAACAAAAAAA==
AAAAAAAAAAAAAAAAAAAAAA==


Disable the special GOP renderer if not needed

For maximum compatibility, the sample configuration enables a special GOP renderer to display the boot picker. This option, which is needed for the Radeon VII and some versions of the 5700 XT but not for the RX 580, can cause undesirable effects (such as slow scrolling) and therefore should be disabled if not needed.
  • Find DirectGopRendering and change true to false
Customize the boot screen
  • If you have a HiDPI display (retina), find UIScale and change AQ== to Ag==
  • To get a gray boot screen (like legacy Macs), find ConsoleAttributes and change 15 to 112 and find DefaultBackgroundColor and change AAAAAA== to v7+/AA==
  • To hide the boot picker find ShowPicker and change true to false
If you've hidden the boot picker, accessing it is easy: Press and hold the Escape (Esc) key immediately after turning on or restarting your Mac. Release the key once the simple boot picker appears—or once the mouse cursor appears if you've enabled the graphical boot picker (see Part II).
  • To show the macOS Recovery volumes (and other auxiliary entries) in the boot picker, find HideAuxiliary and change true to false
Showing hidden auxiliary entries in the boot picker is simply a matter of pressing Space bar.
Add SurPlus

For macOS Big Sur 11.3 and higher, you'll need SurPlus:
  • Locate the Kernel key
  • Further below it, replace
XML:
<key>Patch</key>
<array/>
by​
XML:
<key>Patch</key>
<array>

<dict>
<key>Arch</key>
<string>x86_64</string>
<key>Base</key>
<string>_early_random</string>
<key>Comment</key>
<string>SurPlus - PART 1 of 2 - Patch read_erandom (inlined in _early_random)</string>
<key>Count</key>
<integer>1</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
AHQjSIs=
</data>
<key>Identifier</key>
<string>kernel</string>
<key>Limit</key>
<integer>800</integer>
<key>Mask</key>
<data>
</data>
<key>MaxKernel</key>
<string>21.1.0</string>
<key>MinKernel</key>
<string>20.4.0</string>
<key>Replace</key>
<data>
AOsjSIs=
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
</dict>

<dict>
<key>Arch</key>
<string>x86_64</string>
<key>Base</key>
<string>_register_and_init_prng</string>
<key>Comment</key>
<string>SurPlus - PART 2 of 2 - Patch register_and_init_prng</string>
<key>Count</key>
<integer>1</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
ukgBAAAx9g==
</data>
<key>Identifier</key>
<string>kernel</string>
<key>Limit</key>
<integer>256</integer>
<key>Mask</key>
<data>
</data>
<key>MaxKernel</key>
<string>21.1.0</string>
<key>MinKernel</key>
<string>20.4.0</string>
<key>Replace</key>
<data>
ukgBAADrBQ==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
</dict>

</array>

Verify and load the configuration
  • Close config.plist
  • In Terminal, enter: plutil -convert xml1 config.plist && plutil config.plist
You should see "config.plist: OK". If not, recheck your edits.
  • Copy config.plist back to /Volumes/EFI/EFI/OC
The new configuration will take effect after the next reboot.


PART II
Advanced Configuration

Enabling the Graphical Boot Picker

You will need:

Use the code button
Button.png
to download the ZIP file. The uncompressed folder will be referred to as OcBinaryData.​

OpenCanopy is the official OpenCore graphical user interface.​

Copy the files to the resources folder
  • Mount the EFI volume of Disk A
You can mount the EFI volume of Disk A by entering u=$(nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:boot-path | sed 's/.*GPT,\([^,]*\),.*/\1/'); if [ "$u" != "" ]; then sudo diskutil mount $u && open /Volumes/EFI/ ; fi in Terminal. The volume should mount and open as /Volumes/EFI in Finder.

Alternatively:
  • Look for the EFI volume of Disk A by entering diskutil list in Terminal
The identifier should be something like diskAs1. Replace the actual identifier in the next step.
  • Mount the EFI volume by entering diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder.
  • Copy OcBinaryData/Resources to /Volumes/EFI/EFI/OC (overwriting the existing folder)
Enable OpenCanopy
  • Open the configuration file for editing
To open the configuration file for editing:
  • Navigate to /Volumes/EFI/EFI/OC and copy config.plist to your home folder
  • Open config.plist in your home folder with TextEdit
  • Find PickerMode and change Builtin to External
  • Locate the Drivers key and add
XML:
<dict>
<key>Arguments</key>
<string></string>
<key>Comment</key>
<string></string>
<key>Enabled</key>
<true/>
<key>Path</key>
<string>OpenCanopy.efi</string>
</dict>
to the array​
If this is your first time adding a driver, the result should look like this:
XML:
<key>Drivers</key>
<array>

<dict>
<key>Arguments</key>
<string></string>
<key>Comment</key>
<string></string>
<key>Enabled</key>
<true/>
<key>Path</key>
<string>OpenRuntime.efi</string>
</dict>

<dict>
<key>Arguments</key>
<string></string>
<key>Comment</key>
<string></string>
<key>Enabled</key>
<true/>
<key>Path</key>
<string>OpenCanopy.efi</string>
</dict>

</array>
  • Verify and load the configuration
To verify and load the configuration:
  • Close config.plist
  • In Terminal, enter: plutil -convert xml1 config.plist && plutil config.plist
You should see "config.plist: OK". If not, recheck your edits.
  • Copy config.plist back to /Volumes/EFI/EFI/OC
  • Reboot
Enabling Hardware Acceleration

You will need:

Lilu
Download the latest release version. The uncompressed folder contains the file Lilu.kext.​
Download the latest release version. The uncompressed folder contains the file WhateverGreen.kext.​
Only if you have a dual-processor machine. The uncompressed file is called AppleMCEReporterDisabler.kext.​
The path of your graphics card
In canonical form, the path is something like PciRoot(0x0)/Pci(0x0,0x0)/Pci(0x0,0x0).​

To obtain the path of your graphics card:
  • Open Terminal
  • Enter: curl -L https://github.com/acidanthera/gfxutil/releases/download/1.80b/gfxutil-1.80b-RELEASE.zip | tar -xf - && rm -r gfxutil.dSYM && chmod +x gfxutil && ./gfxutil -f display
An executable, gfxutil, will appear in your home folder and you should see the path in terminal (after taking note of the path, you can delete gfxutil).

Copy the files to the kexts folder
  • Mount the EFI volume of Disk A
You can mount the EFI volume of Disk A by entering u=$(nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:boot-path | sed 's/.*GPT,\([^,]*\),.*/\1/'); if [ "$u" != "" ]; then sudo diskutil mount $u && open /Volumes/EFI/ ; fi in Terminal. The volume should mount and open as /Volumes/EFI in Finder.

Alternatively:
  • Look for the EFI volume of Disk A by entering diskutil list in Terminal
The identifier should be something like diskAs1. Replace the actual identifier in the next step.
  • Mount the EFI volume by entering diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder.
  • Copy Lilu.kext and WhateverGreen.kext and (if you have a dual-processor machine) AppleMCEReporterDisabler.kext to /Volumes/EFI/EFI/OC/Kexts
Tell OpenCore about the kexts
  • Open the configuration file for editing
To open the configuration file for editing:
  • Navigate to /Volumes/EFI/EFI/OC and copy config.plist to your home folder
  • Open config.plist in your home folder with TextEdit
  • Locate the Kernel key
  • Below it, replace
XML:
<key>Add</key>
<array/>
by​
XML:
<key>Add</key>
<array>

<dict>
<key>Arch</key>
<string>x86_64</string>
<key>BundlePath</key>
<string>Lilu.kext</string>
<key>Comment</key>
<string>Patch engine</string>
<key>Enabled</key>
<true/>
<key>ExecutablePath</key>
<string>Contents/MacOS/Lilu</string>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string></string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>

<dict>
<key>Arch</key>
<string>x86_64</string>
<key>BundlePath</key>
<string>WhateverGreen.kext</string>
<key>Comment</key>
<string>Video patches</string>
<key>Enabled</key>
<true/>
<key>ExecutablePath</key>
<string>Contents/MacOS/WhateverGreen</string>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string></string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>

</array>
Other kexts are configured similarly by adding a dictionary entry to the array.
  • If you have a dual-processor machine, add
XML:
<dict>
<key>Arch</key>
<string>x86_64</string>
<key>BundlePath</key>
<string>AppleMCEReporterDisabler.kext</string>
<key>Comment</key>
<string>Disable AppleMCEReporter</string>
<key>Enabled</key>
<true/>
<key>ExecutablePath</key>
<string></string>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string>19.0.0</string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>

Add the device properties
  • Find the DeviceProperties key
  • Below it, replace
XML:
<key>Add</key>
<dict/>
by​
XML:
<key>Add</key>
<dict>

<key>PciRoot(0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)</key>
<dict>
<key>agdpmod</key>
<data>cGlrZXJhAA==</data>
<key>rebuild-device-tree</key>
<data>AA==</data>
<key>shikigva</key>
<data>UA==</data>
<key>unfairgva</key>
<data>AQAAAA==</data>
</dict>

</dict>
Make sure to replace PciRoot(0x0)/Pci(0x0,0x0)/Pci(0x0,0x0) by the actual path that you noted earlier. Properties for other devices are configured similarly by adding a path key and corresponding dictionary entry to the dictionary.
Hybridization and related settings
iMacPro 1,1 hybridization, a strategy originally due to @h9826790, is integral to successful hardware acceleration.
  • Find the SMBIOS key
  • Change
XML:
<key>BIOSVersion</key>
<string></string>
to​
XML:
<key>BIOSVersion</key>
<string>9999.0.0.0.0</string>
and change​
XML:
<key>BoardProduct</key>
<string></string>
to​
XML:
<key>BoardProduct</key>
<string>Mac-7BA5B2D9E42DDD94</string>
  • Find UpdateSMBIOS and change false to true
Clean up the NVRAM
  • Find NVRAM and delete
XML:
<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
<dict>
<key>boot-args</key>
<string>-no_compat_check</string>
</dict>
and​
XML:
<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
<array>
<string>boot-args</string>
</array>
  • Verify and load the configuration
To verify and load the configuration:
  • Close config.plist
  • In Terminal, enter: plutil -convert xml1 config.plist && plutil config.plist
You should see "config.plist: OK". If not, recheck your edits.
  • Copy config.plist back to /Volumes/EFI/EFI/OC
  • Reboot
Enabling Night Shift

You will need:

Lilu
Unless you already have it. Download the latest release version. The uncompressed folder contains the file Lilu.kext.​
Download the latest release version. The uncompressed folder contains the file FeatureUnlock.kext.​

Unfortunately, not all displays support Night Shift.​

Copy the files to the kexts folder
  • Mount the EFI volume of Disk A
You can mount the EFI volume of Disk A by entering u=$(nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:boot-path | sed 's/.*GPT,\([^,]*\),.*/\1/'); if [ "$u" != "" ]; then sudo diskutil mount $u && open /Volumes/EFI/ ; fi in Terminal. The volume should mount and open as /Volumes/EFI in Finder.

Alternatively:
  • Look for the EFI volume of Disk A by entering diskutil list in Terminal
The identifier should be something like diskAs1. Replace the actual identifier in the next step.
  • Mount the EFI volume by entering diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder.
  • Copy Lilu.kext (unless you already have it) and FeatureUnlock.kext to /Volumes/EFI/EFI/OC/Kexts
Tell OpenCore about the kexts
  • Open the configuration file for editing
To open the configuration file for editing:
  • Navigate to /Volumes/EFI/EFI/OC and copy config.plist to your home folder
  • Open config.plist in your home folder with TextEdit
  • Locate the Kernel key
  • If this is your first time adding kexts, replace
XML:
<key>Add</key>
<array/>
by​
XML:
<key>Add</key>
<array>

<dict>
<key>Arch</key>
<string>x86_64</string>
<key>BundlePath</key>
<string>Lilu.kext</string>
<key>Comment</key>
<string>Patch engine</string>
<key>Enabled</key>
<true/>
<key>ExecutablePath</key>
<string>Contents/MacOS/Lilu</string>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string></string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>

<dict>
<key>Arch</key>
<string>x86_64</string>
<key>BundlePath</key>
<string>FeatureUnlock.kext</string>
<key>Comment</key>
<string>Enable Night Shift</string>
<key>Enabled</key>
<true/>
<key>ExecutablePath</key>
<string>Contents/MacOS/FeatureUnlock</string>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string></string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>

</array>
  • Otherwise, add the FeatureUnlock dictionary entry to the array
The Lilu dictionary entry must always be first in the array.
  • Verify and load the configuration
To verify and load the configuration:
  • Close config.plist
  • In Terminal, enter: plutil -convert xml1 config.plist && plutil config.plist
You should see "config.plist: OK". If not, recheck your edits.
  • Copy config.plist back to /Volumes/EFI/EFI/OC
  • Reboot
Making External Drives Internal

You will need:

The path of your disk
In canonical form, the path is something like PciRoot(0x0)/Pci(0x0,0x0)/Pci(0x0,0x0).​
To find the path of your disks, you can use System Information and gfxutil:
  • Open System Information and find the name of your disk in the PCI section
Look for "AHCI Controller" or "NVM Express Controller." You should see something like pci0000,0000.
  • Open Terminal
  • Enter: curl -L https://github.com/acidanthera/gfxutil/releases/download/1.80b/gfxutil-1.80b-RELEASE.zip | tar -xf - && rm -r gfxutil.dSYM && chmod +x gfxutil && ./gfxutil -f pci0000,0000
Make sure to replace pci0000,0000 with the actual name of your disk. An executable, gfxutil, will appear in your home folder and you should see the path in terminal (after taking note of the path, you can delete gfxutil).

Add the built-in property
  • Mount the EFI volume of Disk A
You can mount the EFI volume of Disk A by entering u=$(nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:boot-path | sed 's/.*GPT,\([^,]*\),.*/\1/'); if [ "$u" != "" ]; then sudo diskutil mount $u && open /Volumes/EFI/ ; fi in Terminal. The volume should mount and open as /Volumes/EFI in Finder.

Alternatively:
  • Look for the EFI volume of Disk A by entering diskutil list in Terminal
The identifier should be something like diskAs1. Replace the actual identifier in the next step.
  • Mount the EFI volume by entering diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder.
  • Open the configuration file for editing
To open the configuration file for editing:
  • Navigate to /Volumes/EFI/EFI/OC and copy config.plist to your home folder
  • Open config.plist in your home folder with TextEdit
  • Locate the DeviceProperties key
  • If this is your first time adding device properties, replace
XML:
<key>Add</key>
<dict/>
by​
XML:
<key>Add</key>
<dict>

<key>PciRoot(0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)</key>
<dict>
<key>built-in</key>
<data>AA==</data>
</dict>

</dict>
  • Otherwise, add the path key and dictionary entry to the dictionary
Make sure to replace PciRoot(0x0)/Pci(0x0,0x0)/Pci(0x0,0x0) by the actual path that you noted earlier.
  • Verify and load the configuration
To verify and load the configuration:
  • Close config.plist
  • In Terminal, enter: plutil -convert xml1 config.plist && plutil config.plist
You should see "config.plist: OK". If not, recheck your edits.
  • Copy config.plist back to /Volumes/EFI/EFI/OC
  • Reboot


PART III
Maintenance

Updating OpenCore

You will need:

Download the release version. The uncompressed folder will be referred to as OpenCore.​

OpenCore is currently being updated on the first Monday of every month.​

Copy the new files
  • Mount the EFI volume of Disk A
You can mount the EFI volume of Disk A by entering u=$(nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:boot-path | sed 's/.*GPT,\([^,]*\),.*/\1/'); if [ "$u" != "" ]; then sudo diskutil mount $u && open /Volumes/EFI/ ; fi in Terminal. The volume should mount and open as /Volumes/EFI in Finder.

Alternatively:
  • Look for the EFI volume of Disk A by entering diskutil list in Terminal
The identifier should be something like diskAs1. Replace the actual identifier in the next step.
  • Mount the EFI volume by entering diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder.
  • Replace /Volumes/EFI/EFI/BOOT/BOOTx64.efi by OpenCore/X64/EFI/BOOT/BOOTx64.efi
  • Replace /Volumes/EFI/EFI/OC/OpenCore.efi by OpenCore/X64/EFI/OC/OpenCore.efi
  • Overwrite the contents of /Volumes/EFI/EFI/OC/Drivers by those of OpenCore/X64/EFI/OC/Drivers
  • Overwrite the contents of /Volumes/EFI/EFI/OC/Tools by those of OpenCore/X64/EFI/OC/Tools
Update the configuration file

Each update of OpenCore brings changes to the configuration settings, so a configuration file compatible with one version of OpenCore will not be compatible with any other version.​
  • Open the configuration file for editing
To open the configuration file for editing:
  • Navigate to /Volumes/EFI/EFI/OC and copy config.plist to your home folder
  • Open config.plist in your home folder with TextEdit
  • With the help of the sample configuration file and the list of changes below, make any necessary changes to your configuration file
  • Verify, validate, and load the configuration
To verify, validate, and load the configuration:
  • Close config.plist
  • In Terminal, enter: plutil -convert xml1 config.plist && plutil config.plist
You should see "config.plist: OK". If not, recheck your edits.
  • Copy OpenCore/Utilities/ocvalidate/ocvalidate to your home folder
(After the validation, you can delete ocvalidate.)
  • In Terminal, enter: xattr -c ocvalidate && ./ocvalidate config.plist
You should see "Completed validating config.plist in x ms. No issues found.". If not, recheck your edits.
  • Copy config.plist back to /Volumes/EFI/EFI/OC
  • Reboot
List of changes from 0.7.3 to 0.7.4

Settings to add or change


Each UEFI driver entry now includes

XML:
<key>Comment</key>
<string></string>

Updating an Advanced Configuration

According to your configuration, you may need:

Use the code button
Button.png
to download the ZIP file. The uncompressed folder will be referred to as OcBinaryData.​
Lilu
Download the latest release version. The uncompressed folder contains the file Lilu.kext.​
Download the latest release version. The uncompressed folder contains the file WhateverGreen.kext.​
Download the latest release version. The uncompressed folder contains the file FeatureUnlock.kext.​

Copy the new files
  • Mount the EFI volume of Disk A
You can mount the EFI volume of Disk A by entering u=$(nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:boot-path | sed 's/.*GPT,\([^,]*\),.*/\1/'); if [ "$u" != "" ]; then sudo diskutil mount $u && open /Volumes/EFI/ ; fi in Terminal. The volume should mount and open as /Volumes/EFI in Finder.

Alternatively:
  • Look for the EFI volume of Disk A by entering diskutil list in Terminal
The identifier should be something like diskAs1. Replace the actual identifier in the next step.
  • Mount the EFI volume by entering diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder.
  • According to your configuration, copy the new files Lilu.kext, WhateverGreen.kext, FeatureUnlock.kext into /Volumes/EFI/EFI/OC/Kexts
Update the configuration file
  • Open the configuration file for editing
To open the configuration file for editing:
  • Navigate to /Volumes/EFI/EFI/OC and copy config.plist to your home folder
  • Open config.plist in your home folder with TextEdit
  • With the help of the configuration in Part II, make any necessary changes to your configuration file
  • Verify and load the configuration
To verify and load the configuration:
  • Close config.plist
  • In Terminal, enter: plutil -convert xml1 config.plist && plutil config.plist
You should see "config.plist: OK". If not, recheck your edits.
  • Copy config.plist back to /Volumes/EFI/EFI/OC
  • Reboot
Disabling OpenCore

Turn off boot selection routing

  • Mount the EFI volume of Disk A
You can mount the EFI volume of Disk A by entering u=$(nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:boot-path | sed 's/.*GPT,\([^,]*\),.*/\1/'); if [ "$u" != "" ]; then sudo diskutil mount $u && open /Volumes/EFI/ ; fi in Terminal. The volume should mount and open as /Volumes/EFI in Finder.

Alternatively:
  • Look for the EFI volume of Disk A by entering diskutil list in Terminal
The identifier should be something like diskAs1. Replace the actual identifier in the next step.
  • Mount the EFI volume by entering diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder.
  • Open the configuration file for editing
To open the configuration file for editing:
  • Navigate to /Volumes/EFI/EFI/OC and copy config.plist to your home folder
  • Open config.plist in your home folder with TextEdit
  • Find RequestBootVarRouting and change true to false
  • Verify and load the configuration
To verify and load the configuration:
  • Close config.plist
  • In Terminal, enter: plutil -convert xml1 config.plist && plutil config.plist
You should see "config.plist: OK". If not, recheck your edits.
  • Copy config.plist back to /Volumes/EFI/EFI/OC
  • Reboot
Boot natively
  • After rebooting, select a natively bootable version of macOS (such as Mojave) in System Preferences > Startup Disk and choose "Restart"
Your Mac will now boot into macOS without OpenCore.

Re-enabling OpenCore

Turn on boot selection routing

  • Mount the EFI volume of Disk A
You can mount the EFI volume of Disk A by entering u=$(nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:boot-path | sed 's/.*GPT,\([^,]*\),.*/\1/'); if [ "$u" != "" ]; then sudo diskutil mount $u && open /Volumes/EFI/ ; fi in Terminal. The volume should mount and open as /Volumes/EFI in Finder.

Alternatively:
  • Look for the EFI volume of Disk A by entering diskutil list in Terminal
The identifier should be something like diskAs1. Replace the actual identifier in the next step.
  • Mount the EFI volume by entering diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder.
  • Open the configuration file for editing
To open the configuration file for editing:
  • Navigate to /Volumes/EFI/EFI/OC and copy config.plist to your home folder
  • Open config.plist in your home folder with TextEdit
  • Find RequestBootVarRouting and change false to true
  • Verify and load the configuration
To verify and load the configuration:
  • Close config.plist
  • In Terminal, enter: plutil -convert xml1 config.plist && plutil config.plist
You should see "config.plist: OK". If not, recheck your edits.
  • Copy config.plist back to /Volumes/EFI/EFI/OC

Boot with OpenCore
  • Repeat the First Boot steps
Emergency Recovery Procedure

If your Mac refuses to boot, restart your Mac natively and recheck your configuration. To restart your Mac natively:
  • Hold the power button until your Mac turns off
  • Remove Disk A
  • Turn on your Mac and reset the NVRAM (immediately press and hold Option, Command, P and R, and release after 20 seconds or after you hear the second startup chime)
Afterwards, provided that Disk B is present, macOS should start up.
  • In macOS, select your macOS volume on Disk B in System Preferences > Startup Disk
  • Shutdown your Mac
  • Insert Disk A
  • Boot into macOS and recheck all the steps


PART IV
Installing and Updating macOS

Installing Catalina and Big Sur

You will need:

macOS Catalina or macOS Big Sur

To obtain Catalina or Big Sur, you can use the excellent installinstallmacos script, which assembles all the necessary files directly from Apple:
  • Open Terminal
  • Run the script by entering: curl -O -L https://raw.githubusercontent.com/munki/macadmin-scripts/main/installinstallmacos.py && sudo python installinstallmacos.py
You may need to authorize this. The file installinstallmacos.py and the folder contents will appear in your home folder (you can delete them once you have the installer).
  • Choose the latest version of macOS Catalina or macOS Big Sur
A sparse disk image will be created in your home folder. This image contains the installer.

Proceed with the installation
  • Check that the VMM flag is turned on (if you need to enable it, remember to reboot)
  • Run the macOS installer as usual
The machine will reboot perhaps several times. If you see the boot picker, let it timeout to the default selection. Eventually, you should see the installation progress bar.
  • Complete the installation
Updating Catalina and Big Sur

To update Catalina, simply turn on the VMM flag (remember to reboot). You can check for updates in System Preferences > Software Update. In Big Sur, the VMM flag is not necessary with hybridization.


APPENDIX
Installing Windows and Linux

Installing Windows 10

You will need:

Double-click the image file. The mounted volume will be referred to as CCCOMA_X64.​

A driver from OcBinaryData
Download the ZIP (click the code button
Button.png
and select download ZIP). The uncompressed folder will be referred to as OcBinaryData.​

⚠️ Make sure that ProtectSecureBoot is set to true in your configuration file. This setting, which is already included in the sample configuration, protects the Mac Pro from potential damage caused by UEFI Windows.​
Prepare two disks as follows:

Disk CUSB
Newly formatted exFat volume (GUID scheme)​
Newly formatted exFat volume (MBR scheme)​
This is where Windows will go​
This is where the installer will go​

The volume of the USB disk will be referred to as USB.

Add the exFat driver
  • Mount the EFI volume of Disk A
You can mount the EFI volume of Disk A by entering u=$(nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:boot-path | sed 's/.*GPT,\([^,]*\),.*/\1/'); if [ "$u" != "" ]; then sudo diskutil mount $u && open /Volumes/EFI/ ; fi in Terminal. The volume should mount and open as /Volumes/EFI in Finder.

Alternatively:
  • Look for the EFI volume of Disk A by entering diskutil list in Terminal
The identifier should be something like diskAs1. Replace the actual identifier in the next step.
  • Mount the EFI volume by entering diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder.
  • Copy OcBinaryData/Drivers/ExFatDxeLegacy.efi to EFI/OC/Drivers
Tell OpenCore about the driver
  • Open the configuration file for editing
To open the configuration file for editing:
  • Navigate to /Volumes/EFI/EFI/OC and copy config.plist to your home folder
  • Open config.plist in your home folder with TextEdit
  • Find the Drivers key and add
XML:
<dict>
<key>Arguments</key>
<string></string>
<key>Comment</key>
<string></string>
<key>Enabled</key>
<true/>
<key>Path</key>
<string>ExFatDxeLegacy.efi</string>
</dict>
to the array​
  • Check that the VMM flag is turned off
  • Verify and load the configuration
To verify and load the configuration:
  • Close config.plist
  • In Terminal, enter: plutil -convert xml1 config.plist && plutil config.plist
You should see "config.plist: OK". If not, recheck your edits.
  • Copy config.plist back to /Volumes/EFI/EFI/OC
  • Reboot
Prepare the installer
Use the actual volumes names in the following step:
  • Enter: rsync -r /Volumes/CCCOMA_X64/ /Volumes/USB
Let the task complete.

Proceed with the installation
  • Reboot and select Windows (External) from the boot picker
The Windows installer should start.
  • At the Windows Setup window, press Shift+F10 to open the Command Prompt
  • Start diskpart by entering: diskpart
Wait for the prompt.
  • Identify your disks by entering: list volume
You should see something like
Code:
Volume 1    C    Disk C    exFAT
Volume 2    D    USB       exFAT
Note the actual volume numbers and letters. Do not proceed if you are not sure! Replace the actual volume number of Disk C in the following step.
  • Select Disk C by entering: select volume 1
Double check that you have the right volume number.
  • Format the disk by entering: format quick fs=ntfs label=Windows
Wait for the task to complete.
  • Enter: exit
Use the actual letter of the USB drive in the following step:
  • Enter: D:
  • Backup the efi folder of the installer by entering: ren efi efi.bak
  • Enter: cd sources
  • Identify the version of Windows that you want to install by entering: dism /get-wiminfo /wimfile:install.wim
You should see something like
Code:
Index : 1
Name : Windows 10 Home
Replace the actual index of the Windows version and the actual letter of Disk C in the following step:
  • Apply the install image by entering: dism /apply-image /imagefile:install.wim /index:1 /applydir:C:\ /compact /EA
Wait for the task to complete.
  • Create the boot files by entering:bcdboot C:\Windows /s D: /f uefi
Wait for the task to complete.
  • Enter: exit
  • Close the Windows Setup window (click the X)
Click "yes" to restart your computer.
  • Reboot into macOS
Copy the boot files
  • Open Terminal
  • Find the EFI volume of Disk C by entering: diskutil list
The identifier should be something like diskCs1. Replace the actual identifier in the following step.
  • Mount the EFI volume by entering: sudo diskutil mount /dev/diskCs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder. This EFI volume should be empty.
  • Copy /USB/EFI/Microsoft to /Volumes/EFI/EFI
  • Delete /USB/EFI and rename efi.bak to efi
  • Eject the USB
Finish the installation
  • Reboot and use the boot picker to select Windows
The configuration process should begin and eventually your computer will restart.
  • Complete the configuration
Installing Linux (Ubuntu) DRAFT

You will need:

The iso file will be referred to as ubuntu-desktop.iso.​

A driver from rEFInd
Download the ZIP. The uncompressed folder will be referred to as refind-bin.​

Prepare two disks as follows:

Disk DUSB
Newly formatted MacOS Extended (Journaled) volume
(GUID scheme)​
Newly formatted FAT volume
(Apple Partition Map scheme)​
This is where Linux will go​
This is where the installer will go​

Disk D should not be the same as Disk A.

Add the Ext4 driver
  • Mount the EFI volume of Disk A
You can mount the EFI volume of Disk A by entering u=$(nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:boot-path | sed 's/.*GPT,\([^,]*\),.*/\1/'); if [ "$u" != "" ]; then sudo diskutil mount $u && open /Volumes/EFI/ ; fi in Terminal. The volume should mount and open as /Volumes/EFI in Finder.

Alternatively:
  • Look for the EFI volume of Disk A by entering diskutil list in Terminal
The identifier should be something like diskAs1. Replace the actual identifier in the next step.
  • Mount the EFI volume by entering diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder.
  • Copy refind-bin/refind/drivers_x64/ext4_x64.efi to EFI/OC/Drivers
Tell OpenCore about the driver
  • Open the configuration file for editing
To open the configuration file for editing:
  • Navigate to /Volumes/EFI/EFI/OC and copy config.plist to your home folder
  • Open config.plist in your home folder with TextEdit
  • Find the Drivers key and add
XML:
<dict>
<key>Arguments</key>
<string></string>
<key>Enabled</key>
<true/>
<key>Path</key>
<string>ext4_x64.efi</string>
</dict>
to the array​

Enable Open Shell
  • Locate the Tools key
  • Below it, replace
XML:
<array/>
by​
XML:
<array>

<dict>
<key>Arguments</key>
<string></string>
<key>Auxiliary</key>
<true/>
<key>Comment</key>
<string>OpenCore EFI Shell</string>
<key>Enabled</key>
<true/>
<key>Name</key>
<string>Open Shell</string>
<key>Path</key>
<string>OpenShell.efi</string>
<key>RealPath</key>
<false/>
<key>TextMode</key>
<false/>
</dict>

</array>
  • Verify and load the configuration
To verify and load the configuration:
  • Close config.plist
  • In Terminal, enter: plutil -convert xml1 config.plist && plutil config.plist
You should see "config.plist: OK". If not, recheck your edits.
  • Copy config.plist back to /Volumes/EFI/EFI/OC
  • Reboot
Prepare the installer
  • Move ubuntu-desktop.iso to your home folder
  • Enter: hdiutil convert -format UDRW -o ubuntu-desktop.dmg ubuntu-desktop.iso
  • Find your USB drive by entering: diskutil list
The identifier should be something like diskE. Replace the actual identifier in the following steps.
  • Unmount the USB by entering: diskutil unmountDisk /dev/diskE
  • Enter: sudo dd if=ubuntu-desktop.dmg of=/dev/rdiskE bs=1m (note the "r" in front of the identifier)
Let the task complete. Be patient. Once complete, you can dismiss the alert about the disk not being readable. You can also delete ubuntu-desktop.iso and ubuntu-desktop.dmg.

Proceed with the installation
  • Reboot and select the installer (NO NAME) from the boot picker
The live Linux environment should start. Make sure to select "Try" without installing.
  • Open Terminal in Linux.
  • Find the previously formatted volume of Disk D by entering: blkid
Carefully note the identifier. It should be something like sdx1.
  • Enter: ubiquity --no-bootloader
Follow the guided installation until you reach "Installation type".
  • Important: choose the option "Something else"
You will see a list of volumes. Recalling the identifier sdx1 that you just noted, highlight your Linux volume. Do not proceed if you are not sure!
  • Click on "Change..."
  • Choose "Use as: Ext4 journaling file system", "Format the partition" and "Mount point: /"
  • Click "OK"
Let the task complete. Once complete, highlight your Linux volume.
  • Click "Install Now"
Finish the installation.
  • Click "Continue Testing"
Repair Disk D

Return to Terminal. Replace the actual first three letters of the identifier sdx1 in the following step.
  • Enter: sudo gdisk /dev/sdx
You should see something like
Code:
Partition table scan:
  MBR: hybrid
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help):
The following steps are for changing MBR: hybrid to MBR: protective.
  • Enter: x
  • Enter: n
  • Enter: w
Finally, enter Y to confirm the change. If you are not sure, enter N and then q.

Identify the Linux volume in canonic form: Part 1
  • Find the previously formatted volume of Disk D by entering: blkid
This time, carefully note the PARTUUID of the volume. It should be something like 1234ABCD-0000-0000-0000-000000000000.

Identify the Linux volume in canonic form: Part 2
  • Reboot and at the boot picker press Space bar and select Open Shell
  • In Open Shell, enter: map -r -b
Find the entry with the same PARTUUID that you just noted. Press Enter to see more entries. Carefully note the complete path. It should be something like PciRoot(0x0)/Pci(0x0,0x0)/Sata(0x0,0x0,0x0)/HD(1,GPT,1234ABCD-0000-0000-0000-000000000000,0x0000000,0x0000000). Press Enter until the shell prompt appears.
  • Enter: exit
Tell OpenCore about Linux
  • Use the boot picker to boot into macOS
  • Mount the EFI volume of Disk A
You can mount the EFI volume of Disk A by entering u=$(nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:boot-path | sed 's/.*GPT,\([^,]*\),.*/\1/'); if [ "$u" != "" ]; then sudo diskutil mount $u && open /Volumes/EFI/ ; fi in Terminal. The volume should mount and open as /Volumes/EFI in Finder.

Alternatively:
  • Look for the EFI volume of Disk A by entering diskutil list in Terminal
The identifier should be something like diskAs1. Replace the actual identifier in the next step.
  • Mount the EFI volume by entering diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder.
  • Open the configuration file for editing
To open the configuration file for editing:
  • Navigate to /Volumes/EFI/EFI/OC and copy config.plist to your home folder
  • Open config.plist in your home folder with TextEdit
  • Locate the Entries key
  • Below it, replace
XML:
<array/>
by​
XML:
<array>

<dict>
<key>Arguments</key>
<string>ro root=PARTUUID=1234abcd-0000-0000-0000-000000000000 initrd=\boot\initrd.img splash=silent quiet</string>
<key>Auxiliary</key>
<false/>
<key>Comment</key>
<string>Linux EFI Stub Loader</string>
<key>Enabled</key>
<true/>
<key>Name</key>
<string>Linux</string>
<key>Path</key>
<string>PciRoot(0x0)/Pci(0x0,0x0)/Sata(0x0,0x0,0x0)/HD(1,GPT,1234ABCD-0000-0000-0000-000000000000,0x0000000,0x0000000)/boot/vmlinuz</string>
</dict>

</array>
Make sure to replace 1234abcd-0000-0000-0000-000000000000 by the actual PARTUUID that you noted earlier and use lower case letters. Also, make sure that you replace PciRoot(0x0)/Pci(0x0,0x0)/Sata(0x0,0x0,0x0)/HD(1,GPT,1234ABCD-0000-0000-0000-000000000000,0x0000000,0x0000000) by the actual path that you noted earlier.​
  • Verify and load the configuration
To verify and load the configuration:
  • Close config.plist
  • In Terminal, enter: plutil -convert xml1 config.plist && plutil config.plist
You should see "config.plist: OK". If not, recheck your edits.
  • Copy config.plist back to /Volumes/EFI/EFI/OC
  • Reboot
You will now be able to select Linux at the boot picker.
 

Attachments

  • config.zip
    3 KB · Views: 208
Last edited:

Syncretic

macrumors 6502
Apr 22, 2019
252
939
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 68000
Original poster
Jul 27, 2012
1,574
1,536
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 6502a
Aug 20, 2013
651
455
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:

h9826790

macrumors P6
Apr 3, 2014
15,361
7,627
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. [Update: fixed by using agdpmod=pikera]

Code:
    <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:

cdf

macrumors 68000
Original poster
Jul 27, 2012
1,574
1,536
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 P6
Apr 3, 2014
15,361
7,627
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 P6
Apr 3, 2014
15,361
7,627
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 6502a
May 14, 2008
776
349
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 6502a
Aug 20, 2013
651
455
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 68040
Sep 20, 2018
3,611
1,626
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 6502a
Oct 28, 2019
543
434
@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 68000
Original poster
Jul 27, 2012
1,574
1,536
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 68000
Original poster
Jul 27, 2012
1,574
1,536
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 P6
Apr 3, 2014
15,361
7,627
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.
 
  • Like
Reactions: kitcostantino

CMMChris

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

gigignopechegno

macrumors newbie
May 11, 2016
11
10
Your screenshot doesn't show what the ACPI device is called. You just see the bridges there. Please expand the "IOReg Name" column.

thanks,
i have this in my Macpro 5.1 whit Radeon vII ... is not GFX..
 

Attachments

  • Screenshot 2019-10-29 at 09.38.41.png
    Screenshot 2019-10-29 at 09.38.41.png
    346 KB · Views: 1,378

CMMChris

macrumors 6502a
Oct 28, 2019
543
434
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....
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.