Skip to content

NorthwoodsCommunityChurch/mac-pro-bootcamp-gpu-fix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mac Pro 2019 Boot Camp AMD GPU Fix

Get all 3 AMD GPUs working with Vulkan drivers on a Mac Pro 2019 running Windows 11 (Atlas OS).

3 GPUs Working

The Problem

The Mac Pro 2019 has three AMD GPUs:

  • 2x Radeon RX 580 (8GB each) — aftermarket cards
  • 1x Radeon Pro 580X (8GB) — Apple's factory GPU

On Windows, the two RX 580s get AMD drivers automatically. But the Pro 580X shows up as "Microsoft Basic Display Adapter" with no Vulkan support. AMD's standard Adrenalin driver refuses to claim it.

Why AMD Blocks the Pro 580X

The Pro 580X uses Apple's OEM PCI subsystem ID:

PCI\VEN_1002&DEV_67DF&SUBSYS_0206106B&REV_C0
                                  ^^^^
                                  106B = Apple Inc.

AMD blocks Apple OEM GPUs at two independent levels:

  1. INF LevelExcludeID entries in the driver INF explicitly reject Apple subsystem IDs (vendor 106B)
  2. Kernel Levelamdkmdag.sys has a built-in hardware whitelist that rejects unrecognized subsystem IDs during initialization

You can bypass level 1 by editing the INF. But level 2 causes Windows Error Code 31 ("cannot load the drivers") with STATUS_DLL_INIT_FAILED (0xC0000142) — the kernel driver loads but refuses to initialize.

The Solution

Use BootCampDrivers.com Blue (Enterprise) Edition — a community-maintained AMD Adrenalin driver that has Apple OEM GPU support built into both the INF and the kernel driver.

Quick Install (PowerShell as Admin)

# Run the install script
.\install-driver.ps1

Or do it manually — see Manual Install Steps below.

What We Tried (and Why It Failed)

This documents every approach we attempted before finding the solution, so you don't have to repeat our mistakes.

Attempt 1: Modify the INF (ExcludeID removal)

Approach: Copy AMD's driver folder, edit the INF to remove ExcludeID lines for 0206106B and add a device entry for the Pro 580X.

Result: pnputil /add-driver rejects modified INFs because the catalog hash no longer matches.

Attempt 2: Enable Test Signing Mode

Approach: bcdedit /set testsigning on to allow unsigned drivers, then re-try adding the modified INF.

Result: Still failed — pnputil checks signatures independently of boot-level test signing.

Attempt 3: Delete the Catalog File

Approach: Remove the .cat file from the driver package so there's nothing to verify against.

Result: "The third-party INF does not contain digital signature information."

Attempt 4: Modify the INF in the Driver Store

Approach: Edit the INF directly in C:\Windows\System32\DriverStore\FileRepository\, then pnputil /scan-devices.

Result: Windows caches the original device matching data when a driver is first staged. Modifying the INF in-place doesn't get re-evaluated.

Attempt 5: Remove Device + Rescan

Approach: pnputil /remove-device the Pro 580X, then /scan-devices to re-discover it against the modified driver store INF.

Result: Windows re-discovered the device but still matched it to Basic Display Adapter — the driver store's cached device list wasn't updated.

Attempt 6: Disable Integrity Checks

Approach: bcdedit /set nointegritychecks on + bcdedit /set loadoptions DDISABLE_INTEGRITY_CHECKS then reboot and retry.

Result: Same "does not contain digital signature" error from pnputil.

Attempt 7: Create a New Catalog with PowerShell

Approach: Use New-FileCatalog to create a catalog for the modified driver, sign it with a self-signed certificate.

Result: New-FileCatalog creates PowerShell-format catalogs. Windows drivers need PKCS7 catalogs from inf2cat.exe (WDK tool). Set-AuthenticodeSignature also doesn't support .cat files.

Attempt 8: SetupAPI UpdateDriverForPlugAndPlayDevices

Approach: Use the Win32 API via P/Invoke to force the driver onto the device (same API that devcon.exe update uses).

Result: Error 0xe000022f = ERROR_NO_CATALOG_FOR_OEM_INF. The API also requires a valid catalog.

Attempt 9: Registry Clone from Working RX 580

Approach: Copy all 238 registry values + 87 subkeys from the working RX 580's driver class entry to a new instance, point the Pro 580X to it, change Service from BasicDisplay to amdwddmg.

Result: The AMD kernel driver loaded but failed with Error Code 31 (STATUS_DLL_INIT_FAILED). This proved the kernel driver itself has an internal hardware whitelist — no amount of registry or INF manipulation can bypass it.

Attempt 10: BootCampDrivers.com (SUCCESS)

Approach: Download the Blue (Enterprise) Edition from BootCampDrivers.com, which includes a kernel driver built to support Apple OEM hardware IDs. Trust their DigiCert code signing certificate, install via pnputil /add-driver /install.

