Graphics Card Injection in macOS 10.10 Yosemite: A Practical Guide for Hackintosh
Step-by-step guide to injecting GPU properties for NVIDIA, AMD, and Intel graphics in macOS 10.10 Yosemite using Clover. Covers device-property injection, framebuffer fixes, and troubleshooting.
Graphics card injection in macOS 10.10 Yosemite sits at an awkward point in Hackintosh history. Versions 10.10.0 through 10.10.5 shipped with IOPCIFamily and IOGraphicsFamily code that still relied on legacy boot-arg-based injection for many GPUs, while also introducing early support for the @0,device-id and @0,compatible device-property method that became standard later. Pick the wrong injection method for your card under Yosemite, and you'll get kernel panics, black screens, or a system that boots to a frozen grey Apple logo.
This guide walks through version-specific GPU property injection for Yosemite, covering NVIDIA and AMD GPUs from that era (Kepler, Fermi, GCN 1.0, GCN 1.1) plus Intel HD 4000 and HD 4600 iGPUs. We'll use Clover as the primary bootloader — Yosemite-era Hackintoshes almost exclusively used Clover r2xxx–r3xxx revisions, and the injection logic in those versions differs from both Chameleon and modern OpenCore.

Prerequisites and Risk Awareness
Before touching any config file or kext, back up your entire EFI partition. Yosemite's kernel extension cache (/System/Library/Caches/com.apple.kext.caches/Startup/) is brittle — a single wrong device-id can hang the system at [IOBluetoothHCIController][start] or give you a black screen right after the login window loads. Keep a spare macOS installation or recovery USB with the same base version (10.10.x) so you can boot into a safe environment to undo changes.
Check your GPU's architecture and device-id using a Linux live USB or a known-working macOS install. For Yosemite, the relevant device-ids live in AMDRadeonX4000.kext and GeForceTesla.kext (for Fermi) or GeForceGLDriver.framework (for Kepler). Write down the exact PCI device-id (e.g., 0x6810 for Radeon HD 7870) — it saves hours of trial and error.
Injection Methods Available in Yosemite
Boot-Arg Injection (GraphicsEnabler and nvda_drv)
Yosemite still respects GraphicsEnabler=Yes from Chameleon, but Clover doesn't implement that flag natively. Instead, Clover's InjectNVidia or InjectATI in the Graphics section of config.plist does something similar. For Fermi cards (GTX 4xx, 5xx) and Kepler cards (GT 6xx, GTX 6xx/7xx), setting InjectNVidia=true with NvidiaGeneric=true and NvidiaSingle=false usually gets basic acceleration. The catch: this method doesn't inject the correct framebuffer port layout, so you might end up with only one working display output or missing HDMI audio.
For AMD GCN 1.0 cards (HD 7750–HD 7970 / R9 270–R9 280X), InjectATI=true forces Clover to load the framebuffer from AMDRadeonX4000.kext. Problem is, Clover r2xxx–r3xxx picks the first framebuffer personality alphabetically (usually "Aji") rather than the one matching your card's connector layout. Result: a bootable system with no display acceleration, or a grey screen with a movable cursor but no login window.
Device-Property Injection (the "@0,device-id" Method)
Yosemite's IOKit can read device properties injected via Clover's Devices → Properties section. This is the better method — it bypasses Clover's guesswork and directly tells the kernel which framebuffer personality to use and what connector layout to expect. The general form is:
<key>PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)</key>
<dict>
<key>@0,device-id</key>
<data>AAAAAA==</data>
<key>@0,compatible</key>
<string>pci10de,0fe0</string>
<key>@0,model</key>
<string>NVIDIA GeForce GT 640</string>
<key>@0,built-in</key>
<data>AQAAAA==</data>
<key>hda-gfx</key>
<string>onboard-1</string>
</dict>
The exact keys vary by GPU family. For AMD cards, you also need @0,connector-type and @0,connector-data to define the port mapping. For NVIDIA Kepler, the @0,compatible string (e.g., pci10de,0fe0) is often enough to enable full acceleration and audio over HDMI.
Step-by-Step: Injecting an AMD Radeon HD 7870 in Yosemite
The Radeon HD 7870 (device-id 0x6818) uses the "Hammerhead" framebuffer in AMDRadeonX4000.kext. If you let Clover auto-inject, it'll likely pick "Aji" and give you a black screen. Here's the fix:
- Boot with
InjectATI=falseand-x(safe mode) to get a functional desktop with no acceleration. - Open Clover Configurator or edit config.plist manually. Under
Devices→Properties, add the PCI path of your GPU (use gfxutil or IORegistryExplorer to find it). - Set
@0,device-idto0x68181002(little-endian hex encoded as base64:GBgQAA==). - Set
@0,compatibletopci1002,6818. - Set
@0,modeltoAMD Radeon HD 7870. - Add
@0,connector-typewith valueAAYAAA==(for a dual-link DVI primary output) orAAQAAA==(for DisplayPort). You'll need to experiment with connector-type values that match your monitor's physical port. - Set
hda-gfxtoonboard-1to enable HDMI audio. - Reboot with
InjectATI=false(the injection is now done via properties, not the legacy flag).
If the system boots to a black screen, reboot with -v and watch for messages like "GPU is not supported" or "Framebuffer not found". Adjust the connector-type bytes accordingly. A common fallback is to use the "Hammerhead" connector data from AMDRadeonX4000.kext/Contents/Info.plist — copy the exact @0,connector-data array from the personality that matches your card's output layout.

NVIDIA Kepler Injection: The Simple Path
For Kepler cards (GT 640, GTX 650, GTX 660, GTX 760, etc.), Yosemite includes native drivers in the GeForceGLDriver.framework. The most reliable injection method under Yosemite is to set InjectNVidia=true and NvidiaGeneric=true in Clover's Graphics section, then add a device property for @0,compatible matching your card's vendor-and-device string. For example, for a GTX 660 (device-id 0x0fc1):
<key>PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)</key>
<dict>
<key>@0,compatible</key>
<string>pci10de,0fc1</string>
<key>@0,device-id</key>
<data>wQ8AAA==</data>
<key>hda-gfx</key>
<string>onboard-1</string>
</dict>
Don't set NvidiaSingle=true for Yosemite — that flag is meant for dual-GPU Mac Pros and often causes kernel panics on single-GPU systems. Also skip the nvda_drv=1 boot-arg; Yosemite uses the built-in NVIDIA driver by default, and the Web Driver is only needed for Maxwell and later GPUs (not covered here).
Intel HD 4000 and HD 4600 Injection
Yosemite supports Intel HD 4000 (Ivy Bridge) and HD 4600 (Haswell) natively, but only if you inject the correct ig-platform-id. For HD 4000, use 0x01660003 (desktop) or 0x01660004 (mobile). For HD 4600, use 0x0d220003 (desktop) or 0x0a260006 (mobile). Set InjectIntel=true in Clover's Graphics section and enter the ig-platform-id as a string or data value. If you get a black screen on boot, try adding igfxrst=1 or -igfxvesa to the boot-args to force VESA mode, then adjust the ig-platform-id. For a deeper treatment of Intel HD 4000 injection, see the article Injecting GPU Properties for Intel HD 4000 and Legacy Hackintosh GPUs.
Troubleshooting Common Yosemite GPU Issues
| Symptom | Likely Cause | Solution |
|---|---|---|
| Grey screen with cursor, no login window | Wrong framebuffer personality for AMD card | Inject device-id and connector-type manually; disable InjectATI |
| Kernel panic: "IOGraphicsFamily" | Mismatched device-id or missing @0,compatible | Double-check the device-id in IOReg; use the exact base64 encoding |
| No HDMI audio | Missing hda-gfx property or wrong layout-id in AppleHDA | Add hda-gfx=onboard-1; set layout-id to 1, 2, or 3 in Devices/Audio |
| System boots but GPU shows 7 MB VRAM | No acceleration; kext not loading | Verify that the correct framebuffer kext is present; rebuild kext cache with sudo kextcache -i / |
Preserving Your Configuration
Once you have a stable Yosemite GPU injection, save the exact config.plist and a copy of your EFI folder to external storage. Yosemite's kernel is sensitive to SIP settings — make sure csr-active-config is set to 0x3 (allow loading unsigned kexts) if you use any patched kexts like FakePCIID.kext or AppleHDADisabler.kext. Write down the specific connector-type values that worked for your monitor, because a different display may require different bytes.
If you also rely on Ethernet for iMessage and FaceTime, verify that the built-in property is correctly set on your network controller. The article How to Fix Ethernet on a Hackintosh: Kexts, Device Properties, and Troubleshooting covers the exact method for setting this property in Yosemite's IORegistry.
Yosemite is a legacy OS that no longer gets security updates. Use it only on an isolated network or for retro-gaming and software preservation. The injection techniques here are specific to 10.10.x and may not work on El Capitan or later without modification.
