Disclaimer: if you've stumbled across this article don't attempt these steps without reading through the whole post and know that if you do screw something up your system may not boot again properly until you put your drive into another Mac or Hackintosh and undo your changes.

When I first purchased my ultimate Hackintosh machine, I bought the EVGA NVIDIA GeForce GTX 570 card. I did so foolishly without first finding out whether it was "supported" by OS X or the Hacktinosh community at large.  I just got it because it sounded awesome and like a typical Linux user, assumed the drivers will come later.

Before we get going with the solution to getting the GTX 570 card working, here's my system specs:

  • Asus P6X58D-E Motherboard
  • Intel i7 970 processor 3.2GHz 6 Cores, 12 threads
  • 6 -- 4GB Kingston DDR3 1333MHz -- 24GB RAM
  • 2 -- 2TB Western Digital Black SATA3 6GB/s drives

After a few attempts I was able to get the GTX 570 to boot and after a few more I was able to get it to boot up with correct resolution detection, it wasn't until 24 hours later that I was able to get everything to boot up with OpenGL (which was the biggest headache).

Okay so here's what I had to do to get it working... I ran into countless dead ends with OS X 10.7.0 so, refusing to be beat, I updated to 10.7.1 and that's when everything started working correctly for me.

I'm running:

Another important note with my rig is that my EVGA NVIDIA GTX 570 has the device ID 1081.  There are others which have 1086 instead and so they need different configuration modifications than those listed below.  (Possibly just changing 1081 to 1086 wherever it's listed below)

First thing's first, once you have OS X 10.7.1 installed, you need to edit the /System/Library/Extensions/NVDAGF100Hal.kext/Contents/Info.plist to add the device ID for your video card. I like to do stuff right from the Terminal though there are countless helper apps, so first let's create a Backup folder for all of the files we're going to break in case we need the originals again...

$ sudo su
Password:
# mkdir /Users//Desktop/Backup-GTX570-Mods/
# rsync -av /System/Library/Extensions/NVDAGF100Hal.kext/ /Users//Desktop/Backup-GTX570-Mods/NVDAGF100Hal.kext/

Now let's add our device IDs..

# nano -wT2 /System/Library/Extensions/NVDAGF100Hal.kext/Contents/Info.plist

Add your device ID to the IOPCIPrimaryMatch key list, mine is 1081 but yours may be 1086. The 10de part is nVidia's vendor ID, in case you're wondering. That's why they're all the same.

  <key>IOPCIPrimaryMatch</key>
  <string>
    0x06c010de&0xffe0ffff
    0x0dc010de&0xffc0ffff
    0x0e2010de&0xffe0ffff
    0x0ee010de&0xffe0ffff
    0x0f0010de&0xffc0ffff
    0x104010de&0xffc0ffff
    0x124010de&0xffc0ffff
    0x108110de&0xffc0ffff
  </string>

With this addition your system should boot up and you should have the correct resolution for your monitor instead of being stuck at 1024×768. YouTube videos will play but you won't be able to use any OpenGL or OpenCL like watching a video with VLC or opening Chess.

Next thing I added was ATY_init.kext which set things in motion.  Once downloaded and unzipped...

# mv /Users//Downloads/ATY_Init.kext /System/Library/Extensions/
# chown -R 0:0 /System/Library/Extensions/ATY_Init.kext
# chmod -R 755 /System/Library/Extensions/ATY_Init.kext

There are three more files I needed to modify to get everything swimming along, the first was /Extra/com.apple.Boot.plist or, in my case since I'm running Chimera 1.5.4 /Extra/org.chameleon.Boot.plist In there I needed to disable the Graphics Mode by setting it to a blank string and add a Hex EFI String for the GTX 570 card. My Kernel Flags section also needed to be modified as it had something about i386 in it. Here's my /Extra/org.chameleon.Boot.plist (update sept 16 at bottom of this post has new file)

<plist version="1.0″>
<dict>
  <key>Kernel</key>
  <string>mach_kernel</string>
  <key>Kernel Flags</key>
  <string>npci=0x2000</string>
  <key>Timeout</key>
  <string>2</string>
  <key>Legacy Logo</key>
  <string>Yes</string>
  <key>EthernetBuiltIn</key>
  <string>Yes</string>
  <key>Graphics Mode</key>
  <string></string>
  <key>device-properties</key>
  <string>6c0200000100000001000000600200000d00000002010c00d041030a000000000101060000030101060000007fff04001e00000072006f006d002d007200650076006900730069006f006e0000002e0000004e5649444941204765466f7263652047545820353730204f70656e474c20456e67696e65205b4546495d22000000400030002c006400650076006900630065005f00740079007000650000000b000000646973706c6179100000004e00560043004100500000001800000004000000000003000c00000000000007000000000e0000006e0061006d00650000000b000000646973706c617914000000400030002c006e0061006d0065000000120000004e5644412c446973706c61792d41100000006d006f00640065006c0000001a0000004e5649444941204765466f72636520475458203537300e0000004e00560050004d000000200000000100000000000000000000000000000000000000000000000000000014000000400031002c006e0061006d0065000000120000004e5644412c446973706c61792d4220000000400031002c0063006f006d00700061007400690062006c00650000000e0000004e5644412c4e564d6163220000005600520041004d002c0074006f00740061006c00730069007a0065000000080000000000005020000000400030002c0063006f006d00700061007400690062006c00650000000e0000004e5644412c4e564d616322000000400031002c006400650076006900630065005f00740079007000650000000b000000646973706c61791c0000006400650076006900630065005f00740079007000650000000f0000004e5644412c506172656e74</string>
</dict>
</plist>

To generate my HEX string I used OSX86Tools. Open it up (reboot may be required?) and press Add EFI Strings/Boot Flag in the bottom box. Click on the GFX Strings button in the dialog box that pops up and then for Graphics Card choose Custom GeForce... at the bottom. Enter: NVIDIA GeForce GTX 570 for the name, Custom... for the VRAM and enter: 0x50000000 which equates to 1280MB. Select DVI-I / DVI-I and continue.

I just used the HEX value generated in the bottom window and created my new device-properties key manually. I didn't use the program to manipulate the org.chameleon.Boot.plist file, I did it via Terminal manually.

So now the system will boot and not set the graphics mode and it will be told that it's OpenGL capable. The next file I changed was a hex change from netkas to enable OpenCL for the card. So let's back up the files and make them user-editable.

# rsync -av /System/Library/Extensions/GeForceGLDriver.bundle/ /Users//Desktop/Backup-GTX570-Mods/GeForceGLDriver.bundle/
# cp /Users//Desktop/Backup-GTX570-Mods/GeForceGLDriver.bundle/Contents/MacOS/GeForceGLDriver /Users//Desktop/
# chown /Users//Desktop/GeForceGLDriver

Now let's use HexEdit and follow netkas' instructions on our /Users//Desktop/GeForceGLDriver file.

Find
a883f8028b45f0
replace 02 with 03 to get
a883f8038b45f0

Find
ea83f802498b
replace 02 with 03 to get
ea83f803498b

So with our Desktop copy of the file patched and our original safely backed up let's put this one into place...

# mv /Users//Desktop/GeForceGLDriver /System/Library/Extensions/GeForceGLDriver.bundle/Contents/MacOS/
# chown -R 0:0 /System/Library/Extensions/GeForceGLDriver.bundle/
# chmod -R 755 /System/Library/Extensions/GeForceGLDriver.bundle/

So now there's just one more file left to tweak, it's the AppleGraphicsPowerManagement or AGPM. For our changes to take effect the system type has to match our defined system type and our GTX 570's device ID. So I used Multibeast from tonymacx86 to change my system type to iMac12,2 because that's what others had done and that's where the changes in this file seem to be.

# rsync -av /System/Library/Extensions/AppleGraphicsPowerManagement.kext/ /Users//Desktop/Backup-GTX570/AppleGraphicsPowerManagement.kext/

Open up /System/Library/Extensions/AppleGraphicsPowerManagement.kext/Contents/Info.plist and edit the section which begins with iMac12,2 to be as follows:

        <key>iMac12,2</key>
        <dict>
          <key>Vendor10deDevice1081</key>
          <dict>
          <key>Heuristic</key>
          <dict>
            <key>ID</key>
            <integer>0</integer>
            <key>IdleInterval</key>
            <integer>250</integer>
            <key>SensorOption</key>
            <integer>1</integer>
            <key>SensorSampleRate</key>
            <integer>4</integer>
            <key>TargetCount</key>
            <integer>5</integer>
            <key>Threshold_High</key>
            <array>
              <integer>93</integer>
              <integer>93</integer>
              <integer>93</integer>
              <integer>100</integer>
            </array>
            <key>Threshold_Low</key>
            <array>
              <integer>0</integer>
              <integer>97</integer>
              <integer>97</integer>
              <integer>100</integer>
            </array>
          </dict>
          <key>LogControl</key>
          <integer>1</integer>
          <key>control-id</key>
          <integer>18</integer>
        </dict>
        <key>default-control-id</key>
        <integer>18</integer>
      </dict>

So! After making all of those changes and rebooting, I was succesfully able to boot, MUCH faster than ever before and once the system booted up OpenGL/CI worked videos play in VLC, youtubes tube, and 3D benchmarks in NovaBench and Xbench don't crash the system anymore.

I tossed the EVGA nVidia GeForce GTX 465 in the second PCI Express slot and without any futher alterations I have quad monitors with 1920×1080 each. There's a slight flicker when I move a playing video from one monitor on one card to another but I seem to be able to play them halfway between each just fine.

A big thanks goes to the materials found from these threads on tonymacx86's forum and InsanelyMac's. Wouldn't have been possible for me to figure this out without all of their leg work.

Update [sept 13]: after only two days of use I noticed that my sound card wasn't working. I used Multibeast to add in the missing kext files and I've been working on recovering from that ever since. I can boot the system fine, but once again no OpenGL. In the process of trying to fix things I've updated to the new Chameleon layout which got rid of /Extras/Extensions and added UseKernelCache key. If I don't boot using the kernel cache, I can't boot. If I do use the kernel cache, it ignores my Graphics Mode declaration (I'm guessing that's why the OpenGL isn't working). Trial and error is becoming extremely annoying, but I will solve this... and then never update my system again.

Update [sept 16]: after a week more of trial and error, I've got everything working correctly again, I've had to alter my org.chameleon.Boot.plist because with the new Chimera versions it seems the Graphics Mode function is ignored, BUT, I think the only thing we need to avoid is declaring the graphics mode to the card before the OS boots (so the OpenGL) will work. So to do so we can just boot with -v and the graphics mode will only get set once the OS boots. Here's my new /Extra/org.chameleon.Boot.plist

<plist version="1.0″>
<dict>
  <key>Kernel</key>
  <string>mach_kernel</string>
  <key>Kernel Flags</key>
  <string>-v arch=i386 npci=0x2000</string>
  <key>Timeout</key>
  <string>2</string>
  <key>Legacy Logo</key>
  <string>Yes</string>
  <key>EthernetBuiltIn</key>
  <string>Yes</string>
  <key>UseKernelCache</key>
  <string>Yes</string>
  <key>GraphicsEnabler</key>
  <string></string>
  <key>Graphics Mode</key>
  <string></string>
  <key>device-properties</key>
  <string>6c0200000100000001000000600200000d00000002010c00d041030a000000000101060000030101060000007fff04001e00000072006f006d002d007200650076006900730069006f006e0000002e0000004e5649444941204765466f7263652047545820353730204f70656e474c20456e67696e65205b4546495d22000000400030002c006400650076006900630065005f00740079007000650000000b000000646973706c6179100000004e00560043004100500000001800000004000000000003000c00000000000007000000000e0000006e0061006d00650000000b000000646973706c617914000000400030002c006e0061006d0065000000120000004e5644412c446973706c61792d41100000006d006f00640065006c0000001a0000004e5649444941204765466f72636520475458203537300e0000004e00560050004d000000200000000100000000000000000000000000000000000000000000000000000014000000400031002c006e0061006d0065000000120000004e5644412c446973706c61792d4220000000400031002c0063006f006d00700061007400690062006c00650000000e0000004e5644412c4e564d6163220000005600520041004d002c0074006f00740061006c00730069007a0065000000080000000000005020000000400030002c0063006f006d00700061007400690062006c00650000000e0000004e5644412c4e564d616322000000400031002c006400650076006900630065005f00740079007000650000000b000000646973706c61791c0000006400650076006900630065005f00740079007000650000000f0000004e5644412c506172656e74</string>
</dict>
</plist>

Check out the write-up on 10.7.2 for more.

MarieDom Radio - 2012-02-20 21:03:35
Some more info about my above problem:
Strange: if I add

Graphics Mode
"Graphics Mode"="1280x1024x32"

in /Extra/org.chameleon.Boot.plist
the screen is 1280 x 1024, so I followed the entire procedure.

I always get 1024x768 if I remove
"Graphics Mode"="1280x1024x32"
MarieDom Radio - 2012-02-20 19:28:11
Hello.

The first step does not allow me to display anything else than 1024x768.
I added the line:
0x108110de&0xffc0ffff
checked the 1081 ID with sysinfo, section monitor. I saved the file and reopened it to double check.
I rebooted And ... still 1024 x 768

Chimera is 1,7, not 1,5,4
I bought OSX 10,7,3 on app store and installed it over 10,6,8, (cd bought on app store 1 month ago.)

I'm a beginner with OSX, but I'm a linux user, so terminal commands are not really a problem for me.

So, I do not know what might be my problem.

Sys info reports:
Jeu de composants: GeForce GTX 570
Type: Processeur graphique (GPU)
Bus: PCIe
Logement: Slot-1
Longueur de la voie PCIe: x16
VRAM (totale): 1280 Mo
Fournisseur: NVIDIA (0x10de)
Identifiant du périphérique: 0x1081
Identifiant de révision: 0x00a1
Révision de la ROM: 70.10.17.00.03
Jesse Lavender - 2011-12-17 19:53:24
Awesome work!

A question. I just built my Hackintosh yesterday with the GTX 470. Everything works great and it was super easy with UniBeast and Lion.
I really want three monitors, but always thought you couldn't do that on a hack, but I noticed you said you have 4 of them running! That's awesome! I guess my question is...how was that possible? I'm thinking of getting another 470, so do you think something could work out with that?
edwardbeckettx - 2011-11-25 07:54:44
I'm dying to know how I can install initially install snow leopard on my new box ...

i7 2600K Unlocked
Asus p67 sabertooth
Evga GTX 570

Though Lion may be possible ... I don't know if SL is realistic without first having a compatible card ...

May just have to stick with Deb 'Squeeze' and KDE for now ... :-)
elmunkee - 2011-10-16 19:29:24
Thank you very much for this awesome tutorial! Lost hope getting my GTX 570 to work on OSX but now up and running :) Do you accept donations? Would be a pleasure to part with some cash so you could buy yourself a beer or two
padmeeh - 2011-10-05 12:17:14
any option to run 560 ti in sli

both to be pluged in the board

NOT request you to run SLI under osx
Lion

regards
Ian - 2011-09-20 10:31:45
Open Terminal and put in:

sudo nano -wT2 /System/Library/Extensions/NVDAGF100Hal.kext/Contents/Info.plist

scroll down to the IOPCIPrimaryMatch key and add a new line and tab over a couple of times to match the previous lines and then add:
0x108110de&0xffc0ffff

I have faith in you adding one line to a file grasshopper.
Scott Hallgren - 2011-09-18 22:11:51
Any chance I could con you into sharing your modified NVDAGF100 kext with me?
gffmac - 2011-09-16 14:20:27
I got it working without ATY_init.kext and with graphics enabler from the boot.plist and also no efi string needed. Only must was to have -v in your boot.plist otherwise no go with 3d apps/vlc
Ian - 2011-09-16 13:40:58
Using Multibeast - Easybeast (not DSDT) Yes, used "System Utilities" checkbox to clean but just once at the end, not after each thing.
Gisshan - 2011-09-15 16:29:26
Did you use Multibeast when you set up your machine for a DSDT? Or did you only use it for changing the system identifier? Also, did you use the utilities (like cache cleaning) between steps and reboot? Or were these steps done in sequence without reboots or anything else? I have the exact same video card, and I just can't seem to get it to work for the life of me.
Ian - 2011-09-13 02:52:37
I believe it's this one...
http://www.newegg.com/Product/Product.aspx?Item=N82E16814130593
raihak - 2011-09-13 01:02:52
Thyanks so much for simplifying this making it child-proof for noobs like me. I intend to get a GTX570 soon.

Can you share the exact model of your EVGA GTX570? You probably know that this card from EVGA comes in many flavors (http://www.newegg.com/Product/ProductList.aspx?Submit=ENE&N=50001402%2040000048%20600094002%20600007788&IsNodeId=1&Description=GTX%20570&name=1280MB&Order=BESTMATCH)

Which one is yours?

Your answer will help me choose.

Thanks a Bunch!

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>