Result: All 3 GPUs recognized with native Vulkan 1.3.260 and AMD proprietary driver 24.9.1.

Hardware Details

PCI Device IDs

GPU Device ID Subsystem ID Status
RX 580 #1 VEN_1002&DEV_67DF SUBSYS_E3531DA2 Works with standard AMD driver
RX 580 #2 VEN_1002&DEV_67DF SUBSYS_E3531DA2 Works with standard AMD driver
Pro 580X VEN_1002&DEV_67DF SUBSYS_0206106B Requires BootCampDrivers.com

All three GPUs use the same Polaris 20 (Ellesmere) silicon — device ID 67DF. The only difference is the subsystem ID: Apple uses vendor 106B, consumer cards use 1DA2 (XFX, Sapphire, etc.).

Vulkan Output (After Fix)

GPU0: Radeon RX 580 Series    - Vulkan 1.3.260, AMD proprietary 24.9.1
GPU1: Radeon RX 580 Series    - Vulkan 1.3.260, AMD proprietary 24.9.1
GPU2: AMD Radeon Pro 580X     - Vulkan 1.3.260, AMD proprietary 24.9.1

Manual Install Steps

Prerequisites

  • Mac Pro 2019 running Windows 10/11 (tested on Atlas OS / Windows 11)
  • SSH or local admin access
  • 7-Zip installed (winget install 7zip.7zip)

Step 1: Download the Driver

Download the Blue (Enterprise) Edition for Polaris/Vega from BootCampDrivers.com:

Invoke-WebRequest -Uri "https://nc2.tomas-g.de/index.php/s/jZQ5LpemCgqnArq/download" `
    -OutFile "$env:TEMP\bootcamp-amd-blue.exe" -UseBasicParsing

This is ~930 MB. The Blue (Enterprise) edition is recommended over Red (Gaming) for server/production use.

Step 2: Extract (Don't Run)

The .exe may not be compatible with your Windows version. Extract it with 7-Zip instead:

7z x "$env:TEMP\bootcamp-amd-blue.exe" "-o$env:TEMP\amd-bootcamp" -y

Step 3: Trust the Signing Certificate

The driver is signed by BootCampDrivers.com with a legitimate DigiCert code signing certificate. Add it to the TrustedPublisher store:

$infDir = Get-ChildItem "$env:TEMP\amd-bootcamp" -Directory | Select-Object -First 1
$catFile = Get-ChildItem "$($infDir.FullName)\Packages\Drivers\Display\WT6A_INF\*.cat" | Select-Object -First 1

$sig = Get-AuthenticodeSignature $catFile.FullName
Export-Certificate -Cert $sig.SignerCertificate -FilePath "$env:TEMP\bootcamp-cert.cer" -Type CERT
Import-Certificate -FilePath "$env:TEMP\bootcamp-cert.cer" -CertStoreLocation "Cert:\LocalMachine\TrustedPublisher"

Step 4: Install the Driver

$infFile = Get-ChildItem "$($infDir.FullName)\Packages\Drivers\Display\WT6A_INF\*.inf" `
    | Where-Object { $_.Name -notlike "*original*" } | Select-Object -First 1

pnputil /add-driver $infFile.FullName /install

You should see:

Driver package installed on device: PCI\VEN_1002&DEV_67DF&SUBSYS_0206106B&REV_C0\...

Step 5: Verify

Get-PnpDevice | Where-Object { $_.InstanceId -like "*67DF*" } |
    Format-Table Status, FriendlyName, InstanceId -AutoSize

All GPUs should show Status OK with AMD driver names.

Compatibility

Tested on:

  • Hardware: Mac Pro 2019 (MacPro7,1), Xeon W-3245
  • GPUs: 2x XFX Radeon RX 580 + 1x Apple Radeon Pro 580X
  • OS: Atlas OS (Windows 11)
  • Driver: BootCampDrivers.com Blue Edition, Adrenalin 24.9.1

Should also work with other Apple OEM AMD GPUs:

  • Radeon Pro 560X (SUBSYS_0161106B)
  • Radeon Pro 580 (SUBSYS_0161106B)
  • Radeon Pro Vega II (SUBSYS_0201106B)
  • Any GPU with subsystem vendor 106B

Why This Matters

This fix enables native Vulkan multi-GPU inference with llama.cpp on the Mac Pro. On macOS, MoltenVK serializes Vulkan commands across GPUs at the system level — even separate processes on separate physical cards share a single Metal command queue. On Windows with native AMD Vulkan drivers, each GPU has its own independent command queue, enabling true parallel execution.

License

MIT License. Copyright (c) 2026 Northwoods Community Church.

Credits

Project Description License
BootCampDrivers.com Modified AMD Adrenalin drivers for Apple Boot Camp Proprietary (AMD driver, community-modified INF/kernel)
Brigadier Tool for downloading Boot Camp drivers (tested but not used) Apache 2.0

About

Fix AMD Radeon Pro 580X driver on Mac Pro 2019 running Windows via Boot Camp

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors