# IOGraphicsFamily Kext Modifications for Intel GPU Patching in OCLP-Mod

> Discover how OCLP-Mod modifies IOGraphicsFamily kext to patch Intel GPUs. Learn about dependency removal, legacy injection, and board-ID patches for macOS Ventura and later.

- Repository: [laobamac/oclp-mod](https://github.com/laobamac/oclp-mod)
- Tags: internals
- Published: 2026-03-05

---

**OCLP-Mod supplies a patched IOGraphicsFamily.kext that removes restrictive dependencies from AppleGraphicsPowerManagement and related Intel GPU kexts, injects legacy Intel graphics personalities into IOKit, and applies binary board-ID patches to enable Sandy Bridge support on macOS Ventura and later.**

The laobamac/oclp-mod repository maintains a specialized fork of the OpenCore Legacy Patcher designed to resurrect legacy Intel GPU support on modern macOS versions. To circumvent the dependency checks and version locks that block older Intel graphics drivers from loading, OCLP-Mod implements targeted modifications to the IOGraphicsFamily kext ecosystem, adjusting plist dependencies and binary constants across multiple system extensions.

## How OCLP-Mod Patches the IOGraphicsFamily Kext Ecosystem

Rather than replacing the entire IOGraphicsFamily binary, OCLP-Mod modifies the **Info.plist** files of dependent kexts to sever restrictive links to `com.apple.iokit.IOGraphicsFamily` while injecting the necessary driver personalities for legacy Intel GPUs.

### Removing IOGraphicsFamily Dependencies from Power Management

The patchset modifies `payloads/Kexts/Plists/AppleGraphicsPowerManagement/Info.plist` to eliminate the dependency that blocks loading on newer macOS releases.

Specifically, the patch removes the following dependency entry:

```xml
<key>com.apple.iokit.IOGraphicsFamily</key>

```

Simultaneously, it updates the `OSBundleRequired` key to `RootDomain`, ensuring the kext loads early in the boot process without waiting for the original IOGraphicsFamily validation.

### Injecting Intel GPU Personalities into Device Policy

To make legacy Intel GPUs visible to the I/O Kit registry, OCLP-Mod patches `payloads/Kexts/Plists/AppleGraphicsDevicePolicy/AppleGraphicsDevicePolicy.plist`. This modification performs two critical functions:

1. **Removes the IOGraphicsFamily dependency** (the same `com.apple.iokit.IOGraphicsFamily` key deletion)
2. **Adds the `IOGraphicsFamily` bundle identifier** to the `IOKitPersonalities` dictionary specifically for Intel GPU entries

This injection allows the system to recognize and bind drivers for architectures ranging from Sandy Bridge to Kaby Lake.

### Aligning Version Requirements for macOS Compatibility

Version mismatches trigger immediate kext rejection on macOS Ventura and Sonoma. To prevent this, OCLP-Mod adjusts `payloads/Kexts/Plists/AppleMuxControl/AppleMuxControl.plist` to match the host operating system build.

The patch updates the `OSBundleVersion` string to align with the host macOS version (for example, `22E261` for specific Ventura builds), ensuring the kext passes the version compatibility check during system startup.

## Binary Patching for Sandy Bridge Board IDs

Beyond plist modifications, OCLP-Mod applies direct binary patches to enable Sandy Bridge GPU support. The `snb_board_id_patch()` function in [`oclp_mod/sys_patch/helpers.py`](https://github.com/laobamac/oclp-mod/blob/main/oclp_mod/sys_patch/helpers.py) modifies `AppleIntelSNBGraphicsFB.kext` to replace unsupported board IDs with compatible ones.

The binary patch operates by searching for hard-coded board-ID hex strings and replacing them with the target machine's reported board ID:

```python

# Replace unsupported board ID with a supported one

with open(path, 'rb') as f:
    data = f.read()
    data = data.replace(board_to_patch_hex, reported_board_hex)
with open(path, 'wb') as f:
    f.write(data)

```

This modification is essential for Sandy Bridge iGPUs on boards that are not included in Apple's original whitelist, allowing the patched IOGraphicsFamily ecosystem to load the framebuffer driver successfully.

## How the Patchset Orchestrates Kext Loading

The modifications are applied dynamically based on the detected Intel GPU generation. The patchset controllers located in `oclp_mod/sys_patch/patchsets/hardware/graphics/*.py` determine which specific kexts and plists require modification for each architecture (Sandy Bridge, Ivy Bridge, Haswell, Skylake, Kaby Lake).

When a patchset is selected, the system generates the appropriate plist configurations and copies the patched files into the target volume:

```python

# inside the Intel‑GPU patchset handling

patch_helper.generate_patchset_plist(
    patchset=self.patchset,
    file_name="AppleGraphicsPowerManagement.plist",
    kdk_used=self.kdk_path,
    metallib_used=self.metallib_path
)

```

This orchestration ensures that the IOGraphicsFamily dependency removals and Intel GPU personality injections are applied consistently across all relevant system extensions.

## Summary

- **Dependency Removal**: OCLP-Mod strips the `com.apple.iokit.IOGraphicsFamily` dependency from `AppleGraphicsPowerManagement`, `AppleGraphicsDevicePolicy`, and related kexts to bypass loading restrictions on macOS Ventura and later.
- **Personality Injection**: The patchset adds legacy Intel GPU driver bundles (Sandy Bridge through Kaby Lake) to the `IOKitPersonalities` sections of device policy plists, making the hardware visible to the system.
- **Version Alignment**: `OSBundleVersion` strings in `AppleMuxControl` and other plists are updated to match the host macOS build, preventing version-mismatch rejections.
- **Binary Board-ID Patching**: The `snb_board_id_patch()` function in [`helpers.py`](https://github.com/laobamac/oclp-mod/blob/main/helpers.py) performs hex replacement in `AppleIntelSNBGraphicsFB.kext` to enable Sandy Bridge support on non-whitelist boards.

## Frequently Asked Questions

### Does OCLP-Mod modify the original IOGraphicsFamily.kext binary directly?

No, OCLP-Mod does not alter the original IOGraphicsFamily binary. Instead, it modifies the `Info.plist` files of dependent kexts—such as `AppleGraphicsPowerManagement` and `AppleGraphicsDevicePolicy`—to remove their dependency on `com.apple.iokit.IOGraphicsFamily`. This allows the legacy Intel GPU drivers to load without requiring the original IOGraphicsFamily validation.

### Which Intel GPU generations benefit from these IOGraphicsFamily patches?

The modifications support Intel integrated graphics ranging from **Sandy Bridge** (2nd generation) through **Kaby Lake** (7th generation). Specific driver bundles injected include `AppleIntelHD4000Graphics.kext` (Ivy Bridge), `AppleIntelSKLGraphics.kext` (Skylake), and `AppleIntelKBLGraphics.kext` (Kaby Lake), along with binary patches for Sandy Bridge framebuffers.

### How does the Sandy Bridge board-ID patch work?

Located in [`oclp_mod/sys_patch/helpers.py`](https://github.com/laobamac/oclp-mod/blob/main/oclp_mod/sys_patch/helpers.py), the `snb_board_id_patch()` function performs a binary search-and-replace operation on `AppleIntelSNBGraphicsFB.kext`. It locates the hard-coded whitelist of board IDs within the binary and replaces unsupported entries with the target machine's actual board ID hex string, allowing the driver to initialize on non-Apple hardware configurations.

### Can these patches be applied manually without the OCLP-Mod patchset?

While technically possible, manual application is not recommended. The patchset logic in `oclp_mod/sys_patch/patchsets/hardware/graphics/*.py` dynamically selects the correct plist versions and binary patches based on the specific macOS version and Intel GPU generation detected. Manual editing would require replicating the `generate_patchset_plist()` orchestration and version-matching logic precisely to avoid kernel panics or boot failures.