- Supported version: 0.5.9
This section is for gathering miscellaneous files for booting macOS, we do expect you to know your hardware well before starting and hopefully made a Hackintosh before as we won't be deep diving in here.
What's the best way to figure out if my hardware is supported?
See the supported hardware section for some better insight into what macOS requires to boot, hardware support between Clover and OpenCore are quite similar.
These are the drivers used by OpenCore, for the majority of systems you only need 2 .efi drivers to get up and running:
ApfsDriverLoader.efiNeeded for seeing APFS volumes(ie. macOS).- As of OpenCore 0.5.8, this driver is built in and configured via config.plist -> UEFI -> APFS
- HfsPlus.efi
- Needed for seeing HFS volumes(ie. macOS Installers and Recovery partitions/images). Do not mix other HFS drivers
- OpenRuntime.efi
- Replacement for AptioMemoryFix.efi, used as an extension for OpenCore to help with patching boot.efi for NVRAM fixes and better memory management.
For legacy users:
- OpenUsbKbDxe.efi
- Used for OpenCore picker on legacy systems running DuetPkg, not recommended and even harmful on UEFI(Ivy Bridge and newer)
- NvmExpressDxe.efi
- Used for Haswell and older when no NVMe driver is built into the firmware, not needed if you're not using an NVMe drive
- XhciDxe.efi
- Used for Sandy Bridge and older when no XHCI driver is built into the firmware, not needed if you're not using a USB 3.0 expansion card
- HfsPlusLegacy.efi
- Legacy variant of HfsPlus, used for systems that lack RDRAND instruction support. This is generally seen on Sandy Bridge and older
For a full list of compatible drivers, see 11.2 Properties in the OpenCorePkg Docs. These files will go in your Drivers folder in your EFI
A kext is a kernel extension, you can think of this as a driver for macOS, these files will go into the Kexts folder in your EFI.
- Windows and Linux note: Kexts will look like normal folders in your OS, double check that the folder you are installing has a .kext extension visible(and do not add one manually if it's missing)
All kext listed below can be found pre-compiled in the Kext Repo. Kexts here are compiled each time there's a new commit.
Must haves:
- VirtualSMC
- Emulates the SMC chip found on real macs, without this macOS will not boot
- Alternative is FakeSMC which can have better or worse support, most commonly used on legacy hardware.
- Lilu
- A kext to patch many processes, required for AppleALC, WhateverGreen, VirtualSMC and many other kexts. Without Lilu, they will not work
VirtualSMC Plugins:
- SMCProcessor.kext
- Used for monitoring CPU temperature, doesn't work on AMD CPU based systems
- SMCSuperIO.kext
- Used for monitoring fan speed, doesn't work on AMD CPU based systems
- SMCLightSensor.kext
- Used for the ambient light sensor on laptops, desktops can ignore
- Do not use if you don't have an ambient light sensor, can cause issues otherwise
- SMCBatteryManager.kext
- Used for measuring battery readouts on laptops, desktops can ignore
- Do not use until battery has been properly patched, can cause issues otherwise
Graphics:
- WhateverGreen
- Used for graphics patching DRM, boardID, framebuffer fixes, etc, all GPUs benefit from this kext.
- Note the SSDT-PNLF.dsl file included is only required for laptops and AIOs, see * Getting started with ACPI for more info
Audio:
- AppleALC
- Used for AppleHDA patching, used for giving you onboard audio. AMD 15h/16h may have issues with this and Ryzen/Threadripper systems rarely have mic support
Ethernet:
- IntelMausi
- Required for Intel NICs, chipsets that are based off of I211 will need the SmallTreeIntel82576 kext
- SmallTreeIntel82576 kext
- Required for I211 NICs, based off of the SmallTree kext but patched to support I211
- Required for most AMD boards running Intel NICs
- AtherosE2200Ethernet
- Required for Atheros and Killer NICs
- RealtekRTL8111
- For Realtek's Gigabit Ethernet
- LucyRTL8125Ethernet
- For Realtek's 2.5Gb Ethernet
USB:
-
- Used for injecting Intel USB controllers on systems without defined USB ports in ACPI
- Not needed on Skylake and newer(AsRock is dumb and does need this)
- Does not work on AMD CPUs at all
-
- Needed for non-native USB controllers
- AMD CPU based systems don't need this
- Common chipsets needing this:
- H370
- B360
- H310
- Z390(Not needed on Mojave and newer)
- X79
- X99
- AsRock boards(On Intel motherboards specifically, basically all of their boards)
WiFi and Bluetooth:
- AirportBrcmFixup
- Used for patching non-Apple Broadcom cards, will not work on Intel, Killer, Realtek, etc
- BrcmPatchRAM
- Used for uploading firmware on Broadcom Bluetooth chipset, required for all non-Apple/Fenvi Airport cards.
- To be paired with BrcmFirmwareData.kext
- BrcmPatchRAM3 for 10.14+ (must be paired with BrcmBluetoothInjector)
- BrcmPatchRAM2 for 10.11-10.14
- BrcmPatchRAM for 10.10 or older
The order in Kernel -> Add
should be:
- BrcmBluetoothInjector
- BrcmFirmwareData
- BrcmPatchRAM3
AMD CPU Specific kexts:
NullCPUPowerManagment- We have a much better solution known as
DummyPowerManagement
found underKernel -> Quirks
in your config.plist, this will be covered in a later page
- We have a much better solution known as
- XLNCUSBFIX
- USB fix for AMD FX systems, not recommended for Ryzen
- VoodooHDA
- Audio for FX systems and front panel Mic+Audio support for Ryzen system, do not mix with AppleALC. Audio quality is noticeably worse than AppleALC on Zen CPUs
Extras:
- AppleMCEReporterDisabler
- Useful starting with Catalina to disable the AppleMCEReporter kext which will cause kernel panics on AMD CPUs and dual-socket systems
- Affected SMBIOS:
- MacPro6,1
- MacPro7,1
- iMacPro1,1
- VoodooTSCSync
- Needed for syncing TSC on some of Intel's HEDT and server motherboards, without this macOS may be extremely slow or even unbootable. Skylake-X should use TSCAdjustReset instead
- TSCAdjustReset
- On Skylake-X, many firmwares including Asus and EVGA won't write the TSC to all cores. So we'll need to reset the TSC on cold boot and wake. Compiled version can be found here: TSCAdjustReset.kext. Note that you must open up the kext(ShowPackageContents in finder,
Contents -> Info.plist
) and change the Info.plist ->IOKitPersonalities -> IOPropertyMatch -> IOCPUNumber
to the number of CPU threads you have starting from0
(i9 7980xe 18 core would be35
as it has 36 threads total)
- On Skylake-X, many firmwares including Asus and EVGA won't write the TSC to all cores. So we'll need to reset the TSC on cold boot and wake. Compiled version can be found here: TSCAdjustReset.kext. Note that you must open up the kext(ShowPackageContents in finder,
- NVMeFix
- Used for fixing power management and initialization on non-Apple NVMe, requires macOS 10.14 or newer
Laptop Specifics:
-
- Required for systems with PS2 keyboards and trackpads
- Trackpad users should also pair this with VoodooInput(This must come before VoodooPS2 in your config.plist)
-
- Used for fixing I2C devices, found with some fancier touchpads and touchscreen machines
- To be paired with a plugin:
- VoodooI2CHID - Implements the Microsoft HID device specification.
- VoodooI2CElan - Implements support for Elan proprietary devices. (does not work on ELAN1200+, use the HID instead)
- VoodooI2CSynaptics - Implements support for Synaptic's proprietary devices.
- VoodooI2CFTE - Implements support for the FTE1001 touchpad.
- VoodooI2CUPDDEngine - Implements Touchbase driver support.
To figure out what kind of keyboard and trackpad you have, check Device Manager in Windows or dmesg |grep input
in Linux
- NoTouchID
- Recommended for SMBIOS that include a TouchID sensor to fix auth issues
Please refer to Kexts.md for a full list of supported kexts
So you see all those SSDTs in the AcpiSamples folder and wonder whether you need any of them. For us, we will be going over what SSDTs you need in your specific ACPI section of the config.plist, as the SSDTs you need are platform specific. With some even system specific where they need to be configured and you can easily get lost if I give you a list of SSDTs to choose from now.
Getting started with ACPI has an extended section on SSDTs including compiling them on different platforms.
A quick TL;DR of needed SSDTs(This is source code, you will have to compile them into a .aml file):
| SSDT | IvyBridge | Haswell/Broadwell | Skylake | KabyLake | CoffeeLake | CometLake | AMD(15/16/17h) | | :--- | :--- | :--- | :--- | :--- | :--- | :--- | | CPU | CPU-PM(Run in Post-Install) | SSDT-PLUG | SSDT-PLUG | SSDT-PLUG | SSDT-PLUG | SSDT-PLUG | N/A | | EC | SSDT-EC | SSDT-EC | SSDT-EC-USBX | SSDT-EC-USBX | SSDT-EC-USBX | SSDT-EC-USBX | SSDT-EC-USBX | | AWAC | N/A | N/A | N/A | N/A | SSDT-AWAC | SSDT-AWAC | N/A | | NVRAM | N/A | N/A | N/A | N/A | SSDT-PMC | N/A | N/A | | USB | N/A | N/A | N/A | N/A | N/A | SSDT-RHUB | N/A |
| SSDT | IvyBridge-E | Haswell-E | Broadwell-E | Skylake-X | | :--- | :--- | :--- | :--- | :--- | :--- | :--- | | CPU | CPU-PM(Run in Post-Install) | SSDT-PLUG | SSDT-PLUG | SSDT-PLUG | | EC | SSDT-EC | SSDT-EC | SSDT-EC | SSDT-EC-USBX | | AWAC | N/A | N/A | N/A | SSDT-AWAC |
... head to Getting Started With ACPI.