How do i make my own gfx string?
I have this same question here
REV2/1.13.08
A. Synopsis: 1. dump your ioreg
2. find your device properties
3. find your device path
4. edit your device path and properties into a reference doc - either string or plist
5. edit com.apple.Boot.plist
B. Detail:1. grab mcmatrixs' gfxutil here and give a *thorough* read to this thread:
http://forum.netkas.org/index.php/topic,64.msg519.html#msg5192. dump your device tree. In Terminal type: ioreg -w0 -l IODeviceTree > regdump.txt
3. Find a reference hex string/plist for your device (or one that's close) one of two ways: A) comb the forums here as there are many posted; B) use one of the supplied strings in netkas' efi package.
4. if using a hex string, convert to xml: ./gfxutil -i hex -o xml in.hex out.plist.
(if you want a nice decoded list of all the strings and data in the plist: ./gfxutil -s -n -v -i hex -o xml in.hex out.plist).
5. find PCI0@0 in your regdump. Note the acpi-path and _UID.
6. follow the device tree from PCI0@0 to display@0. When you find display@0, note the parent device. This will be your path, i.e.:
+-o PCI0@0 <class IOACPIPlatformDevice, registered, matched, active, busy 0, retain 67>
| {
...
| "acpi-path" = "IOACPIPlane:/_SB/PCI0@0"
| "_UID" = "1"
...
| }
|
+-o pci-bridge@1 <class IOPCIDevice, registered, matched, active, busy 0, retain 9>
| {
...
|
+-o display@0 <class IOPCIDevice, registered, matched, active, busy 0, retain 16>
Path in this example is: _SB/PCI0@0_UID=1/pci-bridge@1/display@0
Shorthand is: pciroot(0x1)/pci(0x1,0x0)/pci(0x0,0x0)
7. following mcmatrixs' guide, convert your device path to shorthand notation, then edit <key> for device path in your plist, i.e.:
...
<key>PciRoot(0x1)/Pci(0x1,0x0)/Pci(0x0,0x0)</key>
<dict>
...
8. add or change in the plist all properties for your device found in syslog:
a) open Console in Applications >Utilities
b) click "Show Log List" and highlight system.log
c) in the Filter field (top right) type NVinject or ATIinject or whatever you use to get your card working.
d) you should see something like this for NVInject:
NVinject: Probing.
NVinject: Setting NVPM=<data not shown>
NVinject: Setting @0,device_type=display
NVinject: Setting NVCAP=<data not shown>
NVinject: Setting @0,compatible=NVDA,NVMac
NVinject: Setting model=Graphics by NVIDIA
NVinject: Setting @1,name=NVDA,Display-B
NVinject: Setting device_type=NVDA,Parent
NVinject: Setting name=display
NVinject: Setting rom-revision=NVinject 0.1.7
NVinject: Setting @0,name=NVDA,Display-A
NVinject: Setting @1,compatible=NVDA,NVMac
NVinject: Setting @1,device_type=display
..or something like this with ATIinject:
ATIinject: Setting @0,display-link-component-bits=0x00000006
ATIinject: Setting DFP1,EDID=<data not shown>
ATIinject: Setting ATY,Copyright=Copyright ATI Technologies Inc. 2005
ATIinject: Setting @0,display-connect-flags=0000000000
ATIinject: Setting @0,display-dual-link=0x00000002
ATIinject: Setting @0,ATY,EFIDisplay=LVDS
ATIinject: Setting model=ATY,RadeonX1600
ATIinject: Setting AAPL00,DualLink=0x00000001
ATIinject: Setting @0,device_type=display
ATIinject: Setting LVDS,EDID=<data not shown>
ATIinject: Setting @1,display-connect-flags=0000000000
ATIinject: Setting AAPL,backlight-control=0x00000001
ATIinject: Setting ATY,DeviceID=<data not shown>
ATIinject: Setting name=ATY,WormyParent
ATIinject: Setting AAPL00,Coherency=0x00000002
ATIinject: Setting @1,connector-type=0x00000004
ATIinject: Setting @0,compatible=ATY,Wormy
ATIinject: Setting @1,name=ATY,Wormy
ATIinject: Setting @0,AAPL,boot-display=0x00000001
ATIinject: Setting @0,name=ATY,Wormy
ATIinject: Setting @1,compatible=ATY,Wormy
ATIinject: Setting @0,display-dither-support=0000000000
ATIinject: Setting @0,connector-type=0x00000002
ATIinject: Setting @0,inverter-current=0000000000
ATIinject: Setting @1,device_type=display
ATIinject: Setting @0,display-link-type=0000000000
ATIinject: Setting device-id=<data not shown>
ATIinject: Setting ATY,EFIVersion=01.00.068
ATIinject: Setting device_type=ATY,WormyParent
ATIinject: Setting AAPL00,LinkType=0000000000
ATIinject: Setting ATY,VendorID=0x00001002
[CAUTION: Observation] I have no idea which properties to include in a string. When I built the .plist for my card (XFX7600GT), I included the device path, and the minimum information found in my syslog. For me, that worked. YMMV. You should carefully match device properties in your ioreg with those in an "already working" string.
9. convert plist to hex: ./gfxutil -i xml -o hex in.plist out.hex
10. insert new hex string into com.apple.Boot.plist.
11. Remove 3rd party kexts, clear cache, and reboot.
Comments, suggestions, revisions welcomed! Please PM or email me.[String Editing Note]: try not use TextEdit when working with the hex string or xml plist. Its been my experience that using TextEdit will add application metadata to the file and corrupt your hex. Plist Editor (an X-Code add-on tool) works well for editing the plist, but vi or nano is necessary when working with the hex string. vi and nano are Terminal applications and very simple to use. Docs are available for the googling, or can be found in Terminal by typing: man vi; or man nano.