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.
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:
- boot-screen support (even with a standard graphics card)
- hardware acceleration (with DRM support for streaming on Safari)
This guide
This guide offers a purist's approach:
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:
- 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)
Hardware ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ Requirement ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀Mac Pro model Early 2009 with MacPro5,1 firmware, Mid 2010, or Mid 2012 Processor architecture Westmere (E56xx, L56xx, and X56xx) or Gulftown (W36xx) Firmware version 144.0.0.0.0 (need to update?) Graphics Supported GPU (such as RX 580, Radeon VII, and 5700 XT) Wireless Supported 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:
![]()
NC #874 OpenCore with 2010 Mac Pro by Kurt, I Was Wrong About Stream Deck, Security Bits - Podfeet Podcasts
Hi, this is Allison Sheridan of the NosillaCast Apple Podcast, hosted at Podfeet.com, a technology geek podcast with an EVER so slight Apple bias. Today is Sunday, February 6, 2022, and this is show number 874. mp3 download Chit Chat Across the Pond Bart and I recorded an episode of Chit Chat...www.podfeet.com
Credits
And thank you to all those that have contributed to and shown appreciation for this guide!
- Apple for macOS
- @vit9696 and all the other Acidanthera developers for OpenCore, Lilu, WhateverGreen, FeatureUnlock, and gfxutil
- naveenkrdy for AppleMCEReporterDisabler
- @h9826790 for the hardware acceleration study and the hybridization idea
- @startergo for testing that led to DRM and boot-screen support
- @Syncretic for SurPlus and AVXpel
- @khronokernel and dhinakg for revealing the large-base-system firmware feature
- @khronokernel for ASPP-Override
- @joevt for ThunderboltUtil
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 ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀OpenCorePkg Main files Download OpenCore-0.8.8-RELEASE.zip OcBinaryData Graphical user interface files Follow the link, click the code button, then "download ZIP" config Sample config file for legacy Macs Download 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:
🎉 Congratulations! You now have a basic OpenCore setup and are ready for the first boot.
- 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"
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 ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀DisableLinkeditJettison true Required for reliable use of the Lilu kernel extension ProtectSecureBoot true Protect against BootROM damage from UEFI Windows SetApfsTrimTimeout 0 Disable Trim for APFS PickerAttributes 16 Allow pointer control in boot menu PickerMode External Use graphical user interface for boot menu PickerVariant Default Use modern black-and-white theme PollAppleHotKeys true Allow Mac startup key combinations ShowPicker true Show the boot menu automatically at startup Timeout 10 Automatically boot the default selection after 10 seconds AllowSetDefault true Allow using Control-Enter to set the default selection in boot menu BlacklistAppleUpdate true Prevent unwanted firmware updates Vault Optional No integrity checking of OpenCore SecureBootModel Disabled Disable Startup Security TimerResolution 100000 Use Mac value (10 milliseconds) DirectGopRendering true Use special video renderer ProvideConsoleGop true Enable preboot video output UIScale 0 Automatically scale boot menu based on current resolution AppleBootPolicy true Help load Recovery AppleUserInterfaceTheme true Allow modern black-and-white theme RequestBootVarRouting true Allow 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 ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ForceBooterSignature true true is required for Hibernation SetApfsTrimTimeout 9999999 Use Mac value (9.999999 seconds) ThirdPartyDrives true true is recommended to enable trim on standard SSD drives HibernateSkipsPicker true Hide the boot menu when waking from hibernation HideAuxiliary true Hide Recovery (press Space at the boot menu to reveal) LauncherOption Full Full is recommended to ensure boot persistence of OpenCore DirectGopRendering false false is recommended as long as the boot menu still appears (you will have to experiment) PickerAttributes 80 Enable pointer control and hide shutdown and restart buttons ShowPicker false Hide the boot menu (hold Escape at startup to show) Timeout 0 Disable timeout when boot menu is shown ExposeSensitiveData 0 Minimize traces of OpenCore SecureBootModel Default Default is recommended for security once you have updated to macOS Big Sur or later WriteFlash true true is only recommended if your firmware chip is healthy (need to check?) AppleBootPolicy false false 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:
➋ Changes to your setup should generally be followed by the following steps:
- Mount your ESP
- Open a copy of your config in your home folder
See Basic setup.
- Verify your config (especially if the changes to your config are complex)
- Load your config
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 ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀Lilu Patcher Download the latest RELEASE version WhateverGreen Lilu plugin for GPU patches Download the latest RELEASE version FeatureUnlock Lilu plugin for missing features Download 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 ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀gfxutil For getting device paths Download 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 ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀AppleMCEReporterDisabler Dual-processor workaround Download 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-Override Power management override Follow 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 ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀gfxutil For getting device paths Download 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 ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀MaciASL AML compiler Download the latest release SSDT-TbtGCTR SSDT file Download 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 ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀OpenCorePkg Audio driver Download the latest release OcBinaryData Audio files Follow 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.7 to 0.8.8
No changes to your config are required for updating from version 0.8.7 to 0.8.8.
Note: Starting with version 0.8.8, OC will not hide itself (i.e., you'll see an entry "EFI Boot" corresponding to OC) unless a hidden file ".contentVisibility" with the text "Disabled" is included in EFI/BOOT. When updating, make sure to copy over the entire new BOOT folder (not just the BOOTx64.efi file) so that the hidden file is also included.
Updated components ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀OpenCorePkg Lilu 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 ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀OpenCorePkg Validation utility Download 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 ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀OpenCorePkg BootKicker tool Download 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 ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀OpenCorePkg Main files Download 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
➋ 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 Disabled
- VMM flag is enabled
See Basic setup and Complete your setup.
- SecureBootModel is set to Default
- Hybridization is used
- Firmware features are updated
⚠️ 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 11 Installer 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 ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀OcBinaryData ExFAT driver Follow 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
See Basic setup and Complete your setup.
- ProtectSecureBoot is set to true
- The VMM flag is disabled
➊ 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
Last edited: