In this guide, you'll learn how to use OpenCore to install, run and update macOS Catalina, Big Sur and Monterey on the 2009–2012 Mac Pro, ending up with a clean unaltered operating system just like on a supported Mac.
The approach described in this guide is for setting up and configuring OpenCore manually in a manner that aims to promote an understanding of the resulting configuration. There are other ways of setting up and configuring OpenCore on the Mac Pro that were developed after the approach described in this guide and that draw on this guide to varying extents. A popular example is OCLP (OpenCore Legacy Patcher), which sets up and configures OpenCore automatically on the Mac Pro as well as on a wide range of other legacy Macs. For support with OCLP, please use their recommended support channel.
The approach described in this guide is for setting up and configuring OpenCore manually in a manner that aims to promote an understanding of the resulting configuration. There are other ways of setting up and configuring OpenCore on the Mac Pro that were developed after the approach described in this guide and that draw on this guide to varying extents. A popular example is OCLP (OpenCore Legacy Patcher), which sets up and configures OpenCore automatically on the Mac Pro as well as on a wide range of other legacy Macs. For support with OCLP, please use their recommended support channel.
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
- @dosdude1 for ROMTool and DXEInject
- @Bmju for EnableGop
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-1.0.3-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, see below)
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀├── Image
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀│⠀ ⠀└── Acidanthera
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀│⠀⠀⠀ ⠀ ⠀└── GoldenGate (23 files)
⠀⠀⠀⠀ ⠀ ⠀│⠀ ⠀└── Label (23 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.
- the files "Terminus.hex" and "TerminusCore.hex" in the folder "Fonts"
- 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 lacks native boot screen support
➊ 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) unless boot times become too long (experiment) 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 (experiment) GopBurstMode true true is recommended to accelerate preboot video but it can break booting (experiment) ProvideConsoleGop false false is recommended only if your Mac has native boot screen support (see Appendix) 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. Not all changes are necessary. They depend on your particular setup. Make sure to carefully read through all the possibilities to decide. Once you have made the proper changes, you'll be able to install, run, and update macOS Catalina, Big Sur or Monterey on your Mac.
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. If your workflow is triggering 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>
Place patch here,
replacing all instances of
<key>MaxKernel</key>
<string>21.5.0</string>
by
<key>MaxKernel</key>
<string>21.6.0</string>
</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. One option requires enabling the CPUID VMM flag. If you have chosen this option after reading the macOS section below, this is the change you want to make:
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>
⚠️ It is important to enable the VMM flag only when installing and updating. The reason is that the VMM flag impacts performance and disables power management.
Clean up the NVRAM
If you're setting things up for the first time, then you may currently be using OpenCore to boot Mojave or earlier. In this case, the following change does not apply. Come back once you are running Catalina or later.
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.
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>
Place patch here
</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. Hint: Past incremental update notes are available in the WikiPost History.
1.0.0-1 to 1.0.2-3
Add ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀<key>UEFI</key>
<dict>
⋮
<key>Unload</key>
<array/>
</dict>
Updated components ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀OpenCorePkg Lilu WhateverGreen
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. Note that the procedure can be done from an OC-booted system (booting natively is not required).
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.
Appendix: Native boot screen support
This part of the guide provides instructions for adding EnableGop to your Mac's firmware.
☠️ If performed incorrectly, some the operations in this part of the guide can turn your Mac into a brick! Carefully read through all the instructions first. If you are unsure about something, do not proceed.
Identify your Mac's firmware chip
To complete some of the steps below, you may need to know the part number of your Mac's firmware chip.
Firmware chip location Part number: SST25VF032B
Possible part numbers include SST25VF032B, MX25L3205D, and MX25L3206E.
Boot natively without SIP
✓ If you are currently booted through OpenCore, follow one of the possible options in Maintenance > Disabling OpenCore.
You'll need to use macOS 10.9 or 10.11 or later. For 10.11 or later, you'll also need to disable SIP:
➊ Reboot and hold Command-R to enter Recovery. The following command in Terminal also works:
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:
csrutil disable
➌ Reboot
Obtain an image of your Mac's firmware
If you have a backup of your Mac's firmware (ideally a reconstructed image)
✓ Simply save the file to your home folder as "Firmware.bin".
If you don't have a backup of your Mac's firmware
You'll need the following utility:
Component ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ Description ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ What to do ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ROMTool Firmware dumping tool Download ROMTool.zip
⚠️ The password for the zip file is "rom".
✓ Run ROMTool, click "Dump System ROM..." (possibly confirming the part number of your system firmware chip), and save the file to your home folder as "Firmware.bin".
Add EnableGOP
You'll need the following driver and utility:
Component ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ Description ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ What to do ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀OpenCorePkg EnableGop driver Download the latest RELEASE version DXEInject Driver injection tool Download DXEInject.zip
➊ Open OpenCorePkg and navigate to Utilities/EnableGOP. There, you will find the file "EnableGop.ffs". Copy this file to your home folder.
⚠️ Another possibility is "EnableGopDirect.ffs". Use this file instead if you've determined that your graphics card requires DirectGopRendering in OpenCore (see Basic setup).
➋ Copy the executable "DXEInject" to your home folder.
➌ In Terminal, enter the following command:
xattr -c DXEInject
➍ Add EnableGop to your Mac's firmware image by entering
./DXEInject Firmware.bin GopFirmware.bin EnableGop.ffs
A new file "GopFirmware.bin" will appear in your home folder.
➎ Verify the size of the new file before continuing (Command-click the file and choose "Get Info").
The size should be 4194304 bytes.
Flash the new firmware image
If you don't already have it, you'll need the following utility:
Component ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ Description ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ What to do ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ROMTool Firmware flashing tool Download ROMTool.zip
⚠️ The password for the zip file is "rom".
➊ Shutdown your Mac.
➋ Now enter Firmware Programming Mode by pressing and holding the power button.
After a few seconds of holding the power button, the status indicator light will flash rapidly and you will hear a long tone.
⚠️ Note that certain hardware (some USB 3.0 and SATA PCIe cards) can prevent entering this mode.
➌ Release the power button.
Your Mac will finish booting up.
➍ Run ROMTool, click "Flash System ROM..." (possibly confirming the part number of your Mac's firmware chip), and select "GopFirmware.bin" from your home folder.
With the flashing process complete, you can now delete ROMTool.
➎ Now shutdown your Mac.
The next time you start your Mac, it should have native boot screen support. To re-enable OpenCore, see Basic setup > First boot.
Attachments
Last edited: