ACPI patches are one of the most hardware-specific parts of an OpenCore EFI. OpCore Simplify automates the selection process by analyzing your hardware report — including CPU codename, platform type, detected PCI devices, and motherboard name — and choosing the appropriate patches automatically. You can then review and adjust the selection before building your EFI.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/lzhoang2801/OpCore-Simplify/llms.txt
Use this file to discover all available pages before exploring further.
How ACPI Patches Work in OpenCore
In OpenCore, ACPI customization is done through Secondary System Description Tables (SSDTs). These are compiled ASL (ACPI Source Language) files placed inEFI/OC/ACPI/ and referenced in config.plist under ACPI → Add. Each entry specifies the filename and whether it is enabled.
OpCore Simplify generates SSDTs programmatically using logic ported from SSDTTime by CorpNewt as well as custom generators. When DSDT/ACPI tables are loaded (by dragging in your dumped ACPI folder), the tool can perform deeper analysis, such as detecting embedded controller fields, IRQ conflicts, and GPIO availability. Without loaded ACPI tables, a subset of patches are still generated based solely on the hardware report.
ACPI tables must be loaded for patches that require DSDT analysis — such as BATP, FixHPET, RTCAWAC, GPI0, and XOSI. The tool will prompt you to provide your dumped ACPI folder when these patches are needed.
Auto-Selection Logic
When you proceed through the main menu, OpCore Simplify callsselect_acpi_patches(), which checks conditions in your hardware report and marks each relevant patch as enabled. The key conditions are:
- Platform (Laptop/Desktop): Laptop systems automatically receive ALS, PNLF, BATP, and XOSI.
- CPU codename: Sandy Bridge / Ivy Bridge systems receive
PM (Legacy)instead of PLUG; HEDT platforms receive APIC and UNC. - Manufacturer (Intel/AMD): Intel systems get BUS0; AMD systems get RTCAWAC and USB Reset.
- Chipset generation: PMC is added for 300-series boards; RCSP for recent Intel chipsets; RTC0 for X299 / X99.
- Detected devices: I2C input devices trigger GPI0; ACPI-only network adapters trigger RMNE; Yoga WMI devices trigger WMIS; HP boards trigger CMOS; mismatched IMEI IDs trigger IMEI.
- Disabled PCI devices: If any unsupported device (e.g., NVIDIA GPU on Monterey+, unsupported Wi-Fi card) is flagged for disabling, the
Disable Devicespatch is included.
DSDT Pre-Patches
Before disassembling a DSDT, OpCore Simplify checks whether any known vendor-specific binary patches are required to make the DSDT decompile cleanly. These pre-patches fix duplicate method and device definitions that causeiasl to refuse decompilation:
| Pre-Patch | Comment | Affected Vendor |
|---|---|---|
GPP7 duplicate _PRW methods | GPP7._PRW renamed to XPRW | Gigabyte |
GPP7 duplicate UP00 devices | GPP7.UP00 renamed to UPXX | Gigabyte |
GPP6 duplicate _PRW methods | GPP6._PRW renamed to XPRW | ASRock |
GPP1 duplicate PTXH devices | GPP1.PTXH renamed to XTXH | MSI |
Available ACPI Patches
The following patches are defined inScripts/datasets/acpi_patch_data.py. Each patch maps to a generator function in acpi_guru.py that produces one or more SSDTs and, where needed, binary Find/Replace patches for config.plist.
| Patch Name | Description |
|---|---|
| ALS | Fake or enable Ambient Light Sensor device for storing the current brightness / auto-brightness level |
| APIC | Avoid kernel panic by pointing the first CPU entry to an active CPU on HEDT systems |
| BATP | Enables displaying the battery percentage on laptops |
| BUS0 | Add a System Management Bus device to fix AppleSMBus issues |
| Disable Devices | Disable unsupported PCI devices such as the GPU, Wi-Fi card, and SD card reader |
| FakeEC | OS-Aware Fake Embedded Controller (by CorpNewt) — creates a fake EC device when macOS expects one |
| RCSP | Remove conditional ACPI scope declaration (needed on recent Intel chipsets) |
| CMOS | Fix HP Real-Time Clock Power Loss (005) Post Error |
| FixHPET | Patch Out IRQ Conflicts (by CorpNewt) — removes conflicting IRQ entries (IRQs 0, 2, 8, 11) from PIC, TMR, and RTC devices |
| GPI0 | Enable GPIO device for I2C TouchPads to function properly |
| IMEI | Creates a fake IMEI device to ensure Intel iGPU acceleration functions properly |
| MCHC | Add a Memory Controller Hub Controller device to fix AppleSMBus |
| PMC | Add a PMCR device to enable NVRAM support for 300-series mainboards |
| PM (Legacy) | Block CpuPm and Cpu0Ist ACPI tables to avoid panics on Intel Ivy Bridge and older CPUs |
| PLUG | Redefines CPU objects as Processor and sets plugin-type = 1 (by CorpNewt) — enables XCPM CPU power management |
| PNLF | Defines a PNLF device to enable backlight controls on laptops |
| RMNE | Creates a Null Ethernet device to allow macOS system access to iServices when no native Ethernet is present |
| RTC0 | Creates a new RTC device to resolve PCI Configuration issues on HEDT systems (X299 / X99) |
| RTCAWAC | Context-Aware AWAC Disable and RTC Enable/Fake/Range Fix (by CorpNewt) |
| PRW | Fix sleep state values in _PRW methods to prevent immediate wake in macOS |
| Surface Patch | Special patch for all Surface Pro / Book / Laptop hardware |
| UNC | Disables unused uncore bridges to prevent kernel panic on HEDT systems |
| USB Reset | Disable USB Hub devices (RHUB/HUBN/URTH) to manually rebuild the ports — used on AMD and recent Intel platforms |
| USBX | Creates a USBX device to inject USB power properties |
| WMIS | Fixes ThermalZone WQBI method that forgets to return a result on certain Yoga/ThinkPad models |
| XOSI | Spoofs the operating system to Windows, enabling devices locked behind non-Windows _OSI checks in macOS |
Patches marked as auto-selected by the tool reflect well-tested defaults for your hardware profile. Disabling them without understanding the consequences may cause boot failures, missing features, or kernel panics.
During USB port analysis, the tool treats the device names
XHC1, EHC1, EHC2, and PXSX as illegal — these names indicate non-compliant ACPI identifiers that must be renamed before port mapping. The illegal_names list ('XHC1', 'EHC1', 'EHC2', 'PXSX') is used when generating USB-related patches and reports.Customizing ACPI Patch Selection
You can manually review and toggle individual patches at any time before building the EFI.Open the customization menu
From the main menu, enter option 3 — “Customize ACPI Patches”. The tool displays the full list of patches with checkboxes showing their current state.
Review auto-selected patches
Patches that are currently enabled are shown in green with a
[*] checkbox. Disabled patches show [ ]. Each entry lists the patch name and a short description.Toggle patches
Enter the index number of the patch you want to toggle. You can enter multiple indices separated by commas — for example,
3, 7, 12 — to toggle several patches at once.