Snow Leopard Hackintosh (GA-EP45-EXTREME), Multiple Video Cards & More!
I’m not here to guide you through a Snow Leopard install….but I am here to make your Snow Leopard install…better. If you have a GA-EP45-EXTREME, you’re in luck.
No doubt you have probably followed this guide to get your Snow Leopard install. Congrats. It’s a pretty good guide, and it covers most of the bases. I honestly cannot be arsed writing up a full guide. This is for those who have Snow Leopard installed and want to fix up some things. That guide works perfectly with the GA-EP45-EXTREME, minus Audio (well sorta), IDE SATA Mode and IDE drives. I’ll get to that.
So, I installed Snow Leopard with OSInstall.mpkg and I had to deselect stuff for it to install. How do I install that other junk?
Or also known as, I selected QuickTime but QuickTime isn’t installed. Where the FUCK is it? OSInstall.mpkg didn’t seem to do an excellent job of finishing an install properly…even though it said it did. Put back in your Snow Leopard DVD, select Optional Installs and reinstall everything. Don’t worry, Snow Leopard won’t fall over. This will fix most of your missing packages.While you’re at it, install XCode.
Snow Leopard is up and running, but I want to benchmark. What do I use?
Xbench, CINEBENCH, Geekbench and OpenGL Extensions Viewer.
I want to “complete” my smbios.plist
I don’t blame you, and you should. You should boot into Windows, run CPU-Z and export all your details to a HTML file…then use those details to populate your smbios.plist. Make sure you use MacPro3,1 or 4,1 for Core i7. This thread has documentation for the smbios.plist file.
What should I have in my DSDT file? What should I have in my EFI string?
As much as possible. For both. This is going to differ for each machine and even configurations per machine…but here’s what more you can do for a GA-EP45-EXTREME. After you’ve got your DSDT.aml that works for Ethernet, Sound…you can…
a) Replace your LAN entries with GIGE and enable the GP9 fix. (Check the SL_Pack of the guide i mentioned early, GIGE is better)
b) Replace AZAL with HDEF for better audio. You should have already done this.
c) Find Device (PWRB) and replace the _HID below it with _CID (This enables your power button for Sleep)
The guide I linked earlier has pack available for download which has an excellent guide to DSDT.aml. Follow the steps.
You can however, do a little more with your EFI string.
You can add name tags to your Ethernet and Sound entries, for example:
<key>name</key>
<string>Realtek 8111C</string>
and
<key>name</key>
<string>Realtek ALC889A</string>
I keep kernel panicing when I enter 64-bit mode, even in 32-bit mode sometimes. What the hell?
Yeah this is a problem. Sometimes it’s Spotlight, go to System Preferences, Spotlight then Privacy and add all drives. Reboot, then remove them. Also, every time you modify anything to do with kexts you should run Kext Utility. Failure to do so will likely result in KPs. If you get stuck and can’t get back in. Boot with -s and run these commands:
- mount -uw /
- kextcache -v 1 -t -m /System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext /System/Library/Extensions/
- reboot
How do I always boot into 64-bit? Always enable verbose boot?
Modify your com.apple.Boot.plist. Under Kernel Flags put -x64 -v
I have CPU Unknown when I go to About This Mac. Fix?
Yeah. The SMBIOS fix that works with Snow Leopard doesn’t seem to support this. You’ll have to hack this manually. Google for AppleSystemInfo.strings There’s a few guides that tell you what to modify. Purely cosmetic.
OK. Let’s stop stuffing around. Here’s why I REALLY wrote this article.
Multiple video cards, more than two screens, all via EFI strings/DSDT with NO Kernel panics or changes to BIOS settings….oh and CI/QE enabled.
This took me quite some time to figure out. Even though I had the right Device Path for both video cards and correct EFI strings, the system would constantly kernel panic upon switching to GUI mode. NVInject for Leopard seemed to work, but disabled CI/QE…and it wasn’t 64-bit unless I compiled it myself. Eventually I got it working with just EFI strings but I had to change my BIOS to boot with PEG2 (the BIOS has an option to choose which graphics card to enable initially). This wasn’t a solution. I read up and found that Gigabyte boards seemed to have trouble with two cards and that you’d need to use PEG2 and switch cards around each time you wanted to enter (Snow)Leopard. Well, NO LONGER. Here’s the solution. Hoorah!
Firstly, you will need to modify your EFI Strings. Make sure you have the correct PCI Root for each device. Usually PciRoot(0×1)/Pci(0×1,0×0)/Pci(0×0,0×0) and PciRoot(0×1)/Pci(0×6,0×0)/Pci(0×0,0×0). To find these, take out your secondary card, boot, run gfxutil -f display, note it. Shutdown, take out your primary card, insert your secondary card (into it’s secondary slot) and repeat.
You will then need to add some keys. A typical dual-video card EFI plist is outlined below, the parts that are bolded are what you need to add, the parts in red need to be changed. In my example below I use a NVIDIA GTX 260 (896MB/DVI/DVI) and NVIDIA 8500 GT (256MB/DVI/VGA). You should make sure that the parts I haven’t highlighted are also the same in your current EFI string.
<key>PciRoot(0×1)/Pci(0×1,0×0)/Pci(0×0,0×0) (OR THE PCI ROOT OF YOUR PRIMARY CARD use gfxutil)</key>
<dict>
<key>@0,AAPL,boot-display</key>
<data></data>
<key>@0,can-hot-plug</key>
<data></data>
<key>@0,compatible</key>
<string>NVDA,NVMac</string>
<key>@0,connector-type</key>
<data>AAAABA==</data>
<key>@0,device_type</key>
<string>display</string>
<key>@0,display-connect-flags</key>
<data>AAAAAA==</data>
<key>@0,name</key>
<string>NVDA,Display-A</string>
<key>@1,AAPL,boot-display</key>
<data></data>
<key>@1,can-hot-plug</key>
<data></data>
<key>@1,compatible</key>
<string>NVDA,NVMac</string>
<key>@1,connector-type</key>
<data>AAAABA==</data>
<key>@1,device_type</key>
<string>display</string>
<key>@1,display-connect-flags</key>
<data>AAAAAA==</data>
<key>@1,name</key>
<string>NVDA,Display-B</string>
<key>NVCAP</key>
<data>BAAAAAAAAwAMAAAAAAAABwAAAAA=THIS IS DVI/DVI (change it depending in your card)</data>
<key>NVPM</key>
<data>AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==</data>
<key>built-in</key>
<data>AA==</data>
<key>VRAM,totalsize</key>
<string>0×38000000 THIS IS 896MB RAM (change it depending on your card)</string>
<key>device_type</key>
<string>NVDA,GeForce</string>
<key>model</key>
<string>NVIDIA GeForce GTX 260 (change depending on card)</string>
<key>name</key>
<string>NVDA,Parent</string>
<key>rm_multiboard_capable</key>
<data>AAAAAQ==</data>
<key>rom-revision</key>
<string>NVIDIA GeForce GTX 260 (change depending on card) OpenGL Engine</string>
</dict>
<key>PciRoot(0×1)/Pci(0×6,0×0)/Pci(0×0,0×0) (OR THE PCI ROOT OF YOUR SECONDARY CARD use gfxutil)</key>
<dict>
<key>@0,AAPL,boot-display</key>
<data></data>
<key>@0,can-hot-plug</key>
<data></data>
<key>@0,compatible</key>
<string>NVDA,NVMac</string>
<key>@0,connector-type</key>
<data>AAAABA==</data>
<key>@0,device_type</key>
<string>display</string>
<key>@0,display-connect-flags</key>
<data>AAAAAA==</data>
<key>@0,name</key>
<string>NVDA,Display-A</string>
<key>@1,AAPL,boot-display</key>
<data></data>
<key>@1,can-hot-plug</key>
<data></data>
<key>@1,compatible</key>
<string>NVDA,NVMac</string>
<key>@1,connector-type</key>
<data>AAAABA==</data>
<key>@1,device_type</key>
<string>display</string>
<key>@1,display-connect-flags</key>
<data>AAAAAA==</data>
<key>@1,name</key>
<string>NVDA,Display-B</string>
<key>NVCAP</key>
<data>BAAAAAAAAwAEAAAAAAAABwAAAAA=THIS IS DVI/VGA (change it depending in your card)</data>
<key>NVPM</key>
<data>AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==</data>
<key>built-in</key>
<data>AA==</data>
<key>VRAM,totalsize</key>
<string>0×10000000THIS IS 256MB RAM (change it depending on your card)</string>
<key>device_type</key>
<string>NVDA,GeForce</string>
<key>model</key>
<string>NVIDIA GeForce 8500 GT(change depending on card)</string>
<key>name</key>
<string>NVDA,Parent</string>
<key>rm_multiboard_capable</key>
<data>AAAAAQ==</data>
<key>rom-revision</key>
<string>NVIDIA GeForce 8500 GT(change depending on card) OpenGL Engine</string>
</dict>
That should allow you to boot to Snow Leopard under PEG2, with CI/QE. No more Kernel Panics! But we’re not done. Lets finish the job:
Now we need to patch DSDT.aml. Gather your DSDT.dsl file using iasl (or whatever you prefer). Open it up in TextEdit and search for
Device (PCI0)
Add the following devices under it:
Device (PEGP)
{
Name (_ADR, 0×00010000)
Device (GFX0)
{
}
}
Device (GFX1)
{
Name (_ADR, 0×00060000)
}
It should look like (sorry for the spacing):
Device (PCI0)
{
Device (PEGP)
{
Name (_ADR, 0×00010000)
Device (GFX0)
{
}
}
Device (GFX1)
{
Name (_ADR, 0×00060000)
}
Name (_HID, EisaId (“PNP0A03″))
Replace the _ADR fields with the Device Path Number. For example, in my EFI string above I have PciRoot(0×1)/Pci(0x1,0×0)/Pci(0×0,0×0) and PciRoot(0×1)/Pci(0x6,0×0)/Pci(0×0,0×0). Replace these numbers in those fields. If you have something like…”1C” instead of just “6″ you’ll have something like Name (_ADR, 0×001C0000).
Recompile the DSDT with iasl -sa and replace the file. Reboot and hoorah, you’re done. If you have a translucent bar at the top, QE/CI is working. Boot up time will be about 30-40 seconds longer. I don’t know why this is, but it’s a good trade off. If you need help with NVCAP or VRAM values try here.
Kext Rundown
A minimal amount of kexts (or Kernel Extensions) are best. The Snow Leopard pack from the guide I linked is nearly there…but it can be improved. The EP45 Extreme also needs a couple of others.
If you have JMicronATA.kext, LegacyAppleHDAHardwareConfigDriver.kext or LegacyHDAPlayformDriver.kext, you can delete them. Not needed.
A modified AppleVIAATA.kext will enable the IDE controller (iTE IT8213) in Snow Leopard. It will recognize the drives BUT THEY WILL NOT WORK. Sorry. Cosmetic only. In fact, inserting a CD will cause a lockup.
A better LegacyHDA.kext. This enables 5.1 Digital Out for your ALC889A.
AppleIntelPIIXATA.kext. This will allow you to use IDE mode for your SATA Controller. No RAID mode yet
Other KEXT’s that are ESSENTIAL are: SleepEnabler.kext (enables sleep, duh), OpenHaltRestart.kext (fixes Reboots), NullCPUPowerManagement.kext (Fixes heat issues and DSMOS stuff), IOAHCIBlockStorageInjector.kext (Fixes Orange Icons when using AHCI mode) and fakesmc.kext (does the decryption stuff so you can pirate OSX).
You can find ALL of the mentioned KEXTs (except the ones you don’t need for an EP45-EXTREME) here.
Enabling HFS+ Partition Reading on Windows
Snow Leopard brings a new version of boot camp…and this new version of boot camp happens to enable HFS+ partition reading from Windows (no writing). Yes, you can use this driver on a hackintosh and I’ve made a pretty simple way of doing it. The package I’ve includes the HFS+ driver version 3.0.1.6 (from the 10.6 retail DVD).
Download this, extract it and run the batch file (as Administrator). Reboot, check Computer Management/Disk Management and you should see your HFS+ partitions.
I did, however, have a problem with this driver. I’m not sure what caused it (or if it was even the driver), I think it may have been when I assigned drive letters to the partitions. In any case….if you install this driver and you attempt to get back to Snow Leopard, but are greeted by “boot0: error” then…you’re in luck, here’s the fix. You will probably need a spare OSX install to do it though.
about 6 months ago
Interesting that the problem I wrote the gpt_surgeon.py script to fix happens with Apple’s HFS+ drivers as well as MacDrive. Maybe it’s a bug in Windows GPT handling? In any case, that script should be usable from Linux as well as OS X as long as a recent version of Python is available. Might be easier to find a liveCD or USB stick distro than another OS X install.
about 6 months ago
I think it must be.
I’m not sure if it was because I assigned drive letters to the partitions or whether it was because I accidentally opened Apple’s boot camp control panel (but I didn’t make any changes).
I haven’t really been bothered to go back and test. I have been back and forth from Snow Leopard to Windows and even browsed the HFS+ partitions within Windows…but not messed with drive letters, and it’s been perfect.
I thought I’d have to reformat after Disk Utility threw the errors, but your tool worked like a charm. Thanks
about 6 months ago
The reason you’re experiencing longer boot time is because the GPU Debug info being generated to /var/log/kernel.log. Take a look at the kernel log file and you’ll see a long listing of “GPU Debug Info” and time needed to dump those message are exactly the delay of the boot time. I guess the system probably encountered some error in dual display card config and output those GPU debug log.
I’m using dual ATI cards and also experiencing a longer boot time. I’m trying to disable the secondary card by manually modifying dsdt.dsl, but not successful. If you know how to disable a graphics card being picked up by OSX, please help.
about 6 months ago
Did you gfxutil to generate the EFI string? If so, did you run it on a SL install, or a Leopard install? I’ve been trying to do almost exactly what you’ve done (cept with Nvidia 8800GT cards), and I’ve had no success. I’ve read that gfxutil on SL doesn’t generate correct EFI strings. Could you maybe go into a bit more detailed instructions on how you installed the EFI strings?
about 6 months ago
Great guide, thanks!
Does it matter if I have a GTX 260 with 216 core or an older GTX 260 with 196? I am asking because I want to buy a GTX and I am unsure which revision would be supported best by Snow Kitty?
about 6 months ago
Sorry for the late replies guys…
@David I used OSX86 Tools and EFI Studio. It shouldn’t really matter. The EFI string should be right in Snow Leopard….you might get the wrong PCI Root though?
You should be able to pretty much copy my example….Make some changes (for NVCAP, VRAM and Name) as per this article: http://forum.netkas.org/index.php?topic=222.0
To find the right PCI Root? Well, I used IORegistryExplorer.app (I think it comes with XCode?) to figure out what the location of the device is. You should be able to figure it out by looking for devices with the Vendor ID 0×10DE then applying the location of that to the EFI string. Generally gfxutil will only give you the PCI Root of your primary video card.
@Jame Nope, it shouldn’t make any difference. Both should work.
about 6 months ago
Thanks for the guide. I somehow can’t get QE/CI working, even though the resolution looks ok on my 24″ screen. Plus: I can’t boot with both cards to gether (PEG2 is set and I quite sure it’s the DSDT.aml file)
In IORegexplorer I have both cards under PCI0@0, one is on pci-bridge@1, the other, lower card pci-bridge@6. I’m using a EP45-DS4 Gigabyte mainboard.
Any help would be greatly apreciated!!!
about 6 months ago
Thanks for this guide, I’ve just ordered the mobo, Q9550 and SL, so this will be really helpful.
Since the PATA controller is an iTE IT8213 chip which shares a similar protocol to the VIA, will not adding a personality for it to the AppleVIAATA kext get it working?
iTE IT8213 PATA Controller
CFBundleIdentifier
com.apple.driver.AppleVIAATA
Hardware Name
IT8213 PATA
IOClass
AppleVIAATARoot
IOPCIPrimaryMatch
0×82131283
IOProbeScore
1000
IOProviderClass
IOPCIDevice
Serial ATA
about 6 months ago
Oops, looks like the XML markup was stripped from my previous comment, for anyone a little confused by that, open the info.plist for AppleVIAATA.kext and look at the ‘VIA PATA Controller’ personality for guidance.
As indicated the value for the ‘Serial ATA’ key should be the XML ‘false’ empty element.
about 5 months ago
The kext I provided adds 0×82131283 to the VIAATA Kext. The drives will be recognized by Snow Leopard but unforunately, accessing the drives will cause a kernel panic. Placing a disk in the drive while booting Snow Leopard will also cause kernel panics during boot. This was also the case in 10.5.
about 2 months ago
I got the folowing values for my PciRoots:
Under Windows7:
Slot5
PCIROOT(0)#PCI(7000)#PCI(0000)
Slot1
PCIROOT(0)#PCI(3000)#PCI(2000)
Under OSX 10.6.2:
Slot5
PciRoot(0×0)/Pci(0×3,0×0)/Pci(0×0,0×0)/Pci(0×2,0×0)/Pci(0×0,0×0)
Slot1
PciRoot(0×0)/Pci(0×7,0×0)/Pci(0×0,0×0)
My Board is a ASUS P6T6 WS Revolution with Xeon 3520 and I dont get both cards to boot up together.
Can you help me how to adress the entries in DSDT for my long PciRoot? My first card is Slot1 and 2nd is Slot5…
Would be nice to get some help!
BR,
derpuma
about 2 months ago
Works perfectly with my dual GTX 285! Thanks so much for the DSDT guide; I don’t even have to choose PEG2 in BIOS.
about 1 month ago
Thanks for the writeup…hopefully you’re still checking comments. =]
I’m running 10.6.2 on asus p5k deluxe, and trying to have both 8800 and 8600. As of now, using EFI strings I can boot using either, but not both. It KP right before it hits GUI after the grey pinwheel. Any ideas? I did the same DSDT, and used EFI Studio as well.
thanks again!
about 3 weeks ago
Matt I have the same exact setup and the same exact problem did you find any solution to this?
about 3 weeks ago
Matt I figured it out I have a custom DSDT.aml that requires no EFI strings if you are interested let me know and I will send you the files
about 3 weeks ago
Golesk, I have a 9500 GT and a 9800 GT, will your DSDT.aml work for me? I too can both to boot separately, but not together. Can you help me?
about 3 weeks ago
*boot to both
about 1 week ago
Hi, I am trying to get a 7900gtx (512) and a 7600gs (256) to work together. They both work separately just fine, but not together. I put both cards in, set primary graphics to PEG2, looks like its going to boot into OSX, but then just goes black. So I took the second card out and just left my 7900gtx in primary like I had it before. Switched back to PEG, but now when I go to boot it gets hung on a blue screen!!!! I dont know why since I returned everything back to normal, but it wont work!
Is there a way I can boot into a “safe mode” to at least get booted up so I can use this guide to get 2 cards working?