Skip to main content

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.

ACPI patches create or modify ACPI tables — primarily System Secondary Description Tables (SSDTs) — that fix hardware detection, power management, sleep and wake behaviour, backlight control, and a range of chipset-specific quirks. OpCore Simplify evaluates your hardware report and automatically selects every relevant patch before building the EFI. You can review and adjust the selection in the ACPI Patches customization screen before the build runs.
Several patches (BATP, PLUG, GPI0, PRW, and others that modify existing ACPI namespace objects) require a full ACPI dump from your system. If the tool detects that these patches are needed but no ACPI dump was provided, it will prompt you to supply one. The easiest way to obtain an ACPI dump is to export your hardware report with Hardware Sniffer while the ACPI dump option is enabled.

All ACPI Patches

The table below lists every PatchInfo entry defined in the tool’s patch dataset, along with the function each patch serves and the conditions under which it is automatically applied.
Patch NameDescriptionWhen Applied
ALSFake or enable Ambient Light Sensor device for storing the current brightness / auto-brightness levelLaptops with an ambient light sensor device in the ACPI table, or where the existing ALS node needs to be enabled
APICAvoid kernel panic by pointing the first CPU entry to an active CPU on HEDT systemsIntel HEDT platforms (X99, X299, Cascade Lake-X/W) where the first APIC processor entry may point to a disabled CPU
BATPEnables displaying the battery percentage on laptopsPortable systems (laptops and all-in-ones) — requires ACPI dump
BUS0Add a System Management Bus device to fix AppleSMBus issuesSystems missing a BUS0 / SBUS device in the ACPI namespace
Disable DevicesDisable unsupported PCI devices such as the GPU, Wi-Fi card, and SD card readerApplied for each device that the compatibility checker marks as unsupported, using the Optimus/Bumblebee method or the disable-gpu device property
FakeECOS-Aware Fake EC (by CorpNewt)Desktop systems that lack a proper Embedded Controller definition; prevents macOS from stalling at boot
RCSPRemove conditional ACPI scope declarationSystems where the DSDT contains a conditional Scope declaration that confuses macOS ACPI parser
CMOSFix HP Real-Time Clock Power Loss (005) Post ErrorHP systems that display a “005 - Real-Time Clock Power Loss” POST error due to macOS writing to RTC memory
FixHPETPatch Out IRQ Conflicts (by CorpNewt)Systems with IRQ conflicts on the HPET, RTC, or PIC devices — commonly required on older Intel platforms
GPI0Enable GPIO device for I2C TouchPads to function properlyLaptops with I2C touchpad (VoodooI2C); requires ACPI dump to check that the GPI0 device exists and is disabled
IMEICreates a fake IMEI device to ensure Intel iGPU acceleration functions properlyIntel Sandy Bridge / Ivy Bridge systems where the Management Engine Interface device is missing from DSDT
MCHCAdd a Memory Controller Hub Controller device to fix AppleSMBusSystems missing an MCHC device; required for proper AppleSMBus operation on many Intel platforms
PMCAdd a PMCR device to enable NVRAM support for 300-series mainboardsIntel 300-series (Coffee Lake) boards that lack a PMCR device; required for native NVRAM
PM (Legacy)Block CpuPm and Cpu0Ist ACPI tables to avoid panics for Intel Ivy Bridge and older CPUsIntel Sandy Bridge and Ivy Bridge systems running macOS Ventura or later, where the old CpuPm/Cpu0Ist tables cause boot panics
PLUGRedefines CPU objects as Processor and sets plugin-type = 1 (by CorpNewt)Intel Haswell (4th Gen) and newer desktop/laptop CPUs to enable native CPU power management via X86PlatformPlugin — requires ACPI dump
PNLFDefines a PNLF device to enable backlight controls on laptopsLaptops with Intel iGPU or AMD iGPU where screen brightness control is needed
RMNECreates a Null Ethernet to allow macOS system access to iServicesSystems with no supported Ethernet NIC; pairs with the NullEthernet kext to provide a stable MAC address for iServices
RTC0Creates a new RTC device to resolve PCI Configuration issues on HEDT systemsIntel HEDT platforms (X99, X299) where the standard RTC device causes PCI configuration conflicts
RTCAWACContext-Aware AWAC Disable and RTC Enable/Fake/Range Fix (by CorpNewt)Intel 300-series and newer boards that use an AWAC system clock instead of the legacy RTC; disables AWAC and re-enables the compatible RTC device
PRWFix sleep state values in _PRW methods to prevent immediate wake in macOSAny system where _PRW methods return a sleep state value that causes macOS to wake immediately after sleeping (GPRW, UPRW, and HP-specific variants)
Surface PatchSpecial patch for all Surface Pro / Book / Laptop hardwareDetected Microsoft Surface devices — integrates with the BigSurface kext
UNCDisables unused uncore bridges to prevent kernel panic on HEDT systemsIntel HEDT platforms where unused UNC0/UNC1 uncore bridge devices trigger kernel panics during boot
USB ResetDisable USB Hub devices to manually rebuild the portsApplied when USB mapping requires a clean slate; disables existing hub definitions so USBToolBox can remap correctly
USBXCreates a USBX device to inject USB power propertiesIntel Skylake (6th Gen) and newer systems that lack a USBX device; provides correct USB power values for macOS
WMISCertain models forget to return result from ThermalZoneSystems where the ACPI ThermalZone methods do not return a value, causing thermal management issues
XOSISpoofs the operating system to Windows, enabling devices locked behind non-Windows systems on macOSSystems where ACPI devices (especially I2C controllers and GPIO) are gated behind _OSI("Windows …") checks

