Jump to content

Snow Leopard:ATI 2400 Pro - Sooo Close

Nate W

3 posts in this topic

Recommended Posts

This is my first post here, so be kind.


Before you go and read the rest of the novel below, the whole point of the post is to ask how do I enable QE/CI on my card. It seems like I need some sort of 'toggle' to turn it back on since it may have been turned off in myHack. I don't know.


Background: I just started on this whole process early last week, and I have an almost functional box using fairly old hardware. Since I'm a glutton for punishment, and cheap to boot, I'm trying to get this video card working on my first ever Hackintosh (details in my signature). I'm no stranger to OS hacking, so I'm not afraid to write code and/or get my hands dirty by reading/researching.


So, long story short, I used myHack to get the box initially installed in VESA mode (1024x768x32 initially, and then bumped to 1280x1024x32 later on). I wasn't sure how everything actually worked, but after a lot of trial and error and a lot more reading, I now know that it worked because no GPU drivers were loaded (all of the drivers were moved into the /S/L/E/DisabledGraphics directory), and by default apparently OS X can do things in VESA mode without acceleration.


Referencing this article (and a zillion others):



My choices for getting the card working appeared to be:

1) Live with it (Time Machine wont' work, among other things). Not optimal


2) Try GraphicsEnabler in Chameleon (myHack apparently using RC2, and later versions have better for more cards)


3) Try something with DSDT that is somehow related to EFI that you hardcode in the bootloader?


The GraphicsEnabler seemed to be the easier of the two, since I'm still not as clued as I'd like on the whole EFI/DSDT thing (which most of the tools for it appear to be primarily targeted for older releases aka Leopard and don't seem to work right on Snow Leopard). And, I'm much more comfortable with kext, as I ended up customizing three of them to get things working on my box, so I'll stick with what I know. :(


Also, I'm not really getting the whole DSDT thing, and I know just enough make me just dangerous. At this point, I can say thank goodness for my KVM which lets me login from a computer next to my Hackintosh and revert back when I screwup the graphics setup..


Things I didn't know (but know now).

With GPU kexts, you are limited to the built-in VESA modes on your graphics cards. Disabling the GPU kexts is a good thing when you are starting out, otherwise you can't see what's going on.

However, you won't get things working again until you bring them back.


Steps so far:


1) Upgrade to a newer version of the Chameleon loader. This is easy, since it should just mean replacing /boot (since the other parts are working and related to things that don't need to change). I tried AnVal, which seemed to work, but in the end I punted on it as it didn't have as much debugging information using 'bdmesg'. (Turns out that it might work, but I didn't realize that there were no drivers to load until much later).


Added this lines to /Extra/com.apple.Boot.plist.



2) Next, I built my own copy off the head of the Kabyl branch, and booted off it. Turns out I have a weird PciRoot setup on my Dell. For me, I need PciRoot=4 to find my cad. If I look at my DSDT from the Bios in EFIStudio (??), it shows this as well, and I verified the results by booting the box with different values (0, 1, and 4) until I verified that 4 was the correct value for my motherboard.


3) At this point, I could see that it found my card, but nothing else happened. The instructions were less than helpful, so by trial and error I determined that I needed to 'un-DisableGraphics' and bring back all the ATI kexts that were Disabled. (See 'What I know now above')


4) Boot again, no joy. Same thing as before, but this time no screen. Remote login, and using kextutil I see that ATISupport was loaded, but not ATI2400. Edited Info.plist in the kext to change the PCI signature to mine (94c8 -> 94c3) and rebooted again.


5) Still no joy. Spinning Apple Screen Again, remote login, this time, and notice that all the kexts are loaded. Hmm, not sure if we're closer, but it's different.


Wife made pizza, so let's take break for dinner.


Ok, what's going on now. I started digging in, and noticed that I had 2 different ATI2400 drivers on the Hackintosh, both slightly different. One from the DisabledGraphics directory, and other from the OS updates. And, neither of these were the same as what was on my real Macbook (running 10.6.7), and appeared to be older versions. So, let's move/backup all the ATI drivers on the Hackintosh and replace them with the 'stock' ATI drivers from my un-touched Macbook.


6) (On the Mac): # cd /S/L/E; tar zcf ~/ATI.tar.gz ATI*


7) Copy to Hackintosh and after moving the old ones out of the way, untar the new ones in S/L/E, then rebuild the caches. Wait a few minutes to complete, and then reboot.


8) Apple screen again. Remote login and notice that ATI2400 isn't loaded. Ahh, forgot to edit Info.plist on the new ones. Edit again, and reboot!


Completely black screen (different results than before), with my monitor claiming it's in 'sleep mode'. Hmm, now we're getting somewhere. A change that seems positive to me anyway.


I remember reading somewhere about someone else having to change some framebuffer settings to get this card working on Snow Leopard.




However, I'm using the Kabyl/Chameleon code, not EFI, so I head off to libsaio/ati.c, and using the data from 'bdmesg', note that the code that it's using claims to be using the Iago framebuffer.


9) So, quickly edit the line and replaced the kIago -> kMegalodon.


{ warning, the whitespace is all messed up here }

 --- ati.c.orig  2011-04-05 18:43:57.000000000 -0600
+++ ati.c	   2011-04-05 18:48:13.000000000 -0600
@@ -413,7 +413,7 @@
	 { 0x94B4,	   0x00000000,	 CHIP_FAMILY_RV740,			  "ATI Radeon HD 4700 Series",			kFlicker		},
	 { 0x94B5,	   0x00000000,	 CHIP_FAMILY_RV740,			  "ATI Radeon HD 4770",						   kFlicker		},
	 { 0x94C1,	   0x00000000,	 CHIP_FAMILY_RV610,			  "ATI Radeon HD 2400 Series",			kIago		   },
-	   { 0x94C3,	   0x00000000,	 CHIP_FAMILY_RV610,			  "ATI Radeon HD 2400 Series",			kIago		   },
+	   { 0x94C3,	   0x00000000,	 CHIP_FAMILY_RV610,			  "ATI Radeon HD 2400 Series",			kMegalodon			  },
	 { 0x94C7,	   0x00000000,	 CHIP_FAMILY_RV610,			  "ATI Radeon HD 2350",						   kIago		   },
	 { 0x94CC,	   0x00000000,	 CHIP_FAMILY_RV610,			  "ATI Radeon HD 2400 Series",			kIago		   },


10) Build, install, and reboot!


*Whoo Hoo*


Up till this point, I had no ability to change my graphics mode in System Preferences -> Display, and now I change things. I'm also noticing more lively behavior on the screen. I thought I may even have QE/CI working. However, when I go into Time Machine to check my backups, no joy. Also, I can't choose any of the advanced screen savers, which implies (to me) that I don't have full functionality.


Here is the output from System Profiler.

 ATI Radeon HD 2400 Series:

  Chipset Model:		ATI Radeon HD 2400 Series
  Type: GPU
  Bus:  PCIe
  PCIe Lane Width:	  x16
  VRAM (Total): 256 MB
  Vendor:	   ATI (0x1002)
  Device ID:	0x94c3
  Revision ID:  0x0000
Dell E193FP:
  Resolution:   1280 x 1024 @ 60 Hz
  Pixel Depth:  32-Bit Color (ARGB8888)
  Main Display: Yes
  Mirror:	   Off
  Online:	   Yes
Display Connector:
  Status:	   No Display Connected
Display Connector:
  Status:	   No Display Connected


I have full control over the displays, and things are very close to working. Is there something I need to do to take it that last step so I can use Time Machine? I tried OSX86Tools to enable Quartz, but it appears to be looking for some 'default' value that isn't on my box.


This is the only thing left from having a completely functional box (but slow) desktop.


Thanks for your help!

Link to comment
Share on other sites

[ Hopefully I'm not going off into the weeds ]


Followup. After another 4-5 hours of research on the board, I've got some additional direction.


Based on the following information from Dong, it appears that in order to enable QE/CI, I need an additional driver.



[ Check out post 6 ]


So, I looked for another ATIRadeonX* driver (suspecting the ATIRadeonX2000 due to naming), and sure enough, I found the same PCI signature mismatch in this driver kext as in the original ATI2400. (Apple's PCI Id for the 2400 is 1002:94c8, and my card has 1002:94c3.)


So, I found the original PCI signature in ATIRadeonX2000.kext and added my signature to the line in Info.plist, and then manually loaded it (which seemed to 'jump start' things), since if I don't manually load them kext sometimes it won't find them when it reboots.


*WHOA* Definitely a change. However, it's not the solution (yet). The screen is all messed up, although when I move the mouse I can see something flickering in the background. Not useful at all. And, it locks up the computer if I do too much on the screen (like just moving the mouse too much, or trying to remotely connect to the screen via VNC).


However, it may be that my bootloader change from the Ioga -> Megalodon may be working for reasons that make more sense now. It may be that the connector that Apple is using for it's internal cards is completely different from the consumer version. Mine has a VGA and a DVI output, and not an LVDS connector. The default setup in ATIFramebuffer may be messed up, so by changing the name, I may be choosing a better' personality'. So, I wonder what would happened it I switched back to Ioga framebuffer (I apologize if I'm using the wrong terminology).


The post describes the details better:



So, I reverted the Chameleon/Kabyl bootloader to the stock code (which changed the framebuffer back to Ioga from Megalodon), and then rebooted. Hmm, back to the 'black screen' I got from my first attempt, which causes my monitor to believe it's in 'Sleep Mode'. However, at this point, I *might* have a working solution on the second connector (DVI), but I don't have a way to connect to it at the moment (this is my cheap setup). I may steal my wife's monitor/cable setup to see if that works later today. If so, I think I can come up with a working setup by editing ATIFramebuffer.kext to change the personality for my card. { cross-fingers }


For the moment, I'm going to do more reading on the articles referenced by this article, which contains way more information that I need to digest.




In the interim, I've reverted back to the boot loader that has my card running as a Megalodon and disabled ATIRadeonX2000, as it seems to give me the 'best' solution for my setup at the moment.




Link to comment
Share on other sites

Followup. I hooked up the DVI using both the unmodified KABYL boot loader, and with the modified boot loader that changed the Framebuffer (Ioga -> Megalodon). The modified loader worked great, the unmodified version not so much.


Next, tried both loaders while loading the ATIRadeonX2000 kext. If fails (differently) in both times. From looking at some old Netkas blog posts, I'm at the same point he was 6-9 months ago. I'm going to keep playing around to see if I can figure out a way for the Ioga setup to work with the ATIFramebuffer, but I'm not holding out any hope for acceleration at the moment.


Also, it may have been possible to use the X-Labs RadeonHD driver instead of all the work, but I didn't realize it existed and I learned alot.





Link to comment
Share on other sites


  • Create New...