Mac OS: Get your NVidia GPU Device Rom and build EFI-String com.apple.boot.plist or DSDT/ACPI Interface

  • Post published:July 29, 2013

The following is already extracted an demonstrates several ROMs for a GX-X58A-UD3R Board and NVidia GPUs

Necessary Tools: Download_gfxutil

GA-X58A-UD3R
#############
NVCAP VALUE is plist editor conform
MEM VALUES IS DASHBOARD CONFORM

NVIDIA210 512MB:
MEM: 0x20000000
DevicePath = PciRoot(0x1)/Pci(0x3,0x0)/Pci(0x0,0x0)
NVCAP: 0400000000000300080000000000000700000000
Download HEX  Download PLIST  Download ROM

NVIDIA220 1024MB:
MEM: 0x40000000
DevicePath = PciRoot(0x1)/Pci(0x5,0x0)/Pci(0x0,0x0)
NVCAP: 0400000000000300040000000000000700000000
Download HEX  Download PLIST  Download ROM

NVIDIA8600 512MB:
DevicePath = PciRoot(0x1)/Pci(0x7,0x0)/Pci(0x0,0x0)
MEM: 0x20000000
NVCAP: 0400000000000300040000000000000700000000
Download HEX  Download PLIST  Download ROM

NVIDIA9800 512MB:
MEM: 0x20000000
NVCAP: 0400000000000300080000000000000700000000
Download HEX  Download PLIST  Download ROM

NVIDIAGTX480 1536MB:
NVCAP: 0400000000000300000000000000000700000000
Download HEX  Download PLIST  Download ROM

PCIBUS (The following shows us that Gigabyte needs to get Bus 2 activated in order to activate Bus 1)
4 3 2 1 CPU

| | | |

BUS1:
DevicePath = PciRoot(0x1)/Pci(0x3,0x0)/Pci(0x0,0x0)

BUS2:
DevicePath = PciRoot(0x1)/Pci(0x5,0x0)/Pci(0x0,0x0)

BUS3:
DevicePath = PciRoot(0x1)/Pci(0x7,0x0)/Pci(0x0,0x0)

BUS4:
DevicePath = PciRoot(0x1)/Pci(0x9,0x0)/Pci(0x0,0x0)

Mixed NVidia GPU Combos:
Download 480-220-8600-eth0.hex
Download 480-220-8600-eth0.plist
I will explain necessary steps do extract and compile ROMs sooner or later here.
EXPLANATION:

Copy this in a text editor, if you’ve got two cards simply duplicate the <key>[DEVICEPATH] till (including) the first [/dict]

Code:<?xml version=”1.0″ encoding=”UTF-8″?><!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”><plist version=”1.0″>

<dict><key>[DEVICEPATH]</key><dict>
<key>@0,compatible</key>
<string>NVDA,NVMac</string>
<key>@0,device_type</key>
<string>display</string>
<key>@0,name</key>
<string>NVDA,Display-A</string>
<key>@1,compatible</key>
<string>NVDA,NVMac</string>
<key>@1,device_type</key>
<string>display</string>
<key>@1,name</key>
<string>NVDA,Display-B</string>
<key>NVCAP</key>
<data>

[OUTPUTS]
</data>
<key>NVPM</key>
<data>
AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
</data>
<key>VRAM,totalsize</key>
<string>[MEMORYSIZE]</string>
<key>device_type</key>
<string>NVDA,GeForce</string>
<key>model</key>
<string>[MODELNAME]</string>
<key>name</key>
<string>NVDA,Parent</string>
<key>rom-revision</key><string>0x302e3176</string>
</dict>
</dict>
</plist>

Start terminal

Drag gfxutil in terminal type -f display and press enter
Modify [DEVICEPATH] in your texteditor to the output (you can copy and paste it) EXAMPLE:
PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)
Modify [MODELNAME] to your modelname EXAMPLE:
NVIDIA GeForce 8500GT
Modify [MEMORYSIZE] by selecting the value from this list:

32 – 0x02000000
64 – 0x04000000
128 – 0x08000000
256 – 0x10000000
320 – 0x14000000
512 – 0x20000000
640 – 0x28000000
768 – 0x30000000
1024 – 0x40000000

In this guide I will only cover VGA and DVI-I so if you need tvout/laptop/DVI-D checkout the links below. DVI-I is digital and analog, for most cards (even with one DVI and one VGA connecter, DVI-I / DVI-I should work. Modify [OUTPUTS] by selecting the value from this list:

DVI-I / DVI-I – BAAAAAAAAwAMAAAAAAAABwAAAAA=
VGA / DVI-I – BAAAAAAAAQAGAAAAAAAAAAAAAAA=
DVI-I / VGA – BAAAAAAAAwAEAAAAAAAABwAAAAA=

Save the file as Graphics.plist

Drag gfxutil in terminal type -i xml -o hex drag Graphics.plist in the terminal and drag it in again and change the last .plist to .hex EXAMPLE: /Volumes/Data/OSX/gfxutil -i xml -o hex /Volumes/Data/OSX/Graphics.plist /Volumes/Data/OSX/Graphics.hex