Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
Status
The first post of this thread is a WikiPost and can be edited by anyone with the appropiate permissions. Your edits will be public.

cdf

macrumors 68020
Original poster
Jul 27, 2012
2,069
2,266
This guide explains how to use the excellent OpenCore boot loader to install, run, and update macOS Catalina, Big Sur or Monterey on the MacPro5,1, resulting in a clean, unaltered operating system just like on a supported Mac.

OpenCore Guide.jpg


Introduction

OpenCore is an advanced boot loader program that expands the hardware compatibility of macOS by injecting key data into memory. In addition to keeping macOS more up to date (and therefore more secure), there are two major advantages to using OpenCore on the 2009–2012 Mac Pro:
  1. boot-screen support (even with a standard graphics card)
  2. hardware acceleration (with DRM support for streaming on Safari)

This guide

This guide offers a purist's approach:
  • it provides a minimal setup that puts you in control (learn about OpenCore's settings without any layers of abstraction)
  • it promotes usage practices intended by Apple (SIP, Secure Boot, clean NVRAM, vanilla features)
While this guide can be used to set OpenCore up on a wide variety of legacy Macs, it is specifically aimed at the following systems:

Hardware ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Requirement ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Mac Pro modelEarly 2009 with MacPro5,1 firmware, Mid 2010, or Mid 2012
Processor architectureWestmere (E56xx, L56xx, and X56xx) or Gulftown (W36xx)
Firmware version144.0.0.0.0 (need to update?)
GraphicsSupported GPU (such as RX 580, Radeon VII, and 5700 XT)
WirelessSupported modules (such as BCM94360CD and BCM943602CDP)


Other approaches

Since this guide first appeared, several approaches have been proposed to facilitate the use of OpenCore on the 2009–2012 Mac Pro:
  • Martin's Package (popular one-size-fits-all solution)
  • MyBootMgr (RefindPlus chain-loading solution with helper apps)
  • OC Plistlib Generator (programatic solution compatible with this guide for easily maintaining and updating your OpenCore setup)
  • OCLP (comprehensive automatic solution for setting up OpenCore based on your hardware)

History

OpenCore can be traced back to a group of anonymous developers known as The Hermit Crabs Labs. The group became well-known for the Ozmosis project, a firmware-based bootloader developed for Quo Computer's Any-Operating-System motherboard. Although Quo enjoyed a successful 2013 Kickstarter campaign, the company no longer exists.

In the mid-to-late 2010s, Acidanthera, a group of developers led by @vit9696 and mhaeuser, revisited the project. After a complete rewrite, they released the first version of OpenCore in mid 2019.

Shortly after this release, Catalina Loader, a partial OpenCore solution for legacy Apple hardware, was proposed by @Rastafabi. Somewhat of a curiosity at this stage, the solution was only for tricking the macOS installer, not for actually running macOS.

In late 2019, the first OpenCore solution for installing, running and updating macOS on Apple hardware was presented here in this guide. This solution received a lot of attention from the Mac Pro community and led to finally activating AMD hardware acceleration. Even Acidanthera took notice and stepped in to solve the most enduring problem with the classic Mac Pro: the lack of preboot graphics with standard graphics cards.

It took over a year and the release of OCLP for the larger unsupported-Mac community to finally embrace OpenCore. During that time the Mac Pro community continued refining its use of OpenCore, developing key configuration strategies, which would eventually be adopted for legacy Macs of all kinds.


Review

"Absuredly pleased"

Listen to @flaubert's experience with OpenCore:



Credits
And thank you to all those that have contributed to and shown appreciation for this guide!

Basic setup

This part of the guide provides step-by-step instructions for installing OpenCore on your Mac.


Boot natively

The first step is to boot into macOS natively (no patched installs, no third-party boot loaders).

On MacPro5,1, the last natively bootable version of macOS is Mojave.

⚠️ It is important to always have a disk with a natively bootable installation of macOS. That way, you can always boot if something goes wrong.


Choose your ESP

Your EFI System Partition (ESP) is the disk volume where you will install OpenCore.
In Terminal, enter the following command:
diskutil list
Look for a volume of type EFI and choose one. Note its identifier. It will be something like "diskAs1".

⚠️ Make sure to look at the names and sizes of the volumes to properly identify the disk where your ESP is located. The identifier you just noted can change from one boot to the next.

A typical choice for your ESP is the EFI volume of the disk on which you plan to install macOS Catalina, Big Sur or Monterey. If your choice corresponds to the current boot disk, make sure that you have another disk with a natively bootable installation of macOS.

Enter the following command, replacing "diskAs1" with the actual identifier of your ESP:

sudo diskutil mount /dev/diskAs1

Your ESP will appear as "EFI" in Finder.


Install the basic components

OpenCore consists of three basic components:

Component ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Description ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
What to do ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
OpenCorePkgMain filesDownload OpenCore-0.8.7-RELEASE.zip
OcBinaryDataGraphical user interface filesFollow the link, click the code button, then "download ZIP"
configSample config file for legacy MacsDownload from the bottom of this post

Open OpenCorePkg. In the folder "X64", you will see a folder "EFI". Copy this folder to your ESP.

It is possible that your ESP already contains a folder "EFI" (Macs use EFI partitions as a staging area for firmware updates). In this case, you can safely delete the existing folder before.

In the folder "EFI" (now on your ESP), you will see a folder "OC". Copy the file "config.plist" to this folder.

This file is your config. It is the most important part of your setup.

Open OcBinaryData. Copy the folder "Resources" to the folder "OC", overwriting the existing folder of the same name.

Verify that your ESP contains the following files and folders:

ESP ("EFI" in Finder)
└── EFI
⠀⠀ ⠀├── BOOT
⠀⠀ ⠀⠀ ⠀└── BOOTx64.efi
⠀⠀ ⠀└── OC
⠀⠀⠀⠀ ⠀ ⠀├── ACPI
⠀⠀⠀⠀ ⠀ ⠀├── config.plist
⠀⠀⠀⠀ ⠀ ⠀├── Drivers
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀├── OpenCanopy.efi
⠀⠀⠀⠀ ⠀ ⠀⠀ ⠀└── OpenRuntime.efi
⠀⠀⠀⠀ ⠀ ⠀├── Kexts
⠀⠀⠀⠀ ⠀ ⠀├── OpenCore.efi
⠀⠀⠀⠀ ⠀ ⠀├── Resources
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀├── Audio
⠀⠀⠀⠀ ⠀ ⠀⠀ ⠀├── Font (4 files)
⠀⠀⠀⠀ ⠀ ⠀⠀ ⠀├── Image
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀│
⠀ ⠀└── Acidanthera
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀│⠀⠀⠀ ⠀ ⠀└── GoldenGate (22 files)
⠀⠀⠀⠀ ⠀ ⠀⠀ ⠀└── Label (22 files)
⠀⠀⠀⠀ ⠀ ⠀└── Tools


To keep things nice and tidy, the following files and folders can be deleted:
  • all files in the folders "Audio" and "Tools"
  • all files in the folder "Drivers", except for the files "OpenCanopy.efi" and "OpenRuntime.efi"
  • all folders in the folder "Acidanthera", except for the folder "GoldenGate"
🎉 Congratulations! You now have a basic OpenCore setup and are ready for the first boot.


First boot

If your Mac has native boot-screen support

Reboot and hold Option to enter Startup Manager.
Use the arrow keys to select "EFI Boot", then holding Control, press Enter.

OpenCore will start and is selected for booting automatically.

If your Mac has a standard graphics card

Reboot and hold Command-R to enter Recovery. You can also use the following command:

sudo nvram "recovery-boot-mode=unused" && sudo reboot recovery

⚠️ Be patient. Without boot screen support, it may take a while before something appears on your screen.

In Terminal (Menu bar > Utilities > Terminal), enter the following command:

diskutil list

Look for your ESP, noting its identifier. It will be something like diskAs1.

Enter the following command, replacing "diskAs1" with the actual identifier of your ESP:

diskutil mount /dev/diskAs1

Enter the following command:

bless --mount /Volumes/EFI --setBoot --file /Volumes/EFI/EFI/BOOT/BOOTx64.efi

Reboot.

OpenCore will start and is selected for booting automatically.


Confirm your installation

Your Mac should now be booted into macOS through OpenCore.

In the Terminal app, enter the following command:
nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:opencore-version

You should see the current version of OpenCore. With OpenCore successfully installed, it is time to take a closer look at the settings.


Mount your ESP

In Terminal, enter the following command:
diskutil list
Look for your ESP, noting its identifier. It will be something like "diskAs1".

Enter the following command, replacing "diskAs1" with the actual identifier of your ESP:

sudo diskutil mount /dev/diskAs1

Your ESP will appear as "EFI" in Finder.


Open a copy of your config in your home folder

Copy your config to your home folder (this is the folder with your user name in macOS).

Using TextEdit, open the copy of your config in your home folder.


Overview of basic settings

The sample config provided in this guide is optimized for minimality, offering a baseline for any Mac. Most options are disabled or set to the OpenCore failsafe values. There are only a few carefully chosen exceptions, which are described below.

Setting ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Value ⠀ ⠀
Explanation ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
DisableLinkeditJettisontrueRequired for reliable use of the Lilu kernel extension
ProtectSecureBoottrueProtect against BootROM damage from UEFI Windows
SetApfsTrimTimeout0Disable Trim for APFS
PickerAttributes16Allow pointer control in boot menu
PickerModeExternalUse graphical user interface for boot menu
PickerVariantDefaultUse modern black-and-white theme
PollAppleHotKeystrueAllow Mac startup key combinations
ShowPickertrueShow the boot menu automatically at startup
Timeout10Automatically boot the default selection after 10 seconds
AllowSetDefaulttrueAllow using Control-Enter to set the default selection in boot menu
BlacklistAppleUpdatetruePrevent unwanted firmware updates
VaultOptionalNo integrity checking of OpenCore
SecureBootModelDisabledDisable Startup Security
TimerResolution100000Use Mac value (10 milliseconds)
DirectGopRenderingtrueUse special video renderer
ProvideConsoleGoptrueEnable preboot video output
UIScale0Automatically scale boot menu based on current resolution
AppleBootPolicytrueHelp load Recovery
AppleUserInterfaceThemetrueAllow modern black-and-white theme
RequestBootVarRoutingtrueAllow boot management for seamless OS installations and updates

You may want to make a few changes. Here are a few possibilities that are compatible with this guide:

Setting ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Value ⠀ ⠀
Explanation ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
ForceBooterSignaturetruetrue is required for Hibernation
SetApfsTrimTimeout9999999Use Mac value (9.999999 seconds)
ThirdPartyDrivestruetrue is recommended to enable trim on standard SSD drives
HibernateSkipsPickertrueHide the boot menu when waking from hibernation
HideAuxiliarytrueHide Recovery (press Space at the boot menu to reveal)
LauncherOptionFullFull is recommended to ensure boot persistence of OpenCore
DirectGopRenderingfalsefalse is recommended as long as the boot menu still appears (you will have to experiment)
PickerAttributes80Enable pointer control and hide shutdown and restart buttons
ShowPickerfalseHide the boot menu (hold Escape at startup to show)
Timeout0Disable timeout when boot menu is shown
ExposeSensitiveData0Minimize traces of OpenCore
SecureBootModelDefaultDefault is recommended for security once you have updated to macOS Big Sur or later
WriteFlashtruetrue is only recommended if your firmware chip is healthy (need to check?)
AppleBootPolicyfalsefalse is recommended once you have updated to macOS Catalina or later

Making changes to these settings is easy. For example, here's how to set LauncherOption to Full:

Find ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Replace ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>Misc</Key>
<dict>

<key>Boot</Key>
<dict>

<key>LauncherOption</key>

<string>Disabled</string>
<key>Misc</Key>
<dict>

<key>Boot</Key>
<dict>

<key>LauncherOption</key>

<string>Full</string>

With LauncherOption set to Full, OpenCore is guaranteed to boot on the next boot after booting just once. This is especially useful if your ESP is on the disk with the top boot priority after an NVRAM reset.

As another example, here's how to set DirectGopRendering to false:

Find ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Replace ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>UEFI</Key>
<dict>

<key>Output</Key>
<dict>

<key>DirectGopRendering</key>

<true/>
<key>UEFI</Key>
<dict>

<key>Output</Key>
<dict>

<key>DirectGopRendering</key>

<false/>
DirectGopRendering (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 animations in the OpenCore boot picker) and therefore should be set to false if not needed.

You can always revisit these settings to make more changes later.


Verify your config

Save your changes.
In Terminal, enter the following command:

plutil -convert xml1 config.plist && plutil config.plist

This command will take care of properly formatting your config (so don't worry about the indentation). You should see "config.plist: OK". If not, recheck your edits. Once the check passes, you can proceed to load your config.


Load your config

Copy your config from your home folder back to your ESP as indicated below:

ESP
└── EFI
⠀⠀ ⠀├── BOOT
⠀⠀ ⠀└── OC
⠀⠀⠀⠀ ⠀ ⠀├── ACPI
⠀⠀⠀⠀ ⠀ ⠀├── config.plist
⠀⠀⠀⠀ ⠀ ⠀├── Drivers
⠀⠀⠀⠀ ⠀ ⠀├── Kexts
⠀⠀⠀⠀ ⠀ ⠀├── OpenCore.efi
⠀⠀⠀⠀ ⠀ ⠀├── Resources
⠀⠀⠀⠀ ⠀ ⠀└── Tools


Reboot.

Complete your setup

This part of the guide describes changes that you can make to your basic setup to obtain a more complete and functional setup.


General procedure

Changes to your setup should generally be preceded by the following steps:
  • Mount your ESP
  • Open a copy of your config in your home folder
Changes to your setup should generally be followed by the following steps:
  • Verify your config (especially if the changes to your config are complex)
  • Load your config
See Basic setup.

Tip: You can make several changes to your setup at once, but if the changes to your config are complex, it's best to verify your config after each change to better identify errors.


Spoofing and enabling missing features

The first step towards completing your setup is to apply a spoofing strategy known as hybridization. Hybridization consists of spoofing the board ID of a supported Mac while keeping other identifiers untouched. This strategy is sufficient for installing macOS and performing over-the-air (OTA) updates while keeping your Mac properly identified in Apple Services (iCloud, Messages, FaceTime). It is also an integral part of enabling hardware acceleration. The recommended board ID is the one from the 2019 Mac Pro (Mac-27AD2F918AE68F61):

Find ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Replace ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>PlatformInfo</key>
<dict>

<key>DataHub</key>
<dict>

<key>BoardProduct</key>
<string></string>

<dict/>

<key>SMBIOS</key>
<dict>

<key>BoardProduct</key>
<string></string>

<dict/>

<key>UpdateDataHub</key>
<false/>

<key>UpdateSMBIOS</key>
<false/>⠀
<key>PlatformInfo</key>
<dict>

<key>DataHub</key>
<dict>

<key>BoardProduct</key>
<string>Mac-27AD2F918AE68F61</string>

<dict/>

<key>SMBIOS</key>
<dict>

<key>BoardProduct</key>
<string>Mac-27AD2F918AE68F61</string>

<dict/>

<key>UpdateDataHub</key>
<true/>

<key>UpdateSMBIOS</key>
<true/>

For a better experience when installing and updating Monterey, you'll also need to "update" the firmware features:

Find ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Replace ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>PlatformInfo</key>
<dict>

<key>PlatformNVRAM</key>
<dict>

<key>FirmwareFeatures</key>
<data>
</data>

<key>FirmwareFeaturesMask</key>
<data>
</data>


<dict/>

<key>UpdateNVRAM</key>
<false/>

<key>PlatformInfo</key>
<dict>

<key>PlatformNVRAM</key>
<dict>

<key>FirmwareFeatures</key>
<data>
A1QMwAgAAAA=
</data>

<key>FirmwareFeaturesMask</key>
<data>
P/8f/wgAAAA=
</data>


<dict/>

<key>UpdateNVRAM</key>
<true/>

To enable hardware acceleration and other missing features such as Night Shift, Airplay to Mac, and Universal Control, you'll need three extra components:

Component ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Description ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
What to do ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
LiluPatcherDownload the latest RELEASE version
WhateverGreenLilu plugin for GPU patchesDownload the latest RELEASE version
FeatureUnlockLilu plugin for missing featuresDownload the latest RELEASE version

Copy the files "Lilu.kext", "WhateverGreen.kext" and "FeatureUnlock.kext" to your ESP as indicated below:

ESP
└── EFI
⠀⠀ ⠀├── BOOT
⠀⠀ ⠀└── OC
⠀⠀⠀⠀ ⠀ ⠀├── ACPI
⠀⠀⠀⠀ ⠀ ⠀├── config.plist
⠀⠀⠀⠀ ⠀ ⠀├── Drivers
⠀⠀⠀⠀ ⠀ ⠀├── Kexts
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀├── Lilu.kext
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀├── WhateverGreen.kext
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀└── FeatureUnlock.kext
⠀⠀⠀⠀ ⠀ ⠀├── OpenCore.efi
⠀⠀⠀⠀ ⠀ ⠀├── Resources
⠀⠀⠀⠀ ⠀ ⠀└── Tools

Enable the kexts:

Find ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Replace ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>Kernel</key>
<dict>
<key>Add</key>

<array/>
<key>Block</key>






















































<key>Kernel</key>
<dict>
<key>Add</key>

<array>
<dict>
<key>Arch</key>
<string>x86_64</string>
<key>BundlePath</key>
<string>Lilu.kext</string>
<key>Comment</key>
<string>Patcher</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>Lilu plugin for GPU 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>
<dict>
<key>Arch</key>
<string>x86_64</string>
<key>BundlePath</key>
<string>FeatureUnlock.kext</string>
<key>Comment</key>
<string>Lilu plugin for missing features</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>

<key>Block</key>

To configure WhateverGreen for hardware acceleration and DRM, you'll need a special utility:

Utility ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀⠀
Description ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
What to do ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
gfxutilFor getting device pathsDownload the latest RELEASE version

Copy the executable "gfxutil" to your home folder.
In Terminal, enter the following command:

xattr -c gfxutil

Get the path of your graphics card by entering the following command:

./gfxutil -f display | sed 's|.*= ||'

If your graphics card is in slot 1, the path should be PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0).

Add the device properties, replacing "PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)" below with the actual path:

Find ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Replace ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>DeviceProperties</key>
<dict>
<key>Add</key>

<dict/>
<key>Delete</key>







<key>DeviceProperties</key>
<dict>
<key>Add</key>

<dict>
<key>PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)</key>
<dict>
<key>rebuild-device-tree</key>
<integer>0</integer>
<key>unfairgva</key>
<integer>1</integer>
</dict>
</dict>

<key>Delete</key>

You might want to hang on to gfxutil because it will be used in a later step. Afterwards, you can delete it.

Alternative to device properties

For some video cards (some versions of the 5700XT for instance), device properties fail to apply. However, it is still possible to get hardware acceleration and DRM to work by using boot arguments instead:

Find ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Replace ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>NVRAM</key>
<dict>
<key>Add</key>
<dict>
<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
<dict>
<key>boot-args</key>

<string>-no_compat_check</string>

</dict>
<key>NVRAM</key>
<dict>
<key>Add</key>
<dict>
<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
<dict>
<key>boot-args</key>

<string>-no_compat_check wegtree=1 unfairgva=1</string>

</dict>

⚠️ In macOS, boot arguments are intended as a means of temporary configuration. Because their effective permanent usage requires overriding native NVRAM behavior, device properties should always be preferred.

If your Mac has two processors

Because of the spoofed board ID, you'll need an extra component:

Component ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Description ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
What to do ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
AppleMCEReporterDisablerDual-processor workaroundDownload the compressed file from the linked post

Copy the file "AppleMCEReporterDisabler.kext" to your ESP as indicated below:

ESP
└── EFI
⠀⠀ ⠀├── BOOT
⠀⠀ ⠀└── OC
⠀⠀⠀⠀ ⠀ ⠀├── ACPI
⠀⠀⠀⠀ ⠀ ⠀├── config.plist
⠀⠀⠀⠀ ⠀ ⠀├── Drivers
⠀⠀⠀⠀ ⠀ ⠀├── Kexts
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀├── Lilu.kext
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀├── WhateverGreen.kext
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀├── FeatureUnlock.kext
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀└── AppleMCEReporterDisabler.kext

