Saturday, February 9, 2008

How to install ATI Radeon X1600 Kext on hackintosh

this is a post i wrote on insanelymac i think it has a place here so here it is:

this is my success story of how to install the ATI Radeon X1600 512M onboard of LG W1 Pro Express Dual EP00E kext on Leopard 10.5.2 + updates (iAtkos)
this is the conclusion of many days of try and error and lots of solutions and ideas out there, this is the concentration of them, and it made mine work. have fun.

Downloads: (all downloads are attached and there is alink to them as well)
- ATIinject-Pack#Part1.zip (http://forum.insanelymac.com/index.php?showtopic=36812)
- ATIinject-Pack#Part2.zip (http://forum.insanelymac.com/index.php?showtopic=36812)
- Color LCD-42717C0.icc (http://forum.insanelymac.com/index.php?sho...=77685&st=0)
- Property_List_Editor_2.1.dmg (http://forum.insanelymac.com/index.php?sho...mp;#entry208018)
- softMCCS.exe (there are other options but i use vista so this one worked 4 me) (http://www.entechtaiwan.com/lib/softmccs.shtm)
- xcode_3.0.dmg (not attached) (http://developer.apple.com/tools/download/)

One mistake I made was listening to this instruction (found somewhere on insanelymac):

*** DO NOT DO THIS>>> sudo rm -R /System/Library/Extensions/ATI*

It caused me loosing my ci/qe abilities, lucky me I backup everything so I restored old files and bingo got myselfe ATI Radeon x1600 512M dual screen ci/qe enabled working.

Steps:

Rip EDID info from windows
======================
1. download and install the app "softMCCS"
2. open the app find tab EDID Information and copy from the entry "Raw Data" the long hex content
3. the content should be in 16 letters groups separate each 16 into 8 groups
4. for instance: 00FFFFFFFFFFFF00 should be converted to: 00FFFFFF FFFFFF00
5. save it into a text file as a single line at a shared location where the mac installation can access it (disk on key or use MacDrive to see your mac partitions from windows)
6. mine looks like this: 00FFFFFF FFFFFF00 320C0000 00000000 000F0102 80251778 0A8EF097 58518D28 24505400 00000101 01010101 01010101 01010101 01019525 A0405184 0C304020 33006FE6 10000018 00000000 00000000 00000000 00000000 00000000 00FE004C 47506869 6C697073 4C43440A 000000FE 004C5031 37315758 322D4134 4B3500F5

Prepare ATIinject file with EDID info
============================
1. install Property_List_Editor_2.1.dmg find it or attached to this post.
2. extract maxx zip file: ATIinject_Pack_Part2.zip attached to this post or find it on insanelymac
3. right click ATIinject.kext and choose "Show Package Contents" from the popup Finder edit Contents/Info.plist using "Property List Editor" previousely installed
4. enter the previouselly saved Raw Data from EDID into keys: "LVDS,EDID" and "DFP1,EDID" just paste it between the triangle brackets:

now lets deploy the new driver
========================
1. extract the zip file "ATIinject-Pack#Part1.zip" 
2. copy the content of it into folder: /System/Library/Extensions
3. copy previouselly prepared ATIinject.kext file also into /System/Library/Extensions

(lastly the known part) fix permisions mod and ownership with these commands
=============================================================
1. sudo chmod -R 755 /System/Library/Extensions
2. sudo chown -R 0:0 /System/Library/Extensions
3. sudo rm -R /System/Library/Extensions.mkext
4. diskutil repairpermissions /
now restart

optional
======
copy the attached file Color LCD-42717C0.icc into /Library/ColorSync/Profiles/Displays/
then from System Preferences -> Display -> Color choose it

thats it Enjoy!

CI/QE
=====
In case ci/qe wont work here is a trick I learnd:
First of all what it means: CI = Core Image QE= Quartz Extreme
These are features your display card should support (or not) in order to perform 2D effects and calculations so the CPU wont be bothered with it.
Apple use smart diagnostics to determin if your card support it or not. If it is supported then some greate looking features appears such as: fast user switch with 3D cube effect, or when you add a widget it display water ripple effect etc.

Also you can check for support using: Applications->Utilities->System Profiler
This will display a screen telling what Leopard knows of your system. Goto Hardware and check these two entries: Core Image and Quartz Extreme it should say supported or not supported.

So lets get to work:
first know your vendor id and device id you can extract it from windows using this method:

on XP:

1. RightClick MyComputer
2. Hardware tab
3. DeviceManager button
4. DisplayAdapter entry choose your card
5. doubleclick or right click->Properties
6. in details use the dropdown and choose HardWare IDs
7. you should find at the first line something like this: PCI\VEN_1002&DEV_71C5&SUBSYS_00811854&REV_00
8. write down the device id after "DEV_" at this example it is: 71C5
9. write down the vendor id after "VEN_" at this example it is: 1002

on Vista:
1. Control Panel->System
2. device Manager
3. DisplayAdapter entry choose your card
4. doubleclick or right click->Properties
5. in details use the dropdown and choose HardWare IDs
6. you should find at the first line something like this: PCI\VEN_1002&DEV_71C5&SUBSYS_00811854&REV_00
7. write down the device id after "DEV_" at this example it is: 71C5
8. write down the vendor id after "VEN_" at this example it is: 1002

Copy from somewhere the original "ATIRadeonX1000.kext" from the web or from the install disk, if you backedup like me then from there, or you can install leopard on another partition and extract it from there (so you wont harm your installation), I use the last I always have spare partition that I try on it all the stuff out here, if it works and after I perfected the procedure only then I install it into the main active partition, but this is for another howto (use GParted),

So after getting the original kext
1. Download and install "0xED", it is a HEX editor
2. open with 0xED the file: ATIRadeonX1000.kext/Contents/MacOS/ATIRadeonX1000 found at the original kext
3. Use: Edit->Find->Find… and search for C071 search type: Hex
you should find it twice replace it with your vendor id but replace the 2 bytes for instance if your device id is:71C5 then replace it with C571
4. now do the same but this time search it the correct way: 71C0 and replace it with the correct form 71C5 (you may encounter up to 6 occurences)
5. save it, copy the kext into /System/Library/Extensions
6. edit with TextEdit or Property editor the file: ATIRadeonX1000.kext/Contents/info.plist
7. find the tag IOPCIMatch and make sure your device and vendor id string is there
8. the string is formed of the parts: 0x + DeviceID + VendorID so according to the mentiond example it should look like: 0x71C51002, the strings are seperated with space, if yours isnt there then write it next to one that is there and make sure space between your value and the others (and save it)
9. open terminal and write these commands:
10. sudo chmod -R 755 /System/Library/Extensions
11. sudo chown -R 0:0 /System/Library/Extensions
12. sudo rm -R /System/Library/Extensions.mkext
13. diskutil repairpermissions /
14. now restart yor system

1. If after all this you cannot enable ci/qe then you can do this:
Go to the original Leopard disk installation and install Xcode (a set of development tools)
2. if you don't have the install disk you can find it freely on the mac dev site its about more or less 1.1G!!
3. after installation go to folder: /Developer/Applications/Performance Tools
4. activate the application: Quartz Debug
5. from tools click "Enable Quartz Extreme"
6. reboot and that's it

This was my success story of how I installed my LG W1 EP00E ATI X1600 onboard internal display driver on Leopard!

Hope this has been helpful. 
Attached File(s)
Attached File  ATIinject_Pack_Part1.zip ( 904.4K ) Number of downloads: 9
Attached File  softMCCS.exe ( 1.23MB ) Number of downloads: 1
Attached File  Property_List_Editor_2.1.dmg ( 87.73K ) Number of downloads: 5
Attached File  Color_LCD_42717C0.zip ( 3.67K ) Number of downloads: 7
Attached File  ATIinject_Pack_Part2.zip ( 21.54K ) Number of downloads: 9

2 comments:

Quincy Wong said...

Hi Shay,

I followed your writeup of how to install the drivers
for the X1600. Everything has worked except the CI/QE
bit.

Some notes:
- I have an ATI X1600 256MB PCI/E external card
- I used the ATIRadeonX1000.kext from the Kalyway
DVD

Could you explain the reason to search for "C071" in
the original kext. If I understood this, it would
help me troubleshoot my issue.

I also tried adding the flags in the the
com.apple.windowsserver described at this link:
http://wiki.awkwardtv.org/wiki/Enable_Quartz_Extreme_and_Quartz_2D_Extreme

Thanks,

Quincy

-------------------------------------------------


3. Use: Edit->Find->Find… and search for C071 search
type: Hex
you should find it twice replace it with your vendor
id but replace the 2 bytes for instance if your device
id is:71C5 then replace it with C571
4. now do the same but this time search it the correct
way: 71C0 and replace it with the correct form 71C5
(you may encounter up to 6 occurences)

shay.bc said...

hi Quincy Wong,

the reason that you are searching the kext for the "C071" string in hex mode is that this is the x1000 vendor id and we should replace it with your card vendor id, so the OS will init it correctly.

this method is using the X1000 as a template for kext and just change the specifics for your card so the OS will think it is the original kext.

if you cant find the string then perhaps you are using a different kext version, or maybe an already tweaked kext.

can you explain what is exactly the problem? and check the console for log lines related to the ATI kext maybe it will shed light on what is wrong.

 
the menu is from: Milonic DHTML menus