DSDT Pre-Patches

Before generating SSDTs, OpCore Simplify applies binary patches directly to the DSDT to repair corruption or duplication that would prevent proper SSDT generation. These run silently in the background and are not user-configurable.
Board VendorIssue FixedPre-Patch Applied
GigabyteDuplicate _PRW methods under GPP7 scopeBinary rename removes the conflicting _PRW definition
GigabyteDuplicate UP00 device definitions under GPP7 scopeBinary rename deduplicates the UP00 device
ASRockDuplicate _PRW methods under GPP6 scopeBinary rename removes the conflicting _PRW definition
MSIDuplicate PTXH device definitions under GPP1 scopeBinary rename deduplicates the PTXH device
These pre-patches are board-vendor-specific workarounds for ACPI authoring bugs that are common enough across product lines to be included as defaults. They have no effect on boards from other vendors.

IRQ Conflicts Fixed by FixHPET

The FixHPET patch resolves IRQ conflicts by removing problematic IRQ assignments from the HPET, RTC, and PIC devices. The specific IRQ numbers targeted are:
IRQ NumberDeviceWhy It Conflicts
0System TimerReserved by legacy timer; conflicts with HPET in macOS
2PIC CascadeCascaded interrupt controller line; causes HPET routing issues
8RTCReal-time clock interrupt; conflicts with macOS RTC driver
11PCI IRQShared legacy PCI interrupt; causes audio and USB conflicts on older platforms

Illegal Device Name Renames

macOS ACPI parser enforces a stricter naming convention than Windows. OpCore Simplify identifies the following device names as illegal and patches them to names that macOS accepts correctly. The specific rename targets are determined at patch-generation time based on your DSDT content.
Illegal NameReason
XHC1macOS USB stack expects the extensible host controller to be named XHC, not XHC1
EHC1Non-standard EHCI controller name that confuses the macOS USB driver
EHC2Non-standard second EHCI controller name that confuses the macOS USB driver
PXSXGeneric PCIe slot placeholder name that macOS does not handle correctly for USB and other PCI devices

ACPI Dump Requirement

Patches that read or modify existing DSDT content — rather than purely adding new devices — cannot be generated correctly without a live ACPI dump from the target machine. Patches that require an ACPI dump include:
  • BATP — reads battery EC fields from the DSDT to generate the correct EC patch
  • PLUG — locates CPU processor objects to inject plugin-type
  • GPI0 — checks whether the GPIO device exists and whether it needs to be enabled
  • PRW — scans _PRW methods throughout the DSDT to patch sleep state return values
  • Any patch that modifies device _STA return values based on existing ACPI namespace structure
If you did not include an ACPI dump when exporting your hardware report, the tool will display a prompt asking you to provide the dump directory before continuing. See Hardware Report for instructions on exporting both the report and ACPI dump together.

Build docs developers (and LLMs) love