Jump to content
  • Announcements

    • Allan

      Forum Rules   04/13/2018

      Hello folks! As some things are being fixed, we'll keep you updated. Per hour the Forum Rules don't have a dedicated "Tab", so here is the place that we have our Rules back. New Users Lounge > [READ] - InsanelyMac Forum Rules - The InsanelyMac Staff Team. 
counter-resonance

MULTIPLE NVIDIA card installation HOW-TO. EFI STRINGS

12 posts in this topic

Recommended Posts

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

Share this post


Link to post
Share on other sites

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>

Share this post


Link to post
Share on other sites

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>

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

×