# Gathering files

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 Hardware Limitations page for some better insight into what macOS requires to boot, hardware support between Clover and OpenCore are quite similar.

What are some ways to figure out what hardware I have?

See the page before: Finding your hardware

# Firmware Drivers

Firmware drivers are drivers used by OpenCore in the UEFI environment. They're mainly required to boot a machine, either by extending OpenCore's patching ability or showing you different types of drives in the OpenCore picker(ie. HFS drives).

  • Location Note: These files must be placed under EFI/OC/Drivers/

# Universal

Required Drivers

For the majority of systems, you'll only need 2 .efi drivers to get up and running:

  • HfsPlus.efi (opens new window)(Required)
    • Needed for seeing HFS volumes(ie. macOS Installers and Recovery partitions/images). Do not mix other HFS drivers
    • For Sandy Bridge and older(as well as low end Ivy Bridge(i3 and Celerons), see the legacy section below
  • OpenRuntime.efi (opens new window)(Required)
    • Replacement for AptioMemoryFix.efi (opens new window), used as an extension for OpenCore to help with patching boot.efi for NVRAM fixes and better memory management.
    • Reminder this was bundled in OpenCorePkg we downloaded earlier

# Legacy users

In addition to the above, if your hardware doesn't support UEFI(2011 and older era) then you'll need the following. Pay close attention to each entry as you may not need all 4:

These files will go in your Drivers folder in your EFI

32-Bit specifics

For those with 32-Bit CPUs, you'll want to grab these drivers as well

# Kexts

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).
    • If any kext also includes a .dSYM file, you can simply delete it. They're only for debugging purposes.
  • Location Note: These files must be placed under EFI/OC/Kexts/.

Most kexts listed below can be found pre-compiled in the build repo (opens new window). Kexts here are compiled each time there's a new commit.

# Must haves

Required Kexts

Without the below 2, no system is bootable:

  • Lilu (opens new window)(Required)
    • A kext to patch many processes, required for AppleALC, WhateverGreen, VirtualSMC and many other kexts. Without Lilu, they will not work.
    • Note that while Lilu supports as early as Mac OS X 10.4, many plugins only work on newer versions.
  • VirtualSMC (opens new window)(Required)
    • Emulates the SMC chip found on real macs, without this macOS will not boot
    • Requires Mac OS X 10.4 or newer

# VirtualSMC Plugins

The below plugins are not required to boot, and merely add extra functionality to the system like hardware monitoring. Unless otherwise specified, these plugins come with VirtualSMC

TIP

While VirtualSMC supports 10.4, plugins may require newer versions.

  • SMCProcessor.kext
    • Used for monitoring Intel CPU temperature
    • Not for AMD CPU based systems
    • Requires Mac OS X 10.7 or newer
  • SMCAMDProcessor (opens new window)
    • Used for monitoring CPU temperature on AMD Zen-based systems
    • Under active development, potentially unstable
    • Requires AMDRyzenCPUPowerManagement (see AMD CPU Specific Kexts)
    • Requires macOS 10.13 or newer
  • SMCRadeonSensors (opens new window)
    • Used for monitoring GPU temperature on AMD GPU systems
    • Requires macOS 10.14 or newer
  • SMCSuperIO.kext
    • Used for monitoring fan speed
    • Not for AMD CPU based systems
    • Requires Mac OS X 10.6 or newer
  • SMCLightSensor.kext
    • Used for the ambient light sensor on laptops
    • Do not use if you don't have an ambient light sensor (ie. desktops), can cause issues otherwise
    • Requires Mac OS X 10.6 or newer
  • SMCBatteryManager.kext
    • Used for measuring battery readouts on laptops
    • Do not use on desktops
    • Requires Mac OS X 10.4 or newer
  • SMCDellSensors.kext
    • Allows for finer monitoring and control of the fans on Dell machines supporting System Management Mode (SMM)
    • Do not use if you do not have a supported Dell machine, mainly Dell laptops can benefit from this kext
    • Requires Mac OS X 10.7 or newer

# Graphics

# Audio

  • AppleALC (opens new window)
    • Used for AppleHDA patching, allowing support for the majority of on-board sound controllers
    • AppleALCU.kext is a pared down version of AppleALC that only supports digital audio - but you can still use AppleALC.kext on digital audio-only systems
    • AMD 15h/16h may have issues with AppleALC and Ryzen/Threadripper systems rarely have mic support
    • Requires OS X 10.4 or newer
Legacy Audio Kext

For those who plan to boot 10.7 and older may want to opt for these kexts instead:

# Ethernet

Here we're going to assume you know what ethernet card your system has, reminder that product spec pages will most likely list the type of network card.

  • IntelMausi (opens new window)
    • Required for the majority of Intel NICs, chipsets that are based off of I211 will need the SmallTreeIntel82576 kext
    • Intel's 82578, 82579, I217, I218 and I219 NICs are officially supported
    • Requires OS X 10.9 or newer, 10.6-10.8 users can use IntelSnowMausi instead for older OSes
  • AppleIGB (opens new window)
    • Required for I211 NICs running on macOS Monterey and above
    • Might have instability issues on some NICs, recommended to stay on Big Sur and use SmallTree
    • Required for most AMD boards running Intel NICs
    • Requires macOS 12 and above
  • SmallTreeIntel82576 (opens new window)
    • Required for I211 NICs running on macOS versions up to Big Sur, based off of the SmallTree kext but patched to support I211 (doesn't work on macOS 12 Monterey or above)
    • Required for most AMD boards running Intel NICs
    • Requires OS X 10.9-12(v1.0.6), macOS 10.13-14(v1.2.5), macOS 10.15+(v1.3.0)
  • AtherosE2200Ethernet (opens new window)
    • Required for Atheros and Killer NICs
    • Requires OS X 10.8 or newer
    • Note: Atheros Killer E2500 models are actually Realtek based, for these systems please use RealtekRTL8111 (opens new window) instead
  • RealtekRTL8111 (opens new window)
    • For Realtek's Gigabit Ethernet
    • Requires OS X 10.8 and up for versions v2.2.0 and below, macOS 10.12 and up for version v2.2.2, macOS 10.14 and up for versions v2.3.0 and up
    • NOTE: Sometimes the latest version of the kext might not work properly with your Ethernet. If you see this issue, try older versions.
  • LucyRTL8125Ethernet (opens new window)
    • For Realtek's 2.5Gb Ethernet
    • Requires macOS 10.15 or newer
  • For Intel's I225-V NICs, patches are mentioned in the desktop Comet Lake DeviceProperties section.
    • For macOS 13 and above, the kext supporting I225-V NICs was dropped and replaced with a DriverKit DEXT instead. This DEXT requires working VT-d, so we recommended reusing the older kext: AppleIntelI210Ethernet
      • Monterey and older need not concern
    • Requires macOS 10.15 or newer
  • For Intel's I350 NICs, patches are mentioned in the HEDT Sandy and Ivy Bridge-E DeviceProperties section. No kext is required.
    • Requires OS X 10.10 or newer
Legacy Ethernet Kexts

Relevant for either legacy macOS installs or older PC hardware.

And also keep in mind certain NICs are actually natively supported in macOS:

Native Ethernet Controllers

# Aquantia Series

# AppleEthernetAquantiaAqtion.kext
pci1d6a,1    = Aquantia AQC107
pci1d6a,d107 = Aquantia AQC107
pci1d6a,7b1  = Aquantia AQC107
pci1d6a,80b1 = Aquantia AQC107
pci1d6a,87b1 = Aquantia AQC107
pci1d6a,88b1 = Aquantia AQC107
pci1d6a,89b1 = Aquantia AQC107
pci1d6a,91b1 = Aquantia AQC107
pci1d6a,92b1 = Aquantia AQC107
pci1d6a,c0   = Aquantia AQC113
pci1d6a,4c0  = Aquantia AQC113

Note: Due to some outdated firmware shipped on many Aquantia NICs, you may need to update the firmware in Linux/Windows to ensure it's macOS-compatible.

# Intel Series

# AppleIntel8254XEthernet.kext
pci8086,1096 = Intel 80003ES2LAN
pci8086,100f = Intel 82545EM
pci8086,105e = Intel 82571EB/82571GB

# AppleIntelI210Ethernet.kext
pci8086,1533 = Intel I210
pci8086,15f2 = Intel I225LM (Added in macOS 10.15)

# Intel82574L.kext
pci8086,104b = Intel 82566DC
pci8086,10f6 = Intel 82574L

# Broadcom Series

# AppleBCM5701Ethernet.kext
pci14e4,1684 = Broadcom BCM5764M
pci14e4,16b0 = Broadcom BCM57761
pci14e4,16b4 = Broadcom BCM57765
pci14e4,1682 = Broadcom BCM57762
pci14e4,1686 = Broadcom BCM57766

# USB

  • USBToolBox (tool (opens new window) and kext (opens new window))

    • USB mapping tool for Windows and macOS.
    • It is highly advisable to map your USB ports before you install macOS to avoid any port limit issues
    • Features
      • Supports mapping from Windows and macOS (Linux support in progress)
      • Can build a map using either the USBToolBox kext or native Apple kexts (AppleUSBHostMergeProperties)
      • Supports multiple ways of matching
      • Supports companion ports (on Windows)
  • XHCI-unsupported (opens new window)

    • 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 Intel boards (B460/Z490+ boards do not need it however)

# WiFi and Bluetooth

# Non-Native Bluetooth Cards

  • BlueToolFixup (opens new window)
    • Patches the macOS 12+ Bluetooth stack to support third-party cards
    • Needed for all non-native (non-Apple Broadcom, Intel, etc) Bluetooth cards
    • Included in the BrcmPatchRAM zip
    • Do not use on macOS 11 and earlier

# Intel

  • AirportItlwm (opens new window)
    • Adds support for a large variety of Intel wireless cards and works natively in recovery thanks to IO80211Family integration
    • Requires macOS 10.13 or newer and requires Apple's Secure Boot to function correctly
  • Itlwm (opens new window)
    • Alternative to AirportItlwm for systems where Apple's Secure Boot cannot be enabled
    • Requires Heliport (opens new window)
    • It will be treated as an Ethernet card, and you will have to connect to Wi-Fi via Heliport
    • Does not work in macOS recovery
  • IntelBluetoothFirmware (opens new window)
    • Adds Bluetooth support to macOS when paired with an Intel wireless card
    • Use IntelBTPatcher (included) in addition to patch bugs in macOS
    • Requires macOS 10.13 or newer
    • On macOS 10.13 through 11, you also need IntelBluetoothInjector (included)
More info on enabling AirportItlwm

To enable AirportItlwm support with OpenCore, you'll need to either:

  • Enable Misc -> Security -> SecureBootModel by either setting it as Default or some other valid value
  • If you cannot enable SecureBootModel, you can still force inject IO80211Family (highly discouraged)
    • Set the following under Kernel -> Force in your config.plist (discussed later in this guide):

# Broadcom

  • AirportBrcmFixup (opens new window)
    • Used for patching non-Apple/non-Fenvi Broadcom cards, will not work on Intel, Killer, Realtek, etc
    • Requires OS X 10.10 or newer
    • For Big Sur see Big Sur Known Issues for extra steps regarding AirPortBrcm4360 drivers.
  • BrcmPatchRAM (opens new window)
    • Used for uploading firmware on Broadcom Bluetooth chipset, required for all non-Apple/non-Fenvi Airport cards.
    • To be paired with BrcmFirmwareData.kext
      • BrcmPatchRAM3 for 10.15+ (must be paired with BrcmBluetoothInjector)
      • BrcmPatchRAM2 for 10.11-10.14
      • BrcmPatchRAM for 10.8-10.10
    • On macOS 10.11 through macOS 11, you also need BrcmBluetoothInjector (included)
BrcmPatchRAM Load order

The order in Kernel -> Add should be:

  1. BrcmBluetoothInjector (if needed)
  2. BrcmFirmwareData
  3. BrcmPatchRAM3 (or BrcmPatchRAM2/BrcmPatchRAM)

BlueToolFixup can be anywhere after Lilu.

However ProperTree will handle this for you, so you need not concern yourself

# AMD CPU Specific kexts

  • XLNCUSBFIX (opens new window)
    • USB fix for AMD FX systems, not recommended for Ryzen
    • Requires macOS 10.13 or newer
  • VoodooHDA (opens new window)
    • 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
    • Requires OS X 10.6 or newer
    • Using this kext on macOS 11.3 and above is not recommended as you need to modify the macOS filesystem and disable SIP
  • AMDRyzenCPUPowerManagement (opens new window)
    • CPU power management for Ryzen systems
    • Under active development, potentially unstable
    • Requires macOS 10.13 or newer

# Extras

  • AppleMCEReporterDisabler (opens new window)
    • Required on macOS 12.3 and later on AMD systems, and on macOS 10.15 and later on dual-socket Intel systems.
    • Affected SMBIOSes:
      • MacPro6,1
      • MacPro7,1
      • iMacPro1,1
  • CpuTscSync (opens new window)
    • Needed for syncing TSC on some of Intel's HEDT and server motherboards, without this macOS may be extremely slow or even unbootable.
    • Does not work on AMD CPUs
    • Requires OS X 10.8 or newer
  • NVMeFix (opens new window)
    • Used for fixing power management and initialization on non-Apple NVMe
    • Requires macOS 10.14 or newer
  • SATA-Unsupported (opens new window)
    • Adds support for a large variety of SATA controllers, mainly relevant for laptops which have issues seeing the SATA drive in macOS. We recommend testing without this first.
    • Big Sur+ Note: CtlnaAHCIPort (opens new window) will need to be used instead due to numerous controllers being dropped from the binary itself
      • Catalina and older need not concern
  • CPUTopologyRebuild (opens new window)
    • An experimental Lilu plugin that optimizes Alder Lake's heterogeneous core configuration. Only for Alder Lake CPUs
  • RestrictEvents (opens new window)
  • EmeraldSDHC (opens new window)
    • macOS kernel extension for eMMC support. Currently only supports eMMC/MMC cards at up to HS200 speeds. This driver is currently a work in progress and may experience poor performance or be nonfunctional on some devices. SD cards are currently not supported at this time.
Legacy SATA Kexts
  • AppleIntelPIIXATA.kext (opens new window)
    • Legacy IDE and ATA kext for older Core 2 Duo/Quad and Pentium 4 systems. Needed for macOS 11 (Big Sur) and newer as this kext was dropped in macOS 10.15 (Catalina)
  • AHCIPortInjector (opens new window)
    • Legacy SATA/AHCI injector, mainly relevant for older machines of the Penryn era
  • ATAPortInjector (opens new window)
    • Legacy ATA injector, mainly relevant for IDE and ATA devices (ie. when no AHCI option is present in the BIOS)
    • Is dependent on AppleIntelPIIXATA.kext, which needs to be included when using macOS 11 (Big Sur) and newer

# Laptop Input

To figure out what kind of keyboard and trackpad you have, check Device Manager in Windows or dmesg | grep -i input in Linux

WARNING

Most laptop keyboards are PS2! You will want to grab VoodooPS2 even if you have an I2C, USB, or SMBus trackpad.

# PS2 Keyboards/Trackpads

# SMBus Trackpads

# I2C/USB HID Devices

  • VoodooI2C (opens new window)
    • Supports macOS 10.11+
    • Attaches to I2C controllers to allow plugins to talk to I2C trackpads
    • USB devices using the below plugins still need VoodooI2C
    • Must be paired with one or more plugins shown below:

VoodooI2C Plugins

Connection type Plugin Notes
Multitouch HID VoodooI2CHID Can be used with I2C/USB Touchscreens and Trackpads
ELAN Proprietary VoodooI2CElan ELAN1200+ require VoodooI2CHID instead
FTE1001 touchpad VoodooI2CFTE
Atmel Multitouch Protocol VoodooI2CAtmelMXT
Synaptics HID VoodooRMI (opens new window) I2C Synaptic Trackpads (Requires VoodooI2C ONLY for I2C mode)
Alps HID AlpsHID (opens new window) Can be used with USB or I2C Alps trackpads. Mostly seen on Dell laptops and some HP EliteBook models

# Misc

Please refer to Kexts.md (opens new window) for a full list of supported kexts

# SSDTs

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 (opens new window) 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):

# Desktop

Platforms CPU EC AWAC NVRAM USB
Penryn N/A SSDT-EC (opens new window) N/A N/A N/A
Lynnfield and Clarkdale
SandyBridge CPU-PM (opens new window) (Run in Post-Install)
Ivy Bridge
Haswell SSDT-PLUG (opens new window)
Broadwell
Skylake SSDT-EC-USBX (opens new window)
Kaby Lake
Coffee Lake SSDT-AWAC (opens new window) SSDT-PMC (opens new window)
Comet Lake N/A SSDT-RHUB (opens new window)
AMD (15/16h) N/A N/A N/A
AMD (17/19h) SSDT-CPUR for B550 and A520 (opens new window)

# High End Desktop

Platforms CPU EC RTC PCI
Nehalem and Westmere N/A SSDT-EC (opens new window) N/A N/A
Sandy Bridge-E SSDT-UNC (opens new window)
Ivy Bridge-E
Haswell-E SSDT-PLUG (opens new window) SSDT-EC-USBX (opens new window) SSDT-RTC0-RANGE (opens new window)
Broadwell-E
Skylake-X N/A

# Laptop

Platforms CPU EC Backlight I2C Trackpad AWAC USB IRQ
Clarksfield and Arrandale N/A SSDT-EC (opens new window) SSDT-PNLF (opens new window) N/A N/A N/A IRQ SSDT (opens new window)
SandyBridge CPU-PM (opens new window) (Run in Post-Install)
Ivy Bridge
Haswell SSDT-PLUG (opens new window) SSDT-GPI0 (opens new window)
Broadwell
Skylake SSDT-EC-USBX (opens new window) N/A
Kaby Lake
Coffee Lake (8th Gen) and Whiskey Lake SSDT-PNLF (opens new window) SSDT-AWAC (opens new window)
Coffee Lake (9th Gen)
Comet Lake
Ice Lake SSDT-RHUB (opens new window)

Continuing:

Platforms NVRAM IMEI
Clarksfield and Arrandale N/A N/A
Sandy Bridge SSDT-IMEI (opens new window)
Ivy Bridge
Haswell N/A
Broadwell
Skylake
Kaby Lake
Coffee Lake (8th Gen) and Whiskey Lake
Coffee Lake (9th Gen) SSDT-PMC (opens new window)
Comet Lake N/A
Ice Lake

# Now with all this done, head to Getting Started With ACPI (opens new window)