⠀⠀⠀⠀ ⠀ ⠀├── OpenCore.efi
⠀⠀⠀⠀ ⠀ ⠀├── Resources
⠀⠀⠀⠀ ⠀ ⠀└── Tools

Enable the kext:

Find ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Replace ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>Kernel</key>
<dict>
<key>Add</key>
<array>

</array>
<key>Block</key>

















<key>Kernel</key>
<dict>
<key>Add</key>
<array>

<dict>
<key>Arch</key>
<string>x86_64</string>
<key>BundlePath</key>
<string>AppleMCEReporterDisabler.kext</string>
<key>Comment</key>
<string>Dual-processor workaround</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>
</array>

<key>Block</key>


Power management override

Starting with macOS 12.3, the wrong power management driver is used for the MacPro5,1, preventing macOS from booting. To ensure that the right one is used, you'll need an extra component:

Component ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Description ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
What to do ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
ASPP-OverridePower management overrideFollow the link and click the download button

Copy the file "ASPP-Override.kext" to your ESP as indicated below:

ESP
└── EFI
⠀⠀ ⠀├── BOOT
⠀⠀ ⠀└── OC
⠀⠀⠀⠀ ⠀ ⠀├── ACPI
⠀⠀⠀⠀ ⠀ ⠀├── config.plist
⠀⠀⠀⠀ ⠀ ⠀├── Drivers
⠀⠀⠀⠀ ⠀ ⠀├── Kexts
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀├── Lilu.kext
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀├── WhateverGreen.kext
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀├── FeatureUnlock.kext
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀├── AppleMCEReporterDisabler.kext (if needed)
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀└── ASPP-Override.kext

⠀⠀⠀⠀ ⠀ ⠀├── OpenCore.efi
⠀⠀⠀⠀ ⠀ ⠀├── Resources
⠀⠀⠀⠀ ⠀ ⠀└── Tools

Enable the kext:

Find ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Replace ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>Kernel</key>
<dict>
<key>Add</key>
<array>

</array>
<key>Block</key>

















<key>Kernel</key>
<dict>
<key>Add</key>
<array>

<dict>
<key>Arch</key>
<string>x86_64</string>
<key>BundlePath</key>
<string>ASPP-Override.kext</string>
<key>Comment</key>
<string>Power management override</string>
<key>Enabled</key>
<true/>
<key>ExecutablePath</key>
<string></string>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string>21.4.0</string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
</array>

<key>Block</key>


AVXpel

Starting with macOS 12.4, AVX (a CPU instruction set extension incompatible with all MacPro5,1 processors) is used in various kernel extensions, causing kernel panics. To prevent these panics, you'll need AVXpel:

Find
Replace
<key>Kernel</key>
<dict>

<key>Patch</key>

<array/>
<key>Quirks</key>




























































































































































































































































<key>Kernel</key>
<dict>

<key>Patch</key>

<array>
<dict>
<key>Arch</key>
<string>x86_64</string>
<key>Base</key>
<string>_lzvn_decode_buffer</string>
<key>Comment</key>
<string>AVXpel - part 1 of 6</string>
<key>Count</key>
<integer>1</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
xMF9fwfEwX1/TyDEwX1/V0DEwX1/X2DEwX1/p4AAAADE
wX1/r6AAAADEwX1/t8AAAADEwX1/v+AAAADEQX1/hwAB
AADEQX1/jyABAADEQX1/l0ABAADEQX1/n2ABAADEQX1/
p4ABAADEQX1/r6ABAADEQX1/t8ABAADEQX1/v+ABAAA=
</data>
<key>Identifier</key>
<string>com.apple.AppleFSCompression.AppleFSCompressionTypeZlib</string>
<key>Limit</key>
<integer>7168</integer>
<key>Mask</key>
<data>
</data>
<key>MaxKernel</key>
<string>21.6.0</string>
<key>MinKernel</key>
<string>21.5.0</string>
<key>Replace</key>
<data>
ZkEPfwdmQQ9/TxBmQQ9/VyBmQQ9/XzBmQQ9/Z0BmQQ9/
b1BmQQ9/d2BmQQ9/f3BmRQ9/h4AAAABmRQ9/j5AAAABm
RQ9/l6AAAABmRQ9/n7AAAABmRQ9/p8AAAABmRQ9/r9AA
AABmRQ9/t+AAAABmRQ9/v/AAAACQkJCQkJCQkJCQkJA=
</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>_lzvn_decode_buffer</string>
<key>Comment</key>
<string>AVXpel - part 2 of 6</string>
<key>Count</key>
<integer>4</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
xMF9bwfEwX1vTyDEwX1vV0DEwX1vX2DEwX1vp4AAAADE
wX1vr6AAAADEwX1vt8AAAADEwX1vv+AAAADEQX1vhwAB
AADEQX1vjyABAADEQX1vl0ABAADEQX1vn2ABAADEQX1v
p4ABAADEQX1vr6ABAADEQX1vt8ABAADEQX1vv+ABAAA=
</data>
<key>Identifier</key>
<string>com.apple.AppleFSCompression.AppleFSCompressionTypeZlib</string>
<key>Limit</key>
<integer>7168</integer>
<key>Mask</key>
<data>
</data>
<key>MaxKernel</key>
<string>21.6.0</string>
<key>MinKernel</key>
<string>21.5.0</string>
<key>Replace</key>
<data>
ZkEPbwdmQQ9vTxBmQQ9vVyBmQQ9vXzBmQQ9vZ0BmQQ9v
b1BmQQ9vd2BmQQ9vf3BmRQ9vh4AAAABmRQ9vj5AAAABm
RQ9vl6AAAABmRQ9vn7AAAABmRQ9vp8AAAABmRQ9vr9AA
AABmRQ9vt+AAAABmRQ9vv/AAAACQkJCQkJCQkJCQkJA=
</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>_lzvn_decode_buffer</string>
<key>Comment</key>
<string>AVXpel - part 3 of 6</string>
<key>Count</key>
<integer>2</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
xf1vAMX9b0ggxf1vUEDF/W9YYMX9b6CAAAAAxf1vqKAA
AADF/W+wwAAAAMX9b7jgAAAAxX1vgAABAADFfW+IIAEA
AMV9b5BAAQAAxX1vmGABAADFfW+ggAEAAMV9b6igAQAA
xX1vsMABAADFfW+44AEAAA==
</data>
<key>Identifier</key>
<string>com.apple.AppleFSCompression.AppleFSCompressionTypeZlib</string>
<key>Limit</key>
<integer>7168</integer>
<key>Mask</key>
<data>
</data>
<key>MaxKernel</key>
<string>21.6.0</string>
<key>MinKernel</key>
<string>21.5.0</string>
<key>Replace</key>
<data>
Zg9vAGYPb0gQZg9vUCBmD29YMGYPb2BAZg9vaFBmD29w
YGYPb3hwZkQPb4CAAAAAZkQPb4iQAAAAZkQPb5CgAAAA
ZkQPb5iwAAAAZkQPb6DAAAAAZkQPb6jQAAAAZkQPb7Dg
AAAAZkQPb7jwAAAAkJCQkA==
</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>_lzbitmap_decode</string>
<key>Comment</key>
<string>AVXpel - part 4 of 6</string>
<key>Count</key>
<integer>1</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
xMF9fwfEwX1/TyDEwX1/V0DEwX1/X2DEwX1/p4AAAADE
wX1/r6AAAADEwX1/t8AAAADEwX1/v+AAAADEQX1/hwAB
AADEQX1/jyABAADEQX1/l0ABAADEQX1/n2ABAADEQX1/
p4ABAADEQX1/r6ABAADEQX1/t8ABAADEQX1/v+ABAAA=
</data>
<key>Identifier</key>
<string>com.apple.driver.DiskImages.UDIFDiskImage</string>
<key>Limit</key>
<integer>7168</integer>
<key>Mask</key>
<data>
</data>
<key>MaxKernel</key>
<string>21.6.0</string>
<key>MinKernel</key>
<string>21.5.0</string>
<key>Replace</key>
<data>
ZkEPfwdmQQ9/TxBmQQ9/VyBmQQ9/XzBmQQ9/Z0BmQQ9/
b1BmQQ9/d2BmQQ9/f3BmRQ9/h4AAAABmRQ9/j5AAAABm
RQ9/l6AAAABmRQ9/n7AAAABmRQ9/p8AAAABmRQ9/r9AA
AABmRQ9/t+AAAABmRQ9/v/AAAACQkJCQkJCQkJCQkJA=
</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>_lzbitmap_decode</string>
<key>Comment</key>
<string>AVXpel - part 5 of 6</string>
<key>Count</key>
<integer>4</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
xMF9bwfEwX1vTyDEwX1vV0DEwX1vX2DEwX1vp4AAAADE
wX1vr6AAAADEwX1vt8AAAADEwX1vv+AAAADEQX1vhwAB
AADEQX1vjyABAADEQX1vl0ABAADEQX1vn2ABAADEQX1v
p4ABAADEQX1vr6ABAADEQX1vt8ABAADEQX1vv+ABAAA=
</data>
<key>Identifier</key>
<string>com.apple.driver.DiskImages.UDIFDiskImage</string>
<key>Limit</key>
<integer>7168</integer>
<key>Mask</key>
<data>
</data>
<key>MaxKernel</key>
<string>21.6.0</string>
<key>MinKernel</key>
<string>21.5.0</string>
<key>Replace</key>
<data>
ZkEPbwdmQQ9vTxBmQQ9vVyBmQQ9vXzBmQQ9vZ0BmQQ9v
b1BmQQ9vd2BmQQ9vf3BmRQ9vh4AAAABmRQ9vj5AAAABm
RQ9vl6AAAABmRQ9vn7AAAABmRQ9vp8AAAABmRQ9vr9AA
AABmRQ9vt+AAAABmRQ9vv/AAAACQkJCQkJCQkJCQkJA=
</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>_lzbitmap_decode</string>
<key>Comment</key>
<string>AVXpel - part 6 of 6</string>
<key>Count</key>
<integer>2</integer>
<key>Enabled</key>
<true/>
<key>Find</key>
<data>
xf1vAMX9b0ggxf1vUEDF/W9YYMX9b6CAAAAAxf1vqKAA
AADF/W+wwAAAAMX9b7jgAAAAxX1vgAABAADFfW+IIAEA
AMV9b5BAAQAAxX1vmGABAADFfW+ggAEAAMV9b6igAQAA
xX1vsMABAADFfW+44AEAAA==
</data>
<key>Identifier</key>
<string>com.apple.driver.DiskImages.UDIFDiskImage</string>
<key>Limit</key>
<integer>7168</integer>
<key>Mask</key>
<data>
</data>
<key>MaxKernel</key>
<string>21.6.0</string>
<key>MinKernel</key>
<string>21.5.0</string>
<key>Replace</key>
<data>
Zg9vAGYPb0gQZg9vUCBmD29YMGYPb2BAZg9vaFBmD29w
YGYPb3hwZkQPb4CAAAAAZkQPb4iQAAAAZkQPb5CgAAAA
ZkQPb5iwAAAAZkQPb6DAAAAAZkQPb6jQAAAAZkQPb7Dg
AAAAZkQPb7jwAAAAkJCQkA==
</data>
<key>ReplaceMask</key>
<data>
</data>
<key>Skip</key>
<integer>0</integer>
</dict>
</array>

<key>Quirks</key>


Make PCIe drives internal

On the MacPro5,1, macOS sees PCIe drives as external, but it's possible to make them internal. You'll need gfxutil (if you don't already have it from a previous step):

Utility ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀⠀
Description ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
What to do ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
gfxutilFor getting device pathsDownload the latest RELEASE version

Copy the executable "gfxutil" to your home folder.
In Terminal, enter the following command:

xattr -c gfxutil

Get the paths of your drives by entering the following command:

system_profiler SPPCIDataType | grep -B 2 'AHCI Controller\|NVM Express Controller' | grep 'pci' | sed 's|:||' | sort | uniq | xargs -n 1 ./gfxutil -f | sed 's|.*= ||'

Each path should be something like PciRoot(0x0)/Pci(0x0,0x0)/Pci(0x0,0x0).

Add the built-in property for each of your drives. Make sure to use the actual paths.

Find ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Replace ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>DeviceProperties</key>
<dict>
<key>Add</key>
<dict>

</dict>
<key>Delete</key>






<key>DeviceProperties</key>
<dict>
<key>Add</key>
<dict>

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

<key>Delete</key>

Repeat the seven lines preceding the last </dict> for each of the paths you noted above. Make sure to use the actual paths.


VMM flag

There are two options for installing and updating macOS in this guide (see the macOS section). One option requires enabling the CPUID VMM flag. If you have chosen this option, it is important to only enable the VMM flag when installing and updating. The reason is that the VMM flag impacts performance and disables power management.

Disabled ⠀⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀⠀
Enabled ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀⠀
<key>Kernel</key>
<dict>

<key>Emulate</key>
<dict>
<key>Cpuid1Data</key>

<data>
</data>

<key>Cpuid1Mask</key>
<data>
</data>

<key>Kernel</key>
<dict>

<key>Emulate</key>
<dict>
<key>Cpuid1Data</key>

<data>
AAAAAAAAAAAAAACAAAAAAA==
</data>

<key>Cpuid1Mask</key>
<data>
AAAAAAAAAAAAAACAAAAAAA==
</data>


Clean up the NVRAM

If you're using OpenCore to boot only Catalina and later, then you can clean up the NVRAM:

Delete ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>NVRAM</key>
<dict>
<key>Add</key>
<dict>

<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
<dict>
<key>boot-args</key>
<string>-no_compat_check</string>
</dict>

</dict>
<key>Delete</key>
<dict>

<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
<array>
<string>boot-args</string>
</array>

</dict>

If your configuration depends on other boot arguments, then just delete "-no_compat_check" and leave the rest.

⚠️ At this point, it is possible that you are using OpenCore to boot only Mojave or earlier. In this case, do not delete anything.


Thunderbolt

One of the most impressive upgrades that can be done to the MacPro5,1 is the addition of Thunderbolt 3 ports. The following instructions describe how to configure your OpenCore setup for a single flashed-for-Mac GC-Titan Ridge card installed in slot 4.

Boot your Mac with your GC-Titan Ridge card (without any previous SSDT loaded for it).

You'll need a few components:

Component ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Description ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
What to do ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
MaciASLAML compilerDownload the latest release
SSDT-TbtGCTRSSDT fileDownload from the bottom of this post

Place the "MaciASL" app in your Applications folder.

You can delete this app once you have completed the rest of the steps.

Copy the file "SSDT-TbtGCTR.aml" to your home folder.

This file is your Thunderbolt SSDT, which you will now customize using the brilliant ThunderboltUtil script.

In Terminal, enter the following command:

curl -O -L https://gist.githubusercontent.com/joevt/4f6d4d97b560efab9603ac509bf00122/raw/\
0621ed4d5aa250738dbdb1dad33567928af61624/ThunderboltUtil.sh && source ThunderboltUtil.sh

A script "ThunderboltUtil.sh" will appear in your home folder. You can delete this file once you have completed the rest of the steps.

Now enter the following command:

loadamlfile SSDT-TbtGCTR.aml && usedromnum 1 && setuid `system_profiler SPThunderboltDataType | grep -m 1 'UID: 0x00ED' | sed 's|UID: ||'` && repairchecksums && makedromdsl

A block of text will appear in Terminal.

Copy the block of text (everything from "ThunderboltDROM" to the trailing },).

Open your Thunderbolt SSDT with MaciASL and paste the block of text over the corresponding block (look for "ThunderboltDROM").

Don't worry about the formatting; it will be taken care of automatically.

Press the compile button at the top of the window to confirm that there are no errors and then save the file and close the app.

Move your Thunderbolt SSDT into your ESP as indicated below:

ESP
└── EFI
⠀⠀ ⠀├── BOOT
⠀⠀ ⠀└── OC
⠀⠀⠀⠀ ⠀ ⠀├── ACPI
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀└── SSDT-TbtGCTR.aml
⠀⠀⠀⠀ ⠀ ⠀├── config.plist
⠀⠀⠀⠀ ⠀ ⠀├── Drivers
⠀⠀⠀⠀ ⠀ ⠀├── Kexts
⠀⠀⠀⠀ ⠀ ⠀├── OpenCore.efi
⠀⠀⠀⠀ ⠀ ⠀├── Resources
⠀⠀⠀⠀ ⠀ ⠀└── Tools

Finally, enable your Thunderbolt SSDT:

Find ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Replace ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>ACPI</key>
<dict>
<key>Add</key>

<array/>








<key>ACPI</key>
<dict>
<key>Add</key>

<array>
<dict>
<key>Comment</key>
<string>Table for Thunderbolt AIC</string>
<key>Enabled</key>
<true/>
<key>Path</key>
<string>SSDT-TbtGCTR.aml</string>
</dict>
</array>


Picker audio assistance

OpenCore offers support for vision needs by providing audio assistance at the boot picker. Here's how to turn it on:

Component ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Description ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
What to do ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
OpenCorePkgAudio driverDownload the latest release
OcBinaryDataAudio filesFollow the link, click the code button, then "download ZIP"

Open OpenCorePkg and navigate to X64/EFI/OC/Drivers. There, you will find the file "AudioDxe.efi". Copy this file to EFI/OC/Drivers on your ESP.

Open OcBinaryData and navigate to Resources. Copy the folder "Audio" to EFI/OC on your ESP, overwriting the existing folder of the same name.

Verify that your ESP contains these new files:

ESP
└── EFI
⠀⠀ ⠀├── BOOT
⠀⠀ ⠀└── OC
⠀⠀⠀⠀ ⠀ ⠀├── ACPI
⠀⠀⠀⠀ ⠀ ⠀├── config.plist
⠀⠀⠀⠀ ⠀ ⠀├── Drivers
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀├── OpenCanopy.efi
⠀⠀⠀⠀ ⠀ ⠀⠀ ⠀├── OpenRuntime.efi
⠀⠀⠀⠀ ⠀ ⠀ ⠀ ⋮
⠀⠀⠀⠀ ⠀ ⠀⠀ ⠀└── AudioDxe.efi
⠀⠀⠀⠀ ⠀ ⠀├── Kexts
⠀⠀⠀⠀ ⠀ ⠀├── OpenCore.efi
⠀⠀⠀⠀ ⠀ ⠀├── Resources
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀├── Audio (Audio files)
⠀⠀⠀⠀ ⠀ ⠀⠀ ⠀├── Font
⠀⠀⠀⠀ ⠀ ⠀⠀ ⠀├── Image
⠀⠀⠀⠀ ⠀ ⠀⠀ ⠀└── Label
⠀⠀⠀⠀ ⠀ ⠀└── Tools


To keep things nice and tidy, you can delete any audio files with a localization code that is different from the language that you use in macOS (determined by the NVRAM variable "prev-lang-diags:kbd"). The localization code for English is "en". Make sure to keep any files that lack a localization code.

Enable audio support and configure the driver:

Find ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Replace ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>Misc</key>
<dict>

<key>Boot</key>
<dict>

<key>PickerAudioAssist</key>
<false/>

<key>UEFI</key>
<dict>

<key>Audio</key>
<dict>

<key>AudioDevice</key>
<string></string>

<key>AudioSupport</key>
<false/>
<key>DisconnectHda</key>
<false/>

<key>Drivers</key>
<array>

</array>

<key>ProtocolOverrides</key>
<dict>
<key>AppleAudio</key>
<false/>











<key>Misc</key>
<dict>

<key>Boot</key>
<dict>

<key>PickerAudioAssist</key>
<true/>

<key>UEFI</key>
<dict>

<key>Audio</key>
<dict>

<key>AudioDevice</key>
<string>PciRoot(0x0)/Pci(0x1b,0x0)</string>

<key>AudioSupport</key>
<true/>
<key>DisconnectHda</key>
<true/>

<key>Drivers</key>
<array>

<dict>
<key>Arguments</key>
<string>--gpio-setup</string>
<key>Comment</key>
<string>Driver for audio</string>
<key>Enabled</key>
<true/>
<key>LoadEarly</key>
<false/>
<key>Path</key>
<string>AudioDxe.efi</string>
</dict>
</array>


<key>ProtocolOverrides</key>
<dict>
<key>AppleAudio</key>
<true/>


Settings for older versions of macOS

The settings above are sufficient for the latest version of macOS Monterey. Older versions of macOS may need other settings.

For macOS Big Sur 11.3 to Monterey 12.0.1

You'll need SurPlus:

Find ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Replace ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>Kernel</key>
<dict>

<key>Patch</key>

<array/>
<key>Quirks</key>








































































<key>Kernel</key>
<dict>

<key>Patch</key>

<array>
<dict>
<key>Arch</key>
<string>x86_64</string>
<key>Base</key>
<string>_early_random</string>
<key>Comment</key>
<string>SurPlus (1)</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 (2)</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>

<key>Quirks</key>

For macOS Mojave and Catalina

You'll need an extra device property to take full advantage of hardware acceleration and DRM:

Find ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Replace ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>DeviceProperties</key>
<dict>
<key>Add</key>
<dict>
<key>PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)</key>
<dict>

</dict>

</dict>
<key>Delete</key>

<key>DeviceProperties</key>
<dict>
<key>Add</key>
<dict>
<key>PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)</key>
<dict>

<key>shikigva</key>
<integer>80</integer>

</dict>
</dict>
<key>Delete</key>

Again, make sure to replace "PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)" with the actual path of your graphics card.

If you're using boot arguments instead of device properties

Find ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Replace ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>NVRAM</key>
<dict>
<key>Add</key>
<dict>
<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
<dict>
<key>boot-args</key>

<string>⋯</string>

</dict>
<key>NVRAM</key>
<dict>
<key>Add</key>
<dict>
<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
<dict>
<key>boot-args</key>

<string>⋯ shikigva=80</string>

</dict>

For macOS Mojave

The best board ID in this case is the iMacPro's. In the spoofing steps above, replace "Mac-27AD2F918AE68F61" by "Mac-7BA5B2D9E42DDD94". Because of this change, you'll also need an extra device property:

Find ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Replace ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>DeviceProperties</key>
<dict>
<key>Add</key>
<dict>
<key>PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)</key>
<dict>

</dict>

</dict>
<key>Delete</key>

<key>DeviceProperties</key>
<dict>
<key>Add</key>
<dict>
<key>PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)</key>
<dict>

<key>agdpmod</key>
<string>pikera</string>

</dict>
</dict>
<key>Delete</key>

Again, make sure to replace "PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)" with the actual path of your graphics card.

If you're using boot arguments instead of device properties

Find ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Replace ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>NVRAM</key>
<dict>
<key>Add</key>
<dict>
<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
<dict>
<key>boot-args</key>

<string>⋯</string>

</dict>
<key>NVRAM</key>
<dict>
<key>Add</key>
<dict>
<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
<dict>
<key>boot-args</key>

<string>⋯ agdpmod=pikera</string>

</dict>

Maintenance

This part of the guide describes standard maintenance procedures.


Updating OpenCore

Currently, a new version of OpenCore is released on the first Monday of every month.

With the help of the updated sample config at the bottom of this post and the notes below, make any necessary changes to your setup.

0.8.6 to 0.8.7

Add ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>Misc</key>
<dict>

<key>Boot</key>
<dict>

<key>HibernateSkipsPicker</key>
<false/>

Updated components ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
OpenCorePkg
WhateverGreen
FeatureUnlock

Install the components, as described in Basic setup and Complete your setup (and the Appendix if applicable), overwriting the existing files of the same name.


Validating your config

You'll need a special utility from the main OpenCore files:

Component ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Description ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
What to do ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
OpenCorePkgValidation utilityDownload the latest RELEASE version

Open OpenCorePkg. In the folder "Utilities", you'll see a folder "ocvalidate", in which you'll see an executable "ocvalidate". Copy this executable to your home folder.

In Terminal, enter the following command:

xattr -c ocvalidate

With your config in your home folder, validate your config by entering the following command:

./ocvalidate config.plist

The utility will tell you if your config has been properly updated for the latest version of OpenCore.


Setting up BootKicker

The BootKicker tool allows you to start the native Apple boot picker from OpenCore.

You'll first need to obtain the tool from the main OpenCore files:

Component ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Description ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
What to do ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
OpenCorePkgBootKicker toolDownload the latest RELEASE version

