Modern OpenCore configurations rely on a foundational stack of kernel extensions and plugins to inject SMC emulation, hardware graphics routing, native audio codecs, and NVMe power management. This reference details each core plugin, its purpose, its required load sequence, and configuration rules across modern macOS versions including macOS Sequoia, Sonoma, and Ventura.
1. The Lilu Framework & Plugin Architecture
Lilu.kext functions as the central kernel extension patching engine for macOS. Rather than modifying system binaries on disk, Lilu loads in early boot and applies memory patches to Mach-O binaries, system kexts, and the XNU kernel at runtime. All plugins listed below require Lilu to operate.
- Critical Dependency Rule:
Lilu.kextmust always be placed and loaded first in theKernel -> Addarray of yourconfig.plistbefore any Lilu-dependent plugin. - Version Alignment: Always update Lilu and its plugins together prior to performing macOS system upgrades to prevent early boot kernel panics.
2. Core Essential Plugins Breakdown
| Plugin / Kext | Primary Function | Hardware Target | Common Boot-Args / Notes |
|---|---|---|---|
| VirtualSMC.kext | Advanced SMC (System Management Controller) emulator. Replaces legacy FakeSMC. | All x86 PC architectures (Intel & AMD) | Must load immediately after Lilu.kext. Essential for boot. |
| WhateverGreen.kext | Complete GPU patching system (DRM, framebuffer patching, connector mappings, backlight fix). | Intel HD/UHD/Iris iGPUs, AMD Radeon dGPUs (Polaris, Vega, Navi, Big Navi), legacy NVIDIA | agdpmod=pikera (for AMD RX 5000/6000), -wegnoegpu (disables secondary dGPU on laptops). |
| AppleALC.kext | Native high-definition audio routing without modifying AppleHDA. | Realtek ALC, Conexant, IDT, Intel/AMD HD Audio controllers | alcid=layout_id injected via boot-args or layout-id via DeviceProperties. |
| NVMeFix.kext | Non-Apple NVMe power management, APST (Autonomous Power State Transition), and timeout fixes. | Third-party M.2 NVMe SSDs (Samsung, Western Digital, Crucial, Kingston) | Improves battery life on laptops and reduces thermal throttling on desktop NVMe drives. |
| RestrictEvents.kext | Controls system behaviour, unblocks OTA updates, fixes memory warnings on MacPro SMBIOS, and customizes CPU display string. | Intel & AMD CPUs with non-standard core layouts or generic SMBIOS profiles | revpatch=..., revcpu=1 (allows displaying custom CPU name in 'About This Mac'). |
| CpuTopologyRebuild.kext | Heterogeneous core topology scheduler optimizer for Intel Alder Lake, Raptor Lake, and newer hybrid architecture CPUs. | Intel 12th, 13th, and 14th Gen CPUs (Performance & Efficient cores) | Optimizes thread allocation between P-Cores and E-Cores in macOS. |
| FeatureUnlock.kext | Enables Sidecar, Universal Control, AirPlay to Mac, and Night Shift on unsupported models. | Systems with supported Wi-Fi/Bluetooth running older or mixed SMBIOS hardware | Requires compatible Apple/Broadcom Wi-Fi & Bluetooth hardware. |
3. VirtualSMC Plugin Suite
VirtualSMC.kext includes specialized companion plugins that should only be enabled when relevant hardware sensors or features are present:
- SMCProcessor.kext: Enables CPU core temperature and power monitoring for Intel processors. (Do not use on AMD CPUs).
- SMCSuperIO.kext: Enables motherboard fan speed and voltage monitoring through LPC sensor chips (IT87xx, Nuvoton NCT67xx, Winbond).
- SMCBatteryManager.kext: Reads laptop battery state and ACPI power levels. Essential for laptops; do not use on desktops.
- SMCLightSensor.kext: Emulates ambient light sensors for laptops with supported ACPI sensors.
- SMCDellSensors.kext: Provides fan and thermal management on specific Dell desktop and laptop systems.
4. Recommended Kernel Load Order (config.plist)
OpenCore loads kernel extensions strictly in the numerical order they appear under Kernel -> Add. An incorrect order causes early panics:
Lilu.kext(Index 0 - Mandatory first position)VirtualSMC.kext(Mandatory second position)WhateverGreen.kextAppleALC.kextNVMeFix.kextRestrictEvents.kextVirtualSMCchild plugins:SMCProcessor.kext,SMCSuperIO.kext,SMCBatteryManager.kext- Networking & Controller kexts (
LucyRTL8125Ethernet.kext,IntelMausi.kext, etc.) - Input & USB kexts (
USBMap.kext/USBToolBox.kext,VoodooPS2Controller.kext,VoodooI2C.kext)
5. Verification and Diagnostic Procedures
To ensure all core plugins load properly and function without conflicts:
- Validate config.plist: Always execute
ocvalidate /path/to/config.plistafter any kext addition or modification. - Verbose Logging: Keep boot-args
-v keepsyms=1 debug=0x100active while configuring new plugins to capture panics. - Lilu Debugging: Add
-liludbgallor-wegdbgto obtain detailed kernel log traces in the OpenCore log. - Safe USB Backup: Always keep a validated, bootable copy of your previous working EFI on a FAT32 USB drive before applying plugin updates.
Reliable Starting Points
- Acidanthera GitHub Organization — Official source repositories, releases, and issue trackers.
- Dortania OpenCore Install Guide — Platform-specific baseline configurations and hardware trees.
Editorial Note
Only install plugins matching your specific hardware components. Unnecessary kexts add overhead to early kernel initialization and increase the risk of sleep/wake instability.
For broader troubleshooting and hardware verification, consult the FAQ or use the Spec Checker.