Legacy Hackintosh Graphics Injection: AMD, NVIDIA, Intel GPU Properties
Inject graphics device properties for AMD, NVIDIA, and Intel integrated GPUs on legacy Hackintosh running macOS 10.9-10.15. Avoid kernel panics and black screens with these concrete injection methods.
Injecting graphics properties into a legacy Hackintosh is the most common cause of boot failures. On macOS 10.9 through 10.15, Clover-based builds need explicit device properties for AMD, NVIDIA, or Intel integrated GPUs — WhateverGreen alone won't handle older OS versions. This guide covers the specific injection keys for these GPUs, explains when to use Clover's built-in injection versus manual device properties, and points out the common mistakes that lead to kernel panics or black screens.
Understanding Graphics Injection in Legacy Hackintosh
Graphics injection means providing the macOS kernel and drivers with hardware identifiers and configuration data that the GPU does not expose via its own ROM or ACPI tables. On real Macs, the firmware supplies these properties; on a Hackintosh, we must supply them through the bootloader or a separate ACPI table. The two primary injection mechanisms are:
- Clover Graphics Injection – toggles in the
Graphicssection of config.plist that automatically fill in basic properties based on GPU vendor and device ID. - Device Properties injection – manually defined key-value pairs under
Devices/Propertiesin Clover, or via an SSDT in OpenCore-style setups (though most legacy guides still use Clover). - WhateverGreen + Lilu – a kext pair that patches GPU drivers on the fly, but its effectiveness on older macOS versions (pre-10.13) is limited without accompanying property injection.
The choice of method depends on the GPU generation and the target macOS version. For example, an AMD Radeon HD 7870 (Pitcairn) on macOS 10.12 requires both a correct framebuffer personality and a spoofed device ID, while an NVIDIA GTX 680 (Kepler) may work with only Clover’s InjectNVIDIA enabled.
WhateverGreen and Lilu: When They Help and When They Don’t
WhateverGreen (WEG) is the go-to kext for modern macOS, but on legacy systems its behaviour changes. For macOS 10.12 and earlier, WEG may not apply its automatic fixes because the graphics stack is different. In those cases, rely on explicit injection. For macOS 10.13–10.15, WEG can handle many GPUs, but you still need to provide the correct device-id or vendor-id if the GPU is not natively supported. Always pair WEG with Lilu, and check the version compatibility: WEG 1.3.0 or older works with 10.12, while newer versions require 10.13+. A common mistake is using a too-recent WEG on an older OS, causing a panic at IOGraphicsFamily.
AMD Radeon GPUs: Framebuffer Injection and Device-ID Spoofing
For AMD GPUs of the GCN 1.0/1.1/1.2 era (HD 7000, R7/R9 200 series), the critical injection keys are:
| Key | Typical Value | Purpose |
|---|---|---|
device-id |
0x68101002 (e.g., HD 7870) |
Spoof to a supported Mac GPU ID |
vendor-id |
0x1002 |
Always AMD |
ATY,Card# |
AMD Radeon HD 7870 |
Model string for About This Mac |
ATY,Family# |
AMD Radeon HD 7xxx |
Family name |
@0,name through @3,name |
ATY,Akaroa (framebuffer) |
Assigns connector type per port |
To find the correct framebuffer personality for your card, consult the AMD Framebuffer Utility or look up known working personalities (e.g., Akaroa for Pitcairn, Burur for Tahiti). Inject these properties under Devices/Properties with the PCI path of the GPU (usually PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)). Without the proper framebuffer, the system may boot to a black screen or show only a single display.
NVIDIA Kepler and Maxwell: Native Support vs. Web Drivers
NVIDIA Kepler GPUs (GTX 6xx, GT 6xx/7xx) are natively supported up to macOS 10.13. For these, injection is minimal: enable InjectNVIDIA in Clover or add NVCAP and NVDA, properties to fix display output order. A typical NVCAP value for a dual-DVI card is 04000000 00000300 0C000000 00000000 00000000 00000000. For macOS 10.12 and earlier, also add NVDAStartup kext patching if the card is not recognised.
Maxwell and Pascal (GTX 9xx, 10 series) require NVIDIA Web Drivers on macOS 10.13 and below. Injection here means ensuring the driver loads: set SystemParameters/NvidiaWeb to true in Clover, and inject nvda_drv property. Without the correct board-id in SMBIOS, the Web Driver may refuse to load. Use iMac14,2 or MacPro6,1 as SMBIOS. For macOS 10.14+, NVIDIA support is essentially dead; this guide focuses on legacy systems where Web Drivers still work (10.12–10.13).
Intel Integrated Graphics: ig-platform-id and Framebuffer Patching
For Intel HD Graphics 4000 (Ivy Bridge), HD 4600 (Haswell), and HD 4400/5000, injection revolves around a single key: ig-platform-id. Clover’s Graphics section can generate it automatically, but manual injection gives more control. Common platform IDs:
- HD 4000 (mobile):
0x01660003or0x01660004 - HD 4000 (desktop):
0x01620005or0x01620007 - HD 4600 (desktop):
0x0D220003or0x0D260007 - HD 4400 (mobile):
0x0A160000or0x0A260005
Inject the platform ID under Devices/Properties with the PCI path of the IGPU. Also add device-id if the CPU is not recognised (e.g., spoofing HD 4600 as HD 4600 using 0x04128086). For dual-monitor support, you may need to patch the framebuffer connector table via a kext like IntelGraphicsFixup (predecessor of WhateverGreen) or by editing the binary in AppleIntelFramebufferAzul.kext. This is risky and requires a backup of the original kext.
Manual Injection via SSDT or ACPI Patching
When Clover’s property injection fails (e.g., due to ACPI path conflicts), you can inject GPU properties via an SSDT. Write an SSDT with Device (GFX0) and Method (_DSM, 4, NotSerialized) returning a package of injected keys. This method is more portable and works with both Clover and OpenCore. For detailed steps on extracting and compiling SSDTs, refer to the guide on extracting your own DSDT. The same verification steps apply: compile with iasl, avoid syntax errors, and place the resulting .aml in /EFI/CLOVER/ACPI/patched/.
Verification and Troubleshooting
After injecting properties, boot with -v to watch for GPU-related errors. Common issues:
- Black screen after boot – wrong framebuffer or missing
@0,nameproperties. Try a different personality or enableRadeonDeInitin Clover. - No acceleration (no transparency, low resolution) – injection incomplete; check IORegistry for
IOAcceleratorunder the GPU. If missing, the kext did not load. - Kernel panic at
IOGraphicsFamily– incompatible WhateverGreen version or missing Lilu. Remove WEG and test with pure injection. - Only one display works – connector-type properties (
@0,connector-type) are wrong. Use Hackintool to dump the correct values from a working configuration.
Use IORegistryExplorer to verify that the injected properties appear under the GPU’s IOPCIDevice entry. If they do not, the injection path is incorrect. For AMD cards, also check that ATY,FrameBuffer matches the expected personality.
Risks and Data Integrity
Graphics injection can cause a non-booting system. Always back up your EFI partition before making changes. Keep a spare bootable USB with a minimal Clover configuration that uses only InjectNVIDIA or InjectATI without custom properties — this can rescue you from a black screen. Never edit binary kexts without a backup; one wrong byte can corrupt the driver cache. For power management of unsupported GPUs, additional patching of AGPM may be required — see the dedicated article on AGPM editing for Hackintosh for tuning voltage and Vender values.
Finally, note that macOS 10.15 Catalina dropped support for many legacy GPUs entirely. For instance, the Radeon HD 7xxx series works in 10.13 but not in 10.15. If your card does not have native Metal support, stay on 10.13 or earlier. Injection cannot add Metal capability; it only enables the existing driver to recognise the hardware.