Open OpenCorePkg and navigate to X64/EFI/OC/Tools. There, you will find the file "BootKicker.efi". Copy this file to EFI/OC/Tools on your ESP.

ESP
└── EFI
⠀⠀ ⠀├── BOOT
⠀⠀ ⠀└── OC
⠀⠀⠀⠀ ⠀ ⠀├── ACPI
⠀⠀⠀⠀ ⠀ ⠀├── config.plist
⠀⠀⠀⠀ ⠀ ⠀├── Drivers
⠀⠀⠀⠀ ⠀ ⠀├── Kexts
⠀⠀⠀⠀ ⠀ ⠀├── OpenCore.efi
⠀⠀⠀⠀ ⠀ ⠀├── Resources
⠀⠀⠀⠀ ⠀ ⠀└── Tools
⠀⠀⠀⠀ ⠀ ⠀ ⠀ ⠀└── BootKicker.efi

Make the following changes to your config:

Find ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Replace ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>Misc</Key>
<dict>

<key>Tools</Key>
<array/>






















<key>Misc</Key>
<dict>

<key>Tools</Key>
<array>
<dict>
<key>Arguments</key>
<string></string>
<key>Auxiliary</key>
<true/>
<key>Comment</key>
<string>Tool for starting the native boot menu</string>
<key>Enabled</key>
<true/>
<key>Flavour</key>
<string>Auto</string>
<key>FullNvramAccess</key>
<true/>
<key>Name</key>
<string>BootKicker</string>
<key>Path</key>
<string>BootKicker.efi</string>
<key>RealPath</key>
<false/>
<key>TextMode</key>
<false/>
</dict>
</array>


Creating a rescue CD

An OpenCore rescue CD makes it possible to boot through OpenCore by holding C at startup.

Create a new folder "OC-CD" in your home folder.
Copy your EFI folder from your ESP to the folder "OC-CD":

OC-CD
└── EFI
⠀⠀ ⠀├── BOOT
⠀⠀ ⠀└── OC


You will need to modify your config in this new instance of OpenCore.

⚠️ Important: Do not try editing your config directly in the new instance of OpenCore. Instead, copy your config out to your home folder as usual, make the change, then copy your config back to the new instance of OpenCore.

Set LauncherOption to Disabled and RequestBootVarRouting to false (for native blessability).

Once the change is made and your modified config is back in place, you can proceed to create the CD.

In Terminal, enter the following command:

hdiutil create -size 200MiB -srcfolder OC-CD -format UDTO -fs FAT32 OC-CD.iso

Insert a blank CD or DVD and enter the following command:

hdiutil burn OC-CD.iso.cdr

To reuse a rewritable disk, use the following command instead:

hdiutil burn -erase OC-CD.iso.cdr

Wait for the task to complete. You will see "Burn completed successfully". You can now go back to your home folder and delete the folder "OC-CD" and the iso file. These files are no longer needed.

⚠️ Important: Because the rescue CD is configured with native blessability it should not be used for installing or updating operating systems.


Booting natively

Via BootKicker

Reboot and select BootKicker at the OpenCore boot menu and press Enter.

You may have to press the Spacebar key to reveal the tool. The tool will start the native Apple boot menu.

Select a natively bootable installation of macOS and press Enter.

Your Mac will automatically restart, and the natively bootable installation of macOS will start without OpenCore.


Debugging

The debug version of OpenCore allows you to generate a log that can help identify issues. You'll need the following component:

Component ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Description ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
What to do ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
OpenCorePkgMain filesDownload the DEBUG version

Make sure to choose the DEBUG version with the same version number as the RELEASE version that you are currently using.

Open OpenCorePkg. In the folder "X64", you'll see a folder "EFI". This folder contains debug versions of the main files. In your ESP, back up and replace the files indicated below by the corresponding debug files.

ESP
└── EFI
⠀⠀ ⠀├── BOOT
⠀⠀ ⠀⠀ ⠀└── BOOTx64.efi
⠀⠀ ⠀└── OC
⠀⠀⠀⠀ ⠀ ⠀├── ACPI
⠀⠀⠀⠀ ⠀ ⠀├── config.plist
⠀⠀⠀⠀ ⠀ ⠀├── Drivers
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀├── OpenCanopy.efi
⠀⠀⠀⠀ ⠀ ⠀⠀ ⠀└── OpenRuntime.efi
⠀⠀⠀⠀ ⠀ ⠀├── Kexts
⠀⠀⠀⠀ ⠀ ⠀├── OpenCore.efi
⠀⠀⠀⠀ ⠀ ⠀├── Resources
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀├── Audio
⠀⠀⠀⠀ ⠀ ⠀⠀ ⠀├── Font
⠀⠀⠀⠀ ⠀ ⠀⠀ ⠀├── Image
⠀⠀⠀⠀ ⠀ ⠀⠀ ⠀└── Label
⠀⠀⠀⠀ ⠀ ⠀└── Tools


Make the following changes to your config:

Find ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Replace ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>Misc</Key>
<dict>

<key>Debug</Key>
<dict>

<key>DisplayLevel</key>

<integer>0</integer>

<key>Target</key>

<integer>0</integer>
<key>Misc</Key>
<dict>

<key>Debug</Key>
<dict>

<key>DisplayLevel</key>

<integer>2147483714</integer>

<key>Target</key>

<integer>65</integer>

The next time your reboot, you will find a log in your ESP. Once you are finished debugging, simply reverse the changes above.


Disabling OpenCore

Via BootKicker

Reboot and select BootKicker at the OpenCore boot menu and press Enter.

You may have to press Space to reveal the tool. The tool will start the native Apple boot menu.

Select a natively bootable installation of macOS, then holding Control, press Enter.

Your Mac will automatically restart, and the natively bootable installation of macOS will start without OpenCore and is selected for booting automatically.

Via the rescue CD

Reboot and hold C to boot from the rescue CD.
Use the OpenCore boot menu to select a natively bootable installation of macOS, then holding Control, press Enter. Alternatively, boot into macOS and select a natively bootable installation of macOS in System Preferences > Startup Disk and choose Restart.

The natively bootable installation of macOS will start without OpenCore and is selected for booting automatically.

If your Mac has native boot-screen support

Reboot and hold Option to enter the Startup Manager.
Use Startup Manager to select a natively bootable installation of macOS, then holding Control, press Enter.

The natively bootable installation of macOS will start without OpenCore and is selected for booting automatically.

The long way

Set RequestBootVarRouting to false.
Reboot.
Set RequestBootVarRouting back to true, but don't reboot just yet.
Select a natively bootable installation of macOS in System Preferences > Startup Disk and choose Restart.

The natively bootable installation of macOS will start without OpenCore and is selected for booting automatically.


Re-enabling OpenCore after disabling it

Via the rescue CD

Reboot and hold C to boot from the rescue CD.
Use the OpenCore boot menu to select "EFI", then holding Control, press Enter.

The screen will black out briefly. On the next boot, OpenCore will start and is selected for booting automatically.

You may see two EFI entries. Selecting either should be fine. If you have more than two EFI entries, then you may need to experiment.

Otherwise

Repeat the first boot procedure. See Basic setup.

macOS

This part of the guide provides information regarding installing and updating macOS with your OpenCore setup.


Clean install or update

If you've followed this guide, then your OpenCore setup allows you to easily install and update macOS up to Monterey. You can do a clean install on an APFS volume or do an OTA update.

Recommended update options:

Clean install with installer app in macOS Mojave and later, or OTA update in macOS Big Sur and later
  • SecureBootModel is set to Disabled
  • VMM flag is enabled
Clean install with bootable installer, installer app in macOS Big Sur and later, or OTA update in macOS Big Sur and later
  • SecureBootModel is set to Default
  • Hybridization is used
  • Firmware features are updated
See Basic setup and Complete your setup.

⚠️ Important: Choose one option or the other (not a combination). Option 2 is the vanilla method: it constitutes the settings that you should use anyway when running macOS. However, during installations and updates, option 2 should only be chosen if your firmware chip is healthy (need to check?). If you are uncertain, use option 1.

During the update, your Mac may restart a few times. During these restarts, the default selection on the OpenCore boot menu should be "macOS Installer".


Full installer

To download a full installer of macOS, you can use the excellent installinstallmacos script, which assembles all the necessary files directly from Apple.

⚠️ To use this script in macOS 12.3 or later, you'll need a Python installation.

In Terminal, enter the following command:

curl -O -L https://raw.githubusercontent.com/munki/macadmin-scripts/main/installinstallmacos.py && sudo python installinstallmacos.py

A script "installinstallmacos.py" and a folder "contents" will appear in your home folder. You can delete them once you have the installer.

Choose the desired version of macOS (Catalina, Big Sur or Monterey).

A sparse disk image will be created in your home folder, and this image contains the installer.

Appendix: Windows

This part of the guide provides step-by-step instructions for installing Windows 10 or 11 on your Mac.


Prepare a USB installer

Format a USB flash drive with at least 8 GB of space as ExFAT with the MBR partition scheme. This volume will be referred to as "USB".

You'll need the installer image:

Component ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Description ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
What to do ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Windows 10 or 11Installer image file (ISO)Follow the link, select the edition, then download

Double click the image file. The volume will be referred to here as "CCCOMA_X64".
In Terminal, enter the following command, replacing "USB" and "CCCOMA_X64" with the actual volume names:

rsync -r /Volumes/CCCOMA_X64/ /Volumes/USB

⚠️ Important: Don't forget the "/" after "CCCOMA_X64".

Let the task complete.


Format your Windows disk

Format a disk with at least 32 GB of space as ExFAT with the GUID partition scheme. This volume will be referred to as "Disk C".


Install the ExFat driver

⚠️ If you're using OCLP and have been directed to this guide to install Windows, you can skip this step.

Component ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Description ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
What to do ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
OcBinaryDataExFAT driverFollow the link, click the code button, then "download ZIP"

Open OcBinaryData. In the folder "Drivers", you'll see a file "ExFatDxeLegacy.efi". Copy this file to your ESP as indicated below:

ESP
└── EFI
⠀⠀ ⠀├── BOOT
⠀⠀ ⠀└── OC
⠀⠀⠀⠀ ⠀ ⠀├── ACPI
⠀⠀⠀⠀ ⠀ ⠀├── config.plist
⠀⠀⠀⠀ ⠀ ⠀├── Drivers
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀├── OpenCanopy.efi
⠀⠀⠀⠀ ⠀ ⠀⠀ ⠀├── OpenRuntime.efi
⠀⠀⠀⠀ ⠀ ⠀⠀ ⠀└── ExFatDxeLegacy.efi
⠀⠀⠀⠀ ⠀ ⠀├── Kexts
⠀⠀⠀⠀ ⠀ ⠀├── OpenCore.efi
⠀⠀⠀⠀ ⠀ ⠀├── Resources
⠀⠀⠀⠀ ⠀ ⠀└── Tools


Enable the driver:

Find ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
Replace ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀
<key>UEFI</key>
<dict>
<key>Drivers</key>
<array>

</array>
<key>Input</key>









<key>UEFI</key>
<dict>
<key>Drivers</key>
<array>

<dict>
<key>Arguments</key>
<string></string>
<key>Comment</key>
<string></string>
<key>Enabled</key>
<true/>
<key>Path</key>
<string>ExFatDxeLegacy.efi</string>
<key>LoadEarly</key>
<false/>
</dict>
</array>

<key>Input</key>


Boot the installer

Before proceeding, make sure that
  • ProtectSecureBoot is set to true
  • The VMM flag is disabled
See Basic setup and Complete your setup.

Reboot with the USB installer inserted, and select "Windows" from the OpenCore boot menu.
When the Windows Setup window appears, press Shift-F10 to open Command Prompt.


Identify your disks

In Command Prompt, enter the following command:

diskpart

At the DISKPART prompt, enter the following command
list volume

Look for Disk C and your USB flash drive. You should see something like

Volume 1 ⠀ ⠀ C ⠀ ⠀ Disk C ⠀ ⠀ exFAT
Volume 2 ⠀ ⠀ D ⠀ ⠀ USB ⠀ ⠀ ⠀ exFAT


Note the actual volume numbers and letters.


Reformat your Windows disk

Still at the DISKPART prompt, enter the following command, replacing "Volume 1" by the actual volume number of Disk C:

select volume 1

If you are absolutely sure of the volume number, proceed by entering the following command:

format quick fs=ntfs label=Windows

Wait for the task to complete.

Enter the following command:

exit


Proceed with the installation

In Command Prompt, enter the following command, replacing "D" by the actual volume letter of the USB drive:

D:

Now enter the following commands:

ren efi efi.bak

cd sources

dism /get-wiminfo /wimfile:install.wim

Identify the index of the desired Windows version. You should see something like

Index : 1
Name : Windows 11 Home


Enter the following command, replacing "1" by the actual index of the Windows version and "C" by the actual letter of Disk C:

dism /apply-image /imagefile:install.wim /index:1 /applydir:C:\ /compact /EA

Wait for the task to complete.

Enter the following command, replacing "C" by the actual letter of Disk C and "D" by the actual letter of the USB drive:

bcdboot C:\Windows /s D: /f uefi

Wait for the task to complete.

Finally, enter the following command:

exit

Close the Windows Setup window by clicking the x and reboot into macOS.


Prepare your Windows EFI

In Terminal, enter the following command:

diskutil list

Look for the EFI Partition of Disk C, noting its identifier. It will be something like diskCs1.
Enter the following command, replacing "diskCs1" by the actual identifier:

sudo diskutil mount /dev/diskCs1

The volume should appear as "EFI" in Finder. This is your Windows EFI.

In your Windows EFI, create a folder "EFI".

On the USB drive, in the folder "EFI", you will find a folder "Microsoft". Copy this folder to the folder you just created:

Windows EFI
└── EFI
⠀⠀ ⠀└── Microsoft


On your USB flash drive, delete the folder "EFI" and rename "efi.bak" to "efi".
Eject the drive.


Finish the installation

Reboot and use the OpenCore boot menu to select "Windows".

The configuration process will begin and eventually your Mac will restart.

Follow the guided steps to complete the installation.
 

Attachments

  • SSDT-TbtGCTR.zip
    842 bytes · Views: 258
  • config.zip
    3.1 KB · Views: 21
Last edited:

Syncretic

macrumors 6502
Apr 22, 2019
309
1,428
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 68020
Original poster
Jul 27, 2012
2,069
2,266
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.
 
  • Like
Reactions: shadow_999

w1z

macrumors 6502a
Aug 20, 2013
666
466
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,664
7,868
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 68020
Original poster
Jul 27, 2012
2,069
2,266
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,664
7,868
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,664
7,868
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
786
356
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
666
466
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 601
Sep 20, 2018
4,136
1,875
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
805
709
Germany (Bavaria)
@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 68020
Original poster
Jul 27, 2012
2,069
2,266
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 68020
Original poster
Jul 27, 2012
2,069
2,266
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,664
7,868
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

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,890

CMMChris

macrumors 6502a
Oct 28, 2019
805
709
Germany (Bavaria)
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.