Kepler GPUs on macOS Mojave: The Complete Hackintosh Guide

Learn which NVIDIA Kepler graphics cards work with macOS 10.14 Mojave, how to identify them by device ID, configure Clover or OpenCore, and fix common issues like black screens and 7 MB VRAM.

Apple never shipped NVIDIA Web Drivers for Mojave. That left Pascal and Maxwell GPUs without acceleration. Kepler cards, however, are natively supported because Apple used them in Macs until 2016. This guide covers exactly which Kepler GPUs work, how to identify them by device ID, and how to configure Clover or OpenCore to avoid black screens and kernel panics. We'll also cover common issues like 7 MB VRAM, sleep/wake failures, and multi-monitor setup.

Why Kepler Matters for Mojave

Apple never shipped NVIDIA Web Drivers for Mojave. The last official Web Driver release was for macOS 10.13 High Sierra. This means that any Pascal (GTX 10xx) or Maxwell (GTX 9xx, GTX 750/950/960/970/980) GPU will not accelerate graphics in Mojave without unsupported third-party patches that carry stability and security risks. Kepler cards, however, are recognized by the native macOS graphics driver stack because Apple shipped them in Macs sold as late as 2016. The core Kepler family includes:

  • GeForce GT 630, GT 640, GT 650M
  • GeForce GTX 660, GTX 660 Ti, GTX 670, GTX 680
  • GeForce GTX 760, GTX 770 (GK104 variant)
  • GeForce GTX 780, GTX 780 Ti (GK110)
  • Quadro K2000, K4000, K5000, M2000 (Kepler-based)

All of these GPUs use the GKxxx or GKxxxM die. The macOS driver, AGPM (Apple Graphics Power Management) and AppleGraphicsControl contain injection tables for these device IDs.

Identifying Your Kepler GPU

Before installing Mojave, verify the GPU’s architecture using its PCI device ID. Run this command in Terminal on a working system or booted installer:

system_profiler SPDisplaysDataType | grep "Device ID"

You can also check from Windows or Linux using GPU‑Z or lspci -nn. The first four hex digits after the colon represent the device ID. Compare it against the known Kepler list:

Device ID GPU Architecture
0x0FC0 GeForce GT 640 (GK107) Kepler
0x1180 GeForce GTX 660 Ti (GK104) Kepler
0x1189 GeForce GTX 670 (GK104) Kepler
0x118A GeForce GTX 680 (GK104) Kepler
0x119A GeForce GTX 760 (GK104) Kepler
0x1004 GeForce GTX 780 (GK110) Kepler
0x1005 GeForce GTX 780 Ti (GK110) Kepler

If the device ID is not on this list, the GPU is almost certainly not Kepler. Do not attempt to force injection of a different architecture — this can cause kernel panics at boot.

Configuring Clover or OpenCore for Kepler

Both bootloaders require minimal configuration for Kepler GPUs. The key settings are:

Clover (r5120 or earlier)

  • Graphics → Inject Nvidia: Enable this only if you experience a black screen. Many Kepler cards work without injection.
  • Graphics → NvidiaSingle: Set to Yes if you have a single GPU and want to disable unused connectors.
  • Boot Arguments: Add agdpmod=pikera if you see a black screen on a desktop Kepler card. This disables the board‑ID check in AppleGraphicsDevicePolicy.
  • SMBIOS: Use iMac14,2 or MacPro6,1. Do not use iMacPro1,1 — it expects only AMD GPUs.

OpenCore (0.6.3 or newer, recommended for Mojave)

  • DeviceProperties → Add: Inject @0,compatible with value NVDA,NVMac and @0,device_type with display if auto‑detection fails.
  • NVRAM → Add → 7C436110-AB2A-4BBB-A880-FE41995C9F82: Add agdpmod string with value pikera for desktop cards.
  • Kernel → Quirks: Disable AppleCpuPmCfgLock and AppleXcpmCfgLock if your board has locked CFG lock.

For dual‑GPU setups — for example, a Kepler card alongside an integrated Intel HD 4000 — you may need to set ig-platform-id in DeviceProperties to 0x01620005 for Ivy Bridge or 0x0A260006 for Haswell. This prevents the iGPU from becoming the primary display.

Common Issues and Diagnostics

Black Screen After Boot

The most frequent problem is a black screen after the Apple logo. The fix is almost always agdpmod=pikera. If that does not work, check your connector layout. Kepler cards often use DVI‑I and DisplayPort. Try using a DisplayPort cable instead of HDMI, because some HDMI ports on older Kepler cards do not handshake correctly with macOS.

Kernel Panic: "AppleMCCSControlModule"

This panic occurs when the GPU is not fully recognized. Add -disablegfxfirmware to boot arguments. This forces macOS to use the legacy graphics driver path instead of the firmware‑based one.

No Acceleration / 7 MB VRAM Reported

If About This Mac shows 7 MB of VRAM, the GPU has fallen back to VESA mode. Verify that your bootloader is not injecting an incorrect device-id. Remove any device-id or vendor-id properties from DeviceProperties for the GPU — let macOS detect the card natively.

Sleep / Wake Failure

Kepler cards generally wake from sleep correctly if darkwake=0 or darkwake=8 is set in boot arguments. If the display stays black after wake, add shikigva=4 (for Clover) or inject @0,backlight-control with value 0x01 in OpenCore.

Performance Expectations and Limitations

Kepler GPUs in Mojave perform roughly as they do in High Sierra. A GTX 680 scores about 45–50 fps in Unigine Valley at 1080p Medium. A GTX 780 Ti reaches 70–75 fps. These numbers are adequate for general desktop use, Xcode, and older games. Do not expect modern AAA titles to run well — Metal 2 on Kepler lacks feature set support for tessellation and compute shaders used in newer engines.

Hardware video encoding (H.264) is handled by the GPU, but HEVC (H.265) encoding is not available on Kepler because the hardware block does not support it. Decoding of HEVC is possible only via CPU software decoding, which may cause stutter on 4K H.265 content.

Multi‑Monitor and Connector Order

Kepler cards typically expose three or four connectors. macOS assigns them in a fixed order that does not always match physical port labels. To determine the correct order, boot with a single monitor and note which connector it uses. Then add a second monitor and check System Information → Graphics/Displays for connector type. If the second monitor is detected but stays black, swap cables. A common pattern is:

  • Port 0: DVI‑I (primary)
  • Port 1: DVI‑D
  • Port 2: HDMI
  • Port 3: DisplayPort

If you need to remap connectors, use WhateverGreen.kext with the connectors property in DeviceProperties. For example, to swap HDMI and DisplayPort on a GTX 760, add framebuffer-patch-enable = 1 and framebuffer-con0-enable = 1 with appropriate connector‑type values (e.g., 00040000 for DP, 00080000 for HDMI).

Preserving Your Configuration

Once the system is stable, back up your EFI partition. Copy the entire EFI folder to a FAT32 USB drive and store it offline. Also save a copy of the current config.plist and kexts/Other/ contents into a dated archive. If you later upgrade to a newer version of OpenCore or Clover, you can revert to this known‑working state if something breaks.

For users who maintain multiple legacy systems, keeping a spreadsheet with the exact GPU model, device ID, SMBIOS, and boot arguments for each build is invaluable. This practice was common in the early Hackintosh community and remains the most reliable way to reproduce a working setup years later. If you are also running a dual‑CPU configuration, refer to our guide on Dual CPU DMG for Hackintosh: What’s Inside and How to Verify It for bootloader considerations with multiple processor sockets.

Final Checks Before Deployment

Before declaring the build complete, test these three scenarios:

  1. Cold boot: Power off completely, wait 10 seconds, then boot. Verify the Apple logo appears without artifacts and the desktop loads with full acceleration.
  2. Sleep and wake: Close the lid (if laptop) or press sleep button. Wait 15 seconds, then wake. The display should turn on within 3 seconds.
  3. Display hot‑plug: Connect an external monitor while logged in. The display should be detected immediately without requiring a restart.

If any of these tests fail, revisit the bootloader configuration. A single incorrect agdpmod setting or missing shikigva value can cause intermittent failures that are difficult to diagnose later. Document the final working parameters in a text file inside the EFI folder — include the exact boot arguments, SMBIOS, and any DeviceProperties injections. Label it with the GPU model and date so you or another enthusiast can restore the setup quickly.