Ok, I've seen a few people trying to get 5970s to work and a few other people who have got them to work but are stuck with the first revision of the drivers (Mac Mini leak) so I figured I'd do a quick write up for people.
0. Before you start
If you don't already have it, download and install Kext Utility (download link).
1. Download the drivers
First download the drivers of your choice. At time of writing, I'd recommend the Snow Leopard Graphics Update (download link). My advice is to use Pacifist (download link) to extract the ATI* kexts in the package to a folder of your choosing first before installing them. I wouldn't recommend just running system update or running the graphics update's installer.
2. Adding your device id
Once you have your drivers in kext form you need to first add your device id to 'ATI5000Controller.kext'. To do this, right click the kext and click "Show Package Contents". Then double click 'Contents' and open up Info.plist in your editor of choice. In there you'll need to add your device id (0x689C1002 for a 5970) to the list of device ids in IOPCIMatch. Save and close the plist and kext.
You should end up with something like this:
<key>IOPCIMatch</key> <string>0x689C1002 0x68981002 0x68991002 0x68E01002 0x68E11002 0x68D81002 0x68C01002 0x68C11002 0x68D91002 0x68B81002 0x68B01002 0x68B11002 0x68A01002 0x68A11002 </string>3. Disabling the second GPU
You now need to modify 'ATIRadeonX3000.kext' to make sure that your second GPU is disabled so open it up, navigate to the Contents folder and open up the Info.plist. You need to add the following straight after the list of device IDs:
<key>IOPCIClassMatch</key> <string>0x03000000&0xFFFF0000</string>i.e. so that it looks like this:
<key>IOPCIMatch</key> <string>0x68881002 0x68891002 0x68981002 0x68991002 0x689C1002 0x689D1002 0x68801002 0x68901002 0x68A81002 0x68A91002 0x68B81002 0x68B91002 0x68BE1002 0x68A01002 0x68A11002 0x68B01002 0x68B11002 0x68C81002 0x68C91002 0x68D81002 0x68D91002 0x68DE1002 0x68C01002 0x68C11002 0x68D01002 0x68D11002 0x68E81002 0x68E91002 0x68F81002 0x68F91002 0x68FE1002 0x68E01002 0x68E11002 0x68F01002 0x68F11002</string> <key>IOPCIClassMatch</key> <string>0x03000000&0xFFFF0000</string> <key>IOProviderClass</key> <string>IOPCIDevice</string> <key>IOSourceVersion</key> <string>22.214.171.124</string> <key>IOVARendererID</key> <integer>16908288</integer> <key>sensor-properties</key>Save and close the plist and kext.
4. Setting up rom file
You need to get your 5970's boot rom or get it from TechPowerUp's BIOS archive (link). 5970s have *two* rom files, one for the master GPU and one for the slave. For this you need to use the master rom file. If you don't know how to dump your rom file or you don't know the make of your 5970 then try one from another manufacturer - most 5970s are reference design anyway so it shouldn't matter too much. Once you have your rom file you have to rename it to 1002_689c.rom (i.e. to match your device id). Double check that you've named it properly otherwise you won't be able to boot. Place this renamed rom file into your /Extra folder.
5. Installing Trauma's boot file
Download Trauma's boot9 file (download link) and put it in your root folder, replacing your existing boot file - note that it has to be called boot when extracted and placed, not boot9.
6. Setting up Chameleon
Add the following lines to your com.apple.boot.plist:
<key>UseAtiROM</key> <string>yes</string> <key>GraphicsEnabler</key> <string>yes</string>
7. Installing the drivers and finishing up
Copy all of the ATI* drivers that you've downloaded and modified to your /System/Library/Extensions folder. Run Kext Utility to set all the permissions right and sort out your cache files. Reboot and you should be good to go!
- This method works with different driver versions e.g. the mac mini leak drivers, snow leopard graphics update drivers.
- You can re-enable 64 bit support if you disabled it before for ATY_Init.
- If you decide to carry on using the ATY_Init.kext method instead then you can still use different drivers but you have to make sure to add the code to disable the second GPU in the X3000 kext (and obviously add your device id).
- 5970s only work with the Uakari framebuffer. This has been true in the mac mini drivers and the snow leopard graphics update drivers.
- No matter what, the mini display port on standard 5970s remains unusable. If you have any success getting it working with any kind of adapter (display port monitor, dual link active adapter, single link adapter, vga active adapter) then please let me know. I've tried everything I can think of.
- 5970 Eyefinitiy edition cards will likely be problematic due to the added VRAM and also the use of only mini display ports. If you're unlucky enough () to have one of these cards then make sure to try every MDP connection. I know some people have had moderate success in getting dual displays working on 5870 Eyefinity editions by trying different ports.
- Steps 2 and 3 could probably be put into a single injector without much work. I've been meaning to do this for the last few days but simply haven't got round to it. With something like that the drivers could remain vanilla and a system should be ok with software updates (graphics card wise at least).
Thanks to Trauma, netkas, Galaxy and everyone on #radeonhd for helping in all of this.