counter-resonance Posted January 14, 2012 Share Posted January 14, 2012 This guide is for OS X 10.6.4 through to 10.7.0 Introduction: I'm a long time lurker on these forums and over the years have installed osx on lots of pc's all good fun and thought i'd give a little back, There are some poeple who have written good guides and how-to's on EFI strings method for nVidia video card recongnition in OSX, most of them don't cover all the bases and usually focus on a single card or specific setup. My aim in this guide is to be broad in demonstrating installation of all nVidia cards with the EFI string method and also who how to do it with multi card setups too, I aim to show all the necessary commands in the terminal in order for a complete noob to be able to understand and confidently follow along. Please note this guide is only for the EFI string preparation and installation into the apple.com.Boot.plist file. Any thing to do with customisation of KEXTS is not part of this guide, so be sure to check the usual places for custom KEXTs if needed, Some good places to start: www.osx86.net - formerly www.kexts.com wiki.osx86project.org www.insanelymac.com www.projectosx.com and most importantly www.google.com Files needed: gfxutil in.plist -modded but sourced from "agrafuese" from their insanelymac forum guide. textwrangler - google it. IMPORTANT, READ INSTRUCTIONS FROM START TO FINISH BEFORE BEGINNING part one: getting card details use a program called textwrangler, google it, it's an excellent text editor with some features that will make following this guide alot easier for yourself I promise you, Creat a text file on your desktop called whatever, i'll call mine info.txt now copy the corresponding string between the < > below of the Video RAM size your video card has labelled as "video ram": the digit after 0x are multiples of 256, the ones after 0x0 are multiples of 16. <0x08000000> - 128Mb <0x10000000> - 256Mb <0x14000000> - 320Mb <0x20000000> - 512Mb <0x28000000> - 640Mb <0x30000000> - 768Mb <0x38000000> - 896Mb <0x50000000> - 1280Mb <0x60000000> - 1536Mb next choose the type of outputs on the particular card labelled as "connectors": the connector layout: Mainboard side of card / SLI connector side of card <BAAAAAAAAwAMAAAAAAAABwAAAAA=> - DVI-I / DVI-I <BAAAAAAAAQAGAAAAAAAAAAAAAAA=> - VGA / DVI-I <BAAAAAAAAwAEAAAAAAAABwAAAAA=> - DVI-I / VGA now complete part one for your second card if you are going with 2 cards, and remember to keep the details for each card clearly labelled for that card. Part two: getting the card location if your going to use 2 cards, you must do this step twice, starting with your primary card inserted into your PC without the secondary card in the system, then repeat the process with the secondary card in the secondary slot it will occupy with the primary card removed. so in short, get first card location, swap out the card then get the secondary card location. this is how: you need root access, go here to learn how to get it: support.apple.com/kb/ht1528 with your primary or only card installed in the slot you intend to use it in, extract gfxutil to your desktop, open terminal and type: su [hit enter] [enter your root password then hit enter] cd \Users\[your username]\Desktop\ [hit enter] ./gfxutil -f display [hit enter] OK once you enter that last line you should get an outpu on screen like: PciRoot(0x4)/Pci(0x1,0x0)/Pci(0x0,0x0) label it as "location" copy it by dragin over with your mouse and right click, copy, then paste into you text file "info.txt" you recorded you video card details to, if using 2 cards make sure it's labelled for the card currently in your system then repeat with your second card fitted to it's slot again, only if you going to use 2 cards. Your almost done, your info.txt should read something like this: card a video ram:0x20000000 connectors:BAAAAAAAAwAMAAAAAAAABwAAAAA= location:PciRoot(0x4)/Pci(6x1,0x0)/Pci(0x0,0x0) card b (only if using 2 cards) video ram:0x20000000 connectors:BAAAAAAAAwAMAAAAAAAABwAAAAA= location:PciRoot(0x4)/Pci(0x6,0x0)/Pci(0x0,0x0) part three: modding the in.plist this is the part where you cop over your collected data to the template in.plist file. open it with textwrangler. locate the text "LOCATION" and paste your location info in it's place. locate the text "VRAMINFO" and paste your video ram info in it's place. locate the text "CONNECTORS" and paste your connectors info in it's place. locate the text "VIDEOCARDNAME" and paste your video card name in it's place. <key>model</key> <string>NVIDIA GeForce GTX 275 - 896MB</string> for example. now if your only using one video card you can delete everything after "</dict>" up until the second occurrence of </dict>so there will be a total of 2 x </dict> at the end of the file like this: </dict> </dict> </plist> now procede to part four. If your using 2 video cards, do the same again for card b locate the text "LOCATIONB" and paste your location info in it's place. locate the text "VRAMINFOB" and paste your video ram info in it's place. locate the text "CONNECTORSB" and paste your connectors info in it's place. locate the text "VIDEOCARDNAMEB" and paste your video card name in it's place. <key>model</key> <string>NVIDIA GeForce 8800GT- 512MB</string> for example. part four: this part is where you convert your in.plist to an EFI string. save your info.txt and in.plist. Open terminal again with root access and type: cd /Users/[your username]/Desktop/ ./gfxutil -i xml -o hex ./in.plist ./out.hex ok, now open the out.hex file with textedit, hit Command + A to select all and Command + C to copy to your clipboard. go back to terminal and type: nano /Library/Preferences/SystemConfiguration/com.apple.Boot.plist this opens up the nano text editor, use the arrow keys to go </dict> and enter a line above it indented just like the others above that, and enter: <key>device-properties</key> <string>"PASTE EFI STRING HERE"</string> so when your done it will look like this: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$ <plist version="1.0"> <dict> <key>Graphics Mode</key> <string>1920x1200x32</string> <key>GraphicsEnabler</key> <string>Yes</string> <key>Kernel Flags</key> <string></string> <key>device-properties</key> <string>ce0700000100000002000000e20300001500000002010c00d041030a04</string> </plist> The EFI string you paste may look wierd but as long as it has no leading or trailing spaces between <string>and</string> you all good. now to save the file, you press Control + X, then hit Y to confirm overwrite of old file. Your done. Shutdown the PC, install all video cards into their slots and Boot the PC, and it should work, if not, try NVEnabler.kext for single cards, or research the forums and OSX HCL pages on the OSX86 Wiki links above. This is AFAIK the only way to get 2 differing NVIDIA cards to work in the same OSX system. NVIDIA EFI Strings - HOWTO.zip 1 Link to comment Share on other sites More sharing options...
KeNgoaiDao Posted March 2, 2012 Share Posted March 2, 2012 Phewwww, thanks anyways! Link to comment Share on other sites More sharing options...
DarkUser89 Posted March 15, 2012 Share Posted March 15, 2012 please help me! No works! Blackscreen :-( <?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>PciRoot(0x1)/Pci(0x1,0x0)/Pci(0x0,0x0)</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>@2,#adress-cells</key> <string>0x01000000</string> <key>@2,#size-cells</key> <string>0x00000000</string> <key>@2,compatible</key> <string>NVDA,sensor-parent</string> <key>@2,device_type</key> <string>NVDA,gpu-diode</string> <key>@2,hwctrl-params-version</key> <string>0x02000000</string> <key>@2,hwsensor-params-version</key> <string>0x02000000</string> <key>@2,name</key> <string>sensor-parent</string> <key>@2,reg</key> <string>0x02000000</string> <key>NVCAP</key> <data> BAAAAAAAAQAGAAAAAAAAAAAAAAA= </data> <key>NVPM</key> <data> AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== </data> <key>VRAM,totalsize</key> <string>0x40000000</string> <key>device_type</key> <string>NVDA,GeForce</string> <key>model</key> <string>GTX 560</string> <key>name</key> <string>NVDA,Parent</string> <key>rom-revision</key> <string>70.24.24.00.01</string> </dict> </dict> </plist> Link to comment Share on other sites More sharing options...
Gringo Vermelho Posted March 16, 2012 Share Posted March 16, 2012 Those device properties are for a single card. Did you convert it to hex and place it in the device properties string in your /Extra/org.chameleon.Boot.plist? Link to comment Share on other sites More sharing options...
RhunDraco Posted March 20, 2012 Share Posted March 20, 2012 Used your guide to get my dual EVGA GTX 560 Ti 448 Cores Classified cards working together. My motherboard is an Asus P8P67 Pro rev 3.0. <?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>PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)</key> <dict> <key>@0,AAPL,boot-display</key> <string></string> <key>@0,can-hot-plug</key> <string></string> <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,can-hot-plug</key> <string></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>AAPL,aux-power-connected</key> <string>0x00000001</string> <key>AAPL,backlight-control</key> <string>0x00000000</string> <key>AAPL,gart-width</key> <integer>64</integer> <key>AAPL00,blackscreen-preferences</key> <string>0x00000000</string> <key>AAPL01,blackscreen-preferences</key> <string>0x00000000</string> <key>IONVRAMProperty</key> <true/> <key>NVCAP</key> <data> BAAAAAAAAwAMAAAAAAAABwAAAAA= </data> <key>NVDA,Features</key> <string>0x108006ff</string> <key>NVPM</key> <data> AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== </data> <key>VRAM,totalsize</key> <string>0x50000000</string> <key>device_type</key> <string>NVDA,Parent</string> <key>model</key> <string>GeForce GTX 560 Ti 448 Cores Classified</string> <key>rm_board_number</key> <data> AAAAAA== </data> <key>rm_multiboard_capable</key> <data> AQAAAA== </data> <key>rom-revision</key> <string>70.10.61.00.62</string> <key>subsystem-id</key> <string>0x00001080</string> </dict> <key>PciRoot(0x0)/Pci(0x1,0x1)/Pci(0x0,0x0)</key> <dict> <key>@0,can-hot-plug</key> <string></string> <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,can-hot-plug</key> <string></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>AAPL,aux-power-connected</key> <string>0x00000001</string> <key>AAPL,backlight-control</key> <string>0x00000000</string> <key>AAPL,gart-width</key> <integer>64</integer> <key>AAPL00,blackscreen-preferences</key> <string>0x00000000</string> <key>AAPL01,blackscreen-preferences</key> <string>0x00000000</string> <key>IONVRAMProperty</key> <true/> <key>NVCAP</key> <data> BAAAAAAAAwAMAAAAAAAABwAAAAA= </data> <key>NVDA,Features</key> <string>0x108006ff</string> <key>NVPM</key> <data> AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== </data> <key>VRAM,totalsize</key> <string>0x50000000</string> <key>device_type</key> <string>NVDA,Child</string> <key>model</key> <string>GeForce GTX 560 Ti 448 Cores Classified</string> <key>rm_board_number</key> <data> AAAAAA== </data> <key>rm_multiboard_capable</key> <data> AQAAAA== </data> <key>rom-revision</key> <string>70.10.61.00.62</string> <key>subsystem-id</key> <string>0x00001080</string> </dict> </dict> </plist> 1 Link to comment Share on other sites More sharing options...
ronalith Posted April 9, 2012 Share Posted April 9, 2012 would this method work for different brands? i.e. one nvidia and one intel in a laptop? Link to comment Share on other sites More sharing options...
iLeopod Posted April 9, 2012 Share Posted April 9, 2012 If you referring two optimus the problem is that in most situations only the internal card could be enabled. Although Apple has models with switchable Graphics this Method is not working on Windows based Laptops until today. 1 Link to comment Share on other sites More sharing options...
ronalith Posted April 9, 2012 Share Posted April 9, 2012 Thank you. Actually my problem (as a lot more others) is that once you activate the Nvidia (I did with GraphicsEnabler=y), you don't get any output trough the laptop display. Only trough HDMI Link to comment Share on other sites More sharing options...
joot Posted May 18, 2012 Share Posted May 18, 2012 Would this work for HDMI output ? Anybody tried it with HDMI ? Link to comment Share on other sites More sharing options...
starobrno1 Posted July 8, 2012 Share Posted July 8, 2012 I used to have a nvinject.kext in extensions that I edited myself to get two cards working but somewhere round chameleon revision 1800-1900 I don´t need it. So try graphicsenabler=yes maby that works for you too. What is really crazy though is that its only working in my GA hackmacs not my my Asus Link to comment Share on other sites More sharing options...
Neolo Posted March 11, 2013 Share Posted March 11, 2013 Can't get HDMI on 9800GT with that. Link to comment Share on other sites More sharing options...
iLeopod Posted March 26, 2013 Share Posted March 26, 2013 Hdmi is bugged on 9800gt since 10.6.3. Use DVI if possible. Link to comment Share on other sites More sharing options...
flazz10 Posted February 1, 2019 Share Posted February 1, 2019 thanks so much! Link to comment Share on other sites More sharing options...
Recommended Posts