Jump to content

MULTIPLE NVIDIA card installation HOW-TO. EFI STRINGS

efi strings gfxutil nvidia quadro vram installation guide instructions how to qe/ci

  • Please log in to reply
11 replies to this topic

#1
counter-resonance

counter-resonance

    InsanelyMac Protégé

  • Members
  • Pip
  • 6 posts
  • Gender:Male
  • Location:Melbourne
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.

Attached Files



#2
KeNgoaiDao

KeNgoaiDao

    InsanelyMac Protégé

  • Members
  • Pip
  • 30 posts
Phewwww, thanks anyways! :thumbsup_anim:

#3
DarkUser89

DarkUser89

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 305 posts
  • Gender:Male
  • Location:Germany / Saarbrücken
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>


#4
Gringo Vermelho

Gringo Vermelho

    The Jan Bird fix

  • Supervisors
  • 6,112 posts
  • Gender:Male
  • Location:Brazil
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?

#5
RhunDraco

RhunDraco

    InsanelyMac Protégé

  • Members
  • Pip
  • 2 posts
Used your guide to get my dual EVGA GTX 560 Ti 448 Cores Classified cards working together. B)

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>


#6
ronalith

ronalith

    InsanelyMac Protégé

  • Members
  • Pip
  • 40 posts
  • Gender:Male
  • Location:Canada
would this method work for different brands? i.e. one nvidia and one intel in a laptop?

#7
iLeopod

iLeopod

    InsanelyMac Sage

  • Members
  • PipPipPipPipPipPip
  • 435 posts
  • Gender:Male
  • Location:Germany
  • Interests:ileopod.wordpress.com
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.

#8
ronalith

ronalith

    InsanelyMac Protégé

  • Members
  • Pip
  • 40 posts
  • Gender:Male
  • Location:Canada
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

#9
joot

joot

    InsanelyMac Protégé

  • Members
  • Pip
  • 40 posts
Would this work for HDMI output ? Anybody tried it with HDMI ?

#10
starobrno1

starobrno1

    InsanelyMac Legend

  • Banned
  • PipPipPipPipPipPipPip
  • 930 posts
  • Gender:Male
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

#11
Neolo

Neolo

    InsanelyMac Protégé

  • Members
  • PipPip
  • 99 posts
Can't get HDMI on 9800GT with that.

#12
iLeopod

iLeopod

    InsanelyMac Sage

  • Members
  • PipPipPipPipPipPip
  • 435 posts
  • Gender:Male
  • Location:Germany
  • Interests:ileopod.wordpress.com
Hdmi is bugged on 9800gt since 10.6.3. Use DVI if possible.





Also tagged with one or more of these keywords: efi strings, gfxutil, nvidia, quadro, vram, installation, guide, instructions, how to, qe/ci


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy