As I see many novices in the forum ask "How to make my Radeon working? I have bad resolution, no QE/CI...." and so on. They come to the section and have no find an answer here because all Radeons are different and they don't know where else they read about this.
I want to explain all steps needed for launching the Radeon family of videocards.
I will speak about Clover because I maintain this bootloader to know recent hardware and modern OSX. Not sure if you will have the same result with other bootloaders. I am carefully checking the injecting of ATI card and correcting it times to times. I am also accessible for bug reports.
Older card require older system, newer cards require new system.
ATIRadeon9000 is possible to launch under Tiger.
ATIRadeonMobilityX1400 requires 10.5-10.6. See RadeonHD topic.
As I see RadeonHD3xxx was successful only in 10.5
For new AMDRadeonHD7xxx there must be 10.8.3+ system.
This is must be the first question before asking about the card.
You may know the device-id from Windows->DeviceManger->VideoCard.properties->compatibleIDs
You may boot into system in safe mode (key -x) and see system profiler
Снимок экрана 2013-08-09 в 20.17.59.png 103.78KB 53 downloads
And you may boot into Clover GUI, press F2 and get preboot.log. Find here something like
2:709 0:000 PCI (00|01:00.00) : 1002 6758 class=030000 2:709 0:000 Found Radeon model=AMD Radeon HD 6670 Series
It means my DeviceID=6758 (these are hex numbers)
Then you must check that Apple's drivers support your DeviceID. If not then add it!
For example HD7850 has DeviceID=6819. If we look into ATI7000Controller we find 6818 here but no 6819!
<key>IOName</key><string>AMD7000Controller</string><key>IOPCIMatch</key><string>0x26001002 0x22001002 0x67901002 0x67981002 0x679A1002 0x679E1002 0x67801002 0x68201002 0x68211002 0x68251002 0x68271002 0x682D1002 0x682F1002 0x68391002 0x683B1002 0x683D1002 0x683F1002 0x68001002 0x68061002 0x68081002 0x68181002</string>
I show you how to do this with terminal commands. Launch /Application/Utilities/Terminal.app. Type in opened window:
cp /System/Library/Extensions/ATI7000Controller.kext/Contents/Info.plist ~/Desktop
So you get a copy of the Info.plist on Desktop. Edit it with TextEdit. Change 68181002 -> 68191002.
Don't edit this file directly in the system folder!
Then copy back by terminal. Don't use finder to copy kexts! They will have wrong permissions in this case.
sudo cp ~/Desktop/Info.plist /System/Library/Extensions/ATI7000Controller.kext/Contents/ sudo rm -r -v /System/Library/Caches/com.apple.kext.caches/*
Second command make sure next reboot the kext will use your edited info.plist.
The same operation you must do with a kext AMDRadeonAccelerator or ATIRadeonX2000 or other one. Check all candidates if they contain such list of possible IDs and choose closest to you.
Since Clover revision 1971+ you may just inject new DeviceID into DSDT instead of correcting kexts. See instruction here.
GraphicsEnabler or Injector
OSX needs to know some properties (Model name, Family, etc...) that must be somehow injected at boot time. Yes, also real Macs got DeviceProperties string from firmware.
1. Set InjectATI=Yes in Clover (same as GE=y in Chameleon).
2. Use custom string made with gfxutil. For whom who knows.
3. Write _DSM into DSDT. You should know what to write.
4. Use some kext like ATY_init.kext or Natit.kext. If you are sure that the kext is for your card namely.
I want to say that all this methods make the same thing. Differencies in their tuning.
The Clover do this automatically for most known cards at this moment.
As you may see to start HD5000-7000 some strange names used: Pithecia, Orangutan, Elodea... What are they?
They are configs for framebuffer. Predefined configs how connectors are solded for cards used in real Macs. Strange but these configs rear coincide with PC card. Usually gurus make advice "choose a framebuffer that most appropriate for your card". The chances 1:10. In most cases you may find a FB name that gives you main monitor working. Or nothing at all.
Great respect to bcc9 who gives us a method to correct one of config to be exactly for you. See here. <- the article is the main topic for all we make here.
My retelling for Clover is here
I tested Clover's methods with two users having Mobility Radeon HD5470 and HD5650M. We found that full memory and QE/CI will be achieved if we set in Clover's config
even thou no file with bios is provided. This is the key to make Radeon Mobility working!
Other problem is bad gradients or artifacts. For this case Clover accept the key
and sometimes you also need to inject CustomEDID.
See Clover instructions for details.
And my results.
Gigabyte Radeon HD6670
<key>Graphics</key> <dict> <key>GraphicsInjector</key> <true/> <key>InjectEDID</key> <true/> <key>FBName</key> <string>Ipomoea</string> <key>LoadVBios</key> <false/> <key>VideoPorts</key> <integer>3</integer> <key>PatchVBios</key> <true/> </dict> <key>KernelAndKextPatches</key> <dict> <key>KernelCpu</key> <false/> <key>ATIConnectorsController</key> <string>6000</string> <key>ATIConnectorsData</key> <string>000400000403000000010000120401050008000004020000000100001102040310000000100000000001000000000002</string> <key>ATIConnectorsPatch</key> <string>040000000403000000010000100001061000000010000000000100000000000100080000040200000001000012040403</string>
VTX Radeon HD5570
<key>Graphics</key> <dict> <key>PatchVBios</key> <false/> <key>FBName</key> <string>Baboon</string> <key>VideoPorts</key> <string>3</string> <key>GraphicsInjector</key> <string>Yes</string> <key>LoadVBios</key> <string>No</string> </dict> <key>KernelAndKextPatches</key> <dict> <key>Debug</key> <false/> <key>KernelCpu</key> <false/> <key>ATIConnectorsController</key> <string>5000</string> <key>ATIConnectorsData</key> <string>040000001400000000010000010201030008000000020000007100002205020110000000100000000001000000100002</string> <key>AppleRTC</key> <true/> <key>ATIConnectorsPatch</key> <string>040000001400000000010000010001040008000000020000007100002200020510000000100000000001000000000002</string> <key>AsusAICPUPM</key> <false/> <key>KextsToPatch</key> <array> <dict> <key>Name</key> <string>AppleAHCIPort</string> <key>Find</key> <data>RXh0ZXJuYWw=</data> <key>Replace</key> <data>SW50ZXJuYWw=</data> </dict> </array> </dict>
for this card "yes" leads to black screen. Use with precautions.