Configuring Intel HD Graphics 2500, 4000, 4400, 4600, 5000, and 5200 on Legacy Hackintosh

Step-by-step guide to configure Intel HD Graphics on legacy Hackintosh builds using Clover and OpenCore, covering platform-IDs, framebuffer injection, and troubleshooting black screens.

Clover config.plist showing ig-platform-id and device-id for Intel HD 4000

Building a Hackintosh around a second‑, third‑, or fourth‑generation Intel Core CPU usually means relying on integrated Intel HD Graphics for display output — if you know its quirks. Unlike discrete AMD or NVIDIA cards that often need spoofed device‑IDs or custom Kext patches, Intel IGPUs get native support in macOS for certain families, but only with the correct framebuffer injection and platform‑ID. Get it wrong and you’ll face a black screen at boot, a system that panics on wake from sleep, or a desktop running without hardware acceleration (QE/CI). This guide walks through the concrete steps to configure Intel HD Graphics 2500, 4000, 4400, 4600, 5000, and 5200 across macOS 10.8 through 10.15, focusing on injection methods used by Clover and OpenCore.

Supported Generations and macOS Ceilings

Apple used Intel HD Graphics in its own Macs from Sandy Bridge through Coffee Lake, but the cut‑off points for legacy Hackintosh builds are strict:

  • Sandy Bridge (HD 3000) – works up to macOS 10.13 High Sierra with GraphicsEnabler or framebuffer injection. No Metal support.
  • Ivy Bridge (HD 2500/4000) – HD 4000 works natively in macOS 10.8–10.15 Catalina. HD 2500 is unsupported (no Apple hardware used it) and requires device‑ID spoofing to HD 4000, which often breaks acceleration.
  • Haswell (HD 4400/4600/5000) – full support in macOS 10.8–10.15. HD 4400 is a cut‑down version; use ig‑platform‑id 0x0a260006 for laptop or 0x0d220003 for desktop.
  • Broadwell (HD 5300/5500/6000) – supported up to Catalina, but the HD 5300 (found in some low‑end laptops) requires careful framebuffer patching to avoid kernel panics.
  • Skylake and later – require newer macOS versions and are outside this legacy guide.

Every generation beyond Ivy Bridge relies on the WhateverGreen.kext and its companion Lilu.kext to handle framebuffer patching and connector mapping. Without these kexts, even a correct platform‑ID can produce a glitched or unaccelerated display.

Essential Tools and Configuration Files

The injection of Intel graphics properties is performed through the bootloader’s device‑properties section. In Clover this is done via config.plist → Devices → Properties or Graphics → Inject Intel. In OpenCore you use config.plist → DeviceProperties → Add with the PciRoot path of the IGPU (typically PciRoot(0x0)/Pci(0x2,0x0)). The two critical keys are:

  • ig‑platform‑id – a 4‑byte hex value (e.g., 0x0166000B for HD 4000) that tells macOS which framebuffer to load.
  • device‑id – sometimes required when the hardware ID differs from what macOS expects (e.g., HD 2500 spoofed as 0x01628086).

For a deeper understanding of how these properties interact with IOKit personalities, see the post Injecting GPU Properties on a Legacy Hackintosh: Device-ID, Framebuffers, and IOKit Personalities — it covers the exact mechanism that Intel framebuffers rely on.

Clover config.plist showing ig-platform-id and device-id for Intel HD 4000

Common ig‑platform‑id Values for Legacy Intel Graphics

The following table lists tested platform‑IDs for desktop and mobile configurations. Always verify your hardware revision: a mismatch between the framebuffer’s expected connector count and your physical outputs will cause a black screen.

Generation Desktop ig‑platform‑id Mobile ig‑platform‑id Notes
Ivy Bridge HD 4000 0x0166000B 0x01660004 Desktop uses single link LVDS or eDP; mobile has dual channel.
Haswell HD 4600 0x0D220003 0x0A260006 0x0D220003 is for desktop with 3 outputs; 0x0A260006 for mobile with 2.
Haswell HD 4400 0x0A260006 0x0A2E0008 HD 4400 often shares the same framebuffer as HD 4600 but with reduced execution units.
Haswell HD 5000 0x0A2E0008 0x0A260006 HD 5000 is a higher‑end mobile variant; desktop rare.
Broadwell HD 5500 0x16260006 0x16160002 Use 0x16260006 for desktop with eDP; 0x16160002 for laptop.

If you are building a system where the IGPU is the only graphics output, also add the property enable‑backlight‑registers‑fix (or enable-backlight-fix in older Clover) to prevent a backlight‑off state after sleep.

Diagnosing a Black Screen or No Acceleration

The most frequent failure mode after setting the platform‑ID is a black screen immediately after the boot logo. This usually indicates a connector mismatch. To diagnose:

  1. Boot with -v and watch for messages like [IGPU] fb0 … fb1 …. If macOS prints only one framebuffer but your hardware has two outputs, the injection is incomplete.
  2. Try alternative platform‑IDs from the table above. For HD 4000, 0x0166000B (desktop) vs 0x01660004 (mobile) is the most common swap.
  3. Add ‑igfxvesa as a boot argument to force VESA mode. If the system boots to a desktop with no acceleration, your framebuffer is correct but the kexts are not loading — check that WhateverGreen and Lilu are in your EFI/OC/Kexts or Clover/kexts/Other.
  4. If acceleration is present but sleep/wake causes a black screen, inject enable‑backlight‑registers‑fix and enable‑audio‑hdmi‑bitstream (if using HDMI audio).

For a systematic approach to injecting GPU properties across multiple generations, the guide Graphics Card Injection 2 for Legacy Hackintosh: A Practical Guide provides a step‑by‑step method that applies to Intel IGPUs as well — particularly the section on setting device‑id for unsupported revisions.

Limitations and Risks

Intel HD Graphics on Hackintosh is not a set‑and‑forget solution. Several important constraints apply:

  • macOS 10.15 Catalina is the last version with native Intel HD 4000/4600 support. Big Sur and newer drop the legacy kexts entirely; you cannot use these IGPs on macOS 11 or later without extensive patching that often breaks reliability.
  • HD 2500 cannot achieve full acceleration even with device‑ID spoofing. The GPU lacks the same execution units, and macOS will show a “No kext loaded” entry in IORegistryExplorer.
  • Connector layout is fixed per framebuffer. If your motherboard has an HDMI port that macOS maps to a DisplayPort connector, you will get no signal. You can override connector types using WhateverGreen’s -cdfon or custom framebuffer patches, but this requires detailed knowledge of your board’s physical outputs.
  • Sleep/wake issues are common on Haswell and Broadwell systems. Injecting enable‑backlight‑registers‑fix helps, but some motherboards (especially H81, B85) may require additional ACPI patches for the IGPU power rail.

Before making any changes to your bootloader configuration, create a full backup of your EFI partition and your current macOS installation. A misconfigured ig‑platform‑id can render the system unbootable — recovery is only possible by booting from a USB installer and editing the config.plist from the EFI shell.

macOS System Information displaying Intel HD Graphics 4600 with Metal: Supported

Verifying Your Configuration

After applying the injection, open System Information → Graphics/Displays. You should see the correct model name (“Intel HD Graphics 4000” or “Intel HD Graphics 4600”) and the line “Metal: Supported” for macOS 10.12 and later. If the model shows “Intel HD Graphics Unknown” or “Display 7 MB”, the injection failed — the framebuffer is not loading. Use IORegistryExplorer to check the IGPU node: under IOService:/AppleACPIPlatformExpert/PCI0/IGPU@0 you should find keys ig-platform-id and device-id with the values you injected.

For systems using dual displays, test each output individually. Some framebuffers assign HDMI to a connector that macOS treats as DVI; in that case a DVI‑to‑HDMI cable may restore video. If you need HDMI audio alongside video, inject audio‑layout‑id = 0x03000000 or 0x01000000 depending on the codec.

A Concrete Example: Ivy Bridge HD 4000 on High Sierra

Consider a desktop with an Intel Core i5‑3470 (HD 4000) and a Gigabyte GA‑Z77‑DS3H. The correct ig‑platform‑id is 0x0166000B (desktop, 3 outputs). In OpenCore 0.6.3, add the following to DeviceProperties → Add:

PciRoot(0x0)/Pci(0x2,0x0)
  | ig-platform-id = 0x0166000B
  | device-id = 0x01628086
  | enable-backlight-registers-fix = 0x01000000

The device‑id is included to ensure macOS recognises the GPU as HD 4000 even if the BIOS reports a different PCI ID. After a reboot, the system should show full acceleration, HDMI audio (if the codec is patched), and stable sleep/wake. Without the backlight fix, the display may stay black after sleep — a common complaint on Z77 boards.

If you encounter a freeze during the login screen, try adding ‑igfxbeta to boot arguments (this forces an older framebuffer path). For HD 4000 on High Sierra, this is rarely needed, but it can resolve sporadic hangs on certain Gigabyte BIOS versions.

Final Practical Note

When testing a new platform‑ID, always keep a known‑good backup of your config.plist on a separate USB drive. A single wrong hex digit in the ig‑platform‑id can produce a kernel panic at AppleIntelHDGraphics loading. Boot with -v debug=0x100 keepsyms=1 to capture the panic log. If the panic mentions IOFB or AppleIntelFramebuffer, the framebuffer is incompatible — switch to a different ID from the table above. With methodical testing, Intel HD Graphics can provide a stable, energy‑efficient Hackintosh experience for legacy builds that do not require discrete GPU performance.