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, 0x001C0000).

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.