Using IntelDump2 to Fix Intel HD Graphics on Legacy Hackintosh

Learn how to use IntelDump2 to diagnose and patch Intel HD Graphics 2500, 4000, and 4600 framebuffer issues on legacy Hackintosh systems running macOS 10.10 through 10.13.

Terminal window displaying IntelDump2 output with connector hex values

When a legacy Hackintosh with Intel HD Graphics 2500, 4000, or 4600 refuses to accelerate the UI or boots to a black screen, the first diagnostic step is often a framebuffer dump. IntelDump2, a command-line tool originally written for macOS 10.10 Yosemite, still serves as the most reliable method to extract raw framebuffer data from the Intel graphics kext before any patching. Unlike newer tools that rely on IORegistry keys that changed after macOS 10.13, IntelDump2 reads the actual binary framebuffer table loaded by the kernel — data that tells you exactly which connectors, pipes, and display registers the kext is trying to use.

Why IntelDump2 Exists and What It Reveals

Apple’s Intel HD Graphics drivers for Ivy Bridge and Haswell contain multiple framebuffer personalities, each describing a set of video outputs (LVDS, HDMI, DP, DVI) with specific port-to-pipe mappings. The personality selected by the driver depends on the device-id and the SMBIOS model. If that personality does not match your physical ports — for example, your motherboard’s HDMI port is wired to a different transcoder than the one the driver expects — you get a black screen or a frozen login window. IntelDump2 dumps the currently loaded personality as a series of hexadecimal bytes that correspond to the framebuffer table in AppleIntelFramebufferAzul.kext (Haswell) or AppleIntelFramebufferCapri.kext (Ivy Bridge).

The tool outputs three critical sections: the connector info table, the cursor and display pipe registers, and the raw framebuffer memory layout. For a typical Ivy Bridge desktop with a single DVI output, the dump might show only one active connector with a 0x0400 type flag. For a laptop with dual internal and external displays, the dump reveals two connectors with different start offsets. Without this dump, you are guessing which bytes to patch.

Terminal window displaying IntelDump2 output with connector hex values

Gathering IntelDump2 and Preparing the Environment

IntelDump2 is distributed as a single binary, often bundled in old Hackintosh tool collections from the Yosemite–El Capitan era. You can find it in the /usr/local/bin directory of many pre-built Hackintosh USB stick packages. Before running it, ensure your system is booted with the correct Intel graphics injection. For Ivy Bridge CPUs, you need ig-platform-id of 0x0166000A (desktop) or 0x01660003 (mobile) in Clover’s Graphics section. For Haswell, common IDs are 0x0D260007 (desktop) or 0x0A260006 (mobile). If you inject no platform-id, the driver may fall back to a default that does not match your hardware, and IntelDump2 will still dump that fallback — which is useful for debugging but not for a working configuration.

Boot into macOS with -v (verbose) mode and disable any other GPU (NVIDIA or AMD) in the BIOS or via Clover’s nv_disable=1 to force Intel to be the primary display. Open Terminal and run:

sudo inteldump2

If you get a “command not found” error, ensure the binary is executable and located in your PATH. You can run it directly from your Downloads folder:

chmod +x ~/Downloads/inteldump2
sudo ~/Downloads/inteldump2

The tool requires root privileges to access the IOKit framebuffer memory. It will output several pages of hex data. Redirect the output to a text file for easier analysis:

sudo inteldump2 > ~/Desktop/framebuffer_dump.txt

Reading the Dump: Connector Info and Port Mapping

The first block of the dump is the connector info table. It appears as a sequence of 30-byte entries, one per port. Each entry starts with a 4-byte type field and a 4-byte control flags field. The most common types are:

  • 0x0400 — LVDS (internal laptop panel)
  • 0x0004 — DVI (single link)
  • 0x0008 — HDMI
  • 0x0010 — DisplayPort
  • 0x0200 — eDP (embedded DisplayPort, used on some laptops)

For example, a typical Ivy Bridge desktop motherboard with one DVI and one HDMI port might show:

Connector 0: type 0x0004  flags 0x0001  index 0
Connector 1: type 0x0008  flags 0x0001  index 1

