How to Fix ACPI Error 226 on macOS Sierra/High Sierra (Z77/Z87, HD 4000/4600)
Learn how to diagnose and fix ACPI Error 226 (psargs-226) on Ivy Bridge and Haswell Hackintosh systems. Covers SSDT renames, DSDT patching, and bootloader config adjustments.
When booting macOS Sierra or High Sierra on a Z77 or Z87 board with integrated HD 4000 / HD 4600 graphics, the kernel log may show a line like ACPI Error: [_SB_.PCI0.IGFX] Namespace lookup failure, AE_NOT_FOUND (20160930/psargs-226) just before the system freezes at the PCI configuration stage. This is ACPI Error 226 — a namespace lookup failure that specifically targets the integrated graphics device path. Unlike the more common ACPI Error 3327, which we covered in a separate guide, Error 226 is tied to a missing or incorrectly named device in the DSDT and often appears on boards where the iGPU is disabled in firmware or whose ACPI tables were extracted from a different BIOS revision.
What Causes ACPI Error 226?
Error 226 is a standard ACPI CA parser error. It means the system can't find a referenced object — typically _SB_.PCI0.IGFX or GFX0 — in the namespace. On Ivy Bridge and Haswell systems, the system’s DSDT defines the integrated GPU under the PCI bus with a name that depends on the vendor’s OEM implementation. If the BIOS is set to use only a discrete GPU, or if the DSDT was patched incorrectly during a previous attempt to enable graphics, the device node might be missing or renamed. macOS's I/O Kit then tries to match the device path from the ACPI tables, fails, and halts the boot.
Common Scenarios
- iGPU disabled in BIOS: When the integrated graphics are turned off, the DSDT may still contain a stub device (e.g.,
PEGPinstead ofIGFX) or omit it entirely. macOS expects a device namedIGPUorIGFXunder the root PCI bus. - Incorrect _DSM injection: Many Clover and OpenCore configs inject a
device-idorig-platform-idvia a_DSMmethod. If the ACPI path in the injection does not match the actual DSDT hierarchy, the namespace lookup fails with Error 226. - Mixed SSDTs from DMG images: Pre-built Hackintosh DMG files often bundle SSDTs for a range of motherboards. Applying an SSDT for a Z68 board on a Z77 system can introduce a device path that does not exist in the target DSDT, triggering the error at boot.
Diagnosing the Error
Before patching, confirm that the error is indeed ACPI Error 226 and not another issue. Boot with -v and watch for the line containing psargs-226. Note the exact device path — it will be printed in the error message. Common paths are:
_SB_.PCI0.IGFX— typical for Asus and Gigabyte boards_SB_.PCI0.GFX0— used by some MSI and Intel DZ boards_SB_.PCI0.PEGP— if the iGPU is on a PEG slot (rare)
Next, dump your current DSDT and SSDTs using Clover’s F4 key or a tool like iasl from a Linux live USB. Search for the device path that appears in the error. If it is missing entirely, you need to add it. If it exists but is named differently, you must either rename it or adjust the injection path.
Fixing ACPI Error 226
Which fix you need depends on what's actually wrong. Here are three reliable methods, starting with the safest.
Method 1: Create a Rename SSDT
If your DSDT has the device under a different name (e.g., GFX0 instead of IGFX), you can add a simple SSDT that renames it. This avoids modifying the original DSDT. Use the following SSDT skeleton (compile with iasl):
DefinitionBlock ("", "SSDT", 2, "HACK", "IGPU_RNM", 0x00000000)
{
External (_SB_.PCI0.GFX0, DeviceObj)
Scope (_SB_.PCI0)
{
Device (IGFX)
{
Name (_ADR, 0x00020000)
}
}
}
Place this in EFI/OC/ACPI/ (OpenCore) or EFI/CLOVER/ACPI/patched/ (Clover). The rename will not delete the original GFX0; instead, it creates an alias that macOS can find. After adding the SSDT, rebuild the kernel cache and test.
Method 2: Patch the DSDT Directly
If you prefer a permanent fix, disassemble your DSDT, locate the GFX0 device (or the missing device), and change its name to IGFX. Then compile the patched DSDT and place it in the patched folder. Be aware that direct DSDT patching carries a risk of introducing new errors, especially if the table is large. Always verify the disassembly with iasl -d and resolve any warnings before recompiling.
Method 3: Adjust the Injection Path in Bootloader Config
In Clover, the ig-platform-id and device-id are injected via Devices/Properties. The default path is PciRoot(0x0)/Pci(0x2,0x0). If your DSDT uses a different address (e.g., 0x00010000 for a different bus), update the path accordingly. In OpenCore, the DeviceProperties > Add section uses the same PciRoot addressing. To find the correct path, run gfxutil -f GFX0 from a macOS terminal (if you can boot into safe mode) or check the _ADR value of the device in the DSDT. In most Ivy Bridge and Haswell boards, the iGPU is at 0x00020000 (PCI 0:2:0).
Verifying the Fix
After applying the patch, boot with -v debug=0x100 to see ACPI messages. If the error disappears, the system should proceed to the graphics initialisation stage. You can also verify the device presence in IORegistryExplorer: search for IGPU or IGFX under the AppleACPIPlatformExpert tree. If you are using a pre-built DMG image, be aware that these often contain untested ACPI patches; we recommend inspecting the contents as described in our X79 DMG analysis. Doing so can prevent subtle errors like this one from being introduced by a mismatched SSDT.
Common Pitfalls
- Using the wrong _ADR: Some boards have the iGPU at
0x00010000(PCI 0:1:0) if the PEG slot is wired differently. Always verify with the DSDT before hardcoding the address. - Ignoring other ACPI errors: Error 226 may appear alongside Error 3327 if the DSDT has multiple issues. Fix them in order, starting with the one that stops the boot first.
- Clean NVRAM: After patching, reset NVRAM (press NVRAM reset in the boot picker) to clear any stale cached tables.
Once you have added the _DSM method or renamed the device and verified with ioreg, rebuild the cache and test with a clean boot. If the error persists, double-check the PciRoot path and ensure that the device is correctly enabled in BIOS — set iGPU to Enabled (not Auto) and assign 64 MB of pre-allocated memory. On many boards, the iGPU must be explicitly enabled even when a discrete GPU is present, otherwise the ACPI namespace omits the device entirely.