If you have a DVI monitor plugged into the DVI port but the dump shows only one connector of type 0x0400 (internal LVDS), the driver has loaded a laptop personality. This mismatch explains the black screen. The fix is to inject a different ig-platform-id that corresponds to a desktop personality, or to patch the connector type bytes directly in the kext.

For a detailed walkthrough of patching these bytes for specific Intel HD Graphics generations, see the existing guide on Configuring Intel HD Graphics 2500, 4000, 4400, 4600, 5000, and 5200 on Legacy Hackintosh. That article covers the exact byte offsets and replacement values for common port configurations.

Interpreting the Pipe and Cursor Registers

After the connector table, IntelDump2 prints the current state of the display pipe registers: PIPECONF, PIPESRC, and the cursor base addresses. These values confirm whether the pipe is enabled and at what resolution. A pipe that reads 0x00000000 for the source size means the display is off — often because the wrong framebuffer personality assigned the pipe to a port that doesn’t exist on your motherboard.

The cursor register dump is less critical for basic compatibility, but it helps diagnose mouse corruption or cursor artifacts. If the cursor address is zero or points to an invalid memory region, the cursor will either disappear or show as a black rectangle. In that case, the framebuffer memory allocation in the personality is insufficient for your resolution — a problem common with 4K displays on older Intel HD Graphics.

Using the Dump to Build a Working Patch

Once you have identified the personality loaded and the connector types present, you can create a patched framebuffer kext. The process differs between Ivy Bridge and Haswell. For Ivy Bridge, you edit AppleIntelFramebufferCapri.kext/Contents/Info.plist and change the io-platform-id values under IOPCIPrimaryMatch. For Haswell, you modify the binary blob inside AppleIntelFramebufferAzul.kext/Contents/MacOS/AppleIntelFramebufferAzul at specific offsets — a more delicate operation.

IntelDump2’s output tells you exactly which personality index is active. For example, if the dump shows connector type 0x0004 at offset 0x200 of the binary, you know that the patching offset for that port is 0x200. You can then use a hex editor to change 0x0004 to 0x0008 if you need HDMI instead of DVI, or to 0x0400 if you need LVDS. Always keep a backup of the original kext before patching.

After patching, reboot with the modified kext in /System/Library/Extensions/ or injected via Clover’s KextsToPatch section. Run IntelDump2 again and verify that the connector types now match your physical ports. The dump should also show the correct pipe state — active and at the expected resolution.

Risks and Limitations by macOS Version

IntelDump2 works reliably on macOS 10.10 through 10.13. On macOS 10.14 Mojave and later, Apple moved the framebuffer memory to a different IOKit class, and IntelDump2 may return incomplete or zeroed data. For High Sierra (10.13) and earlier, the tool is safe and does not write to disk — it only reads. However, the act of patching kexts carries risks. A wrong byte can prevent the system from booting. Always test patched kexts on a separate partition or backup volume first.

The tool also cannot dump the framebuffer if the Intel graphics kext is not loaded at all — a situation that occurs when your ig-platform-id is completely invalid or the device-id is not recognized. In that case, check your Clover configuration and ensure that Inject Intel is enabled and that your CPU’s graphics device-id is present in the kext’s Info.plist.

Verbose boot log showing Intel framebuffer failure message before panic

A Practical Example: Fixing a Haswell Desktop with No HDMI Audio

Suppose you have a Haswell i5-4590 on a Z97 motherboard with HDMI output. The system boots to the desktop but HDMI audio does not appear in System Preferences. Running IntelDump2 reveals that the loaded personality uses connector type 0x0004 (DVI) for the port that physically carries HDMI. The framebuffer personality assigned the HDMI audio capability to a different port index. By changing that connector type to 0x0008 and adjusting the audio codec flag in the same 30-byte entry, you restore HDMI audio. The dump tells you exactly which byte offset to modify — the 4th byte of the connector entry. Without the dump, you would be searching blindly through a 30 KB binary.

After the patch, run IntelDump2 once more and confirm that the connector type changed to 0x0008. Reboot and verify audio output. This iterative dump-patch-dump cycle is the most efficient way to achieve a stable Intel graphics configuration on legacy systems.