Contribute
Register

[CLOSED] Adding ATI card IDs to Chimera 1.5 ATI.c

Status
Not open for further replies.
Joined
Aug 12, 2010
Messages
1,575
Motherboard
X58A-UD3R v2
CPU
i7-930
Graphics
5770
Mac
  1. MacBook
  2. MacBook Pro
Mobile Phone
  1. Android
UPDATED - 8th Sept - NEW CHIMERA 1.5.4 !!!!

So ..... now that we have Chimera, our own branch of Chameleon, we have full control of the ATI/AMD cards loaded by Chimera ! When Kabyl originally set up the ATI.c file he created a testing thread for people to report what framebuffer's they've tried and what their results were. And what I'd like to do here is for users to continue to submit their results here if the right framebuffer isn't auto loaded via Chimera as it stands.

This going to be mainly aimed at the 6XXX users rather than the 5XXX / 4XXX as I think Kabyl has pretty much sorted those cards out but if you have any doubt the have a read below to see.

What you need to test is:
The latest Chimera 1.5.0 or later from MultiBeast 4.0.0 or later
http://tonymacx86.blogspot.com/2011/08/chimera-15-update-sandy-bridge-hd-3000.html
LSPCI tools v1.1 - I've attached it to this post - updated based on rmmcwh's advice
IORegistryExplorer - it's in Xcode Tools or I've attached it to this post
Snow Leopard - 10.6.8 Combo update
Lion - 10.7.1 Combo Update

The first thing to do is to install the above items and to also grab the IDs for your current card using System Profiler > Graphics and also lscpi tools v1.1. To get the full IDs then run the following in Terminal and enter your password when needed
Code:
sudo lspci -nnvd 0x1002: | grep -B2 Subsystem

And you should get something like:
02:00.0 VGA compatible controller [0300]: ATI Technologies Inc Unknown device [1002:68b8] (prog-if 00 [VGA controller])
Subsystem: Giga-byte Technology Unknown device [1458:21d7]
--
02:00.1 Audio device [0403]: ATI Technologies Inc Unknown device [1002:aa58]
Subsystem: Giga-byte Technology Unknown device [1458:aa58]

This shows that the Video controller on the graphics card has the following IDs:
Vendor ID: 0x1002
Device ID: 0x68b8
Subsystem ID : 1458:21d7

MacMan kindly informed me of some more trickery with lspci tools to get less unkown hardware messages. Try running the following coding:
Code:
 sudo update-pciids
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  179k  100  179k    0     0   6996      0  0:00:26  0:00:26 --:--:--  8747


sudo lspci -nnvd 0x1002: | grep -B2 Subsystem

02:00.0 VGA compatible controller [0300]: ATI Technologies Inc Juniper [Radeon HD 5700 Series] [1002:68b8] (prog-if 00 [VGA controller])
	Subsystem: Giga-byte Technology Unknown device [1458:21d7]
--
02:00.1 Audio device [0403]: ATI Technologies Inc Juniper HDMI Audio [Radeon HD 5700 Series] [1002:aa58]
	Subsystem: Giga-byte Technology Unknown device [1458:aa58]


Then comes the testing of framebuffer's. To do this you need to have GraphicsEnabler=Yes in your boot.plist and also you should clear any AtiConfig key/strings out of your boot.plist too. Also if you are using an edited DSDT for framebuffer injection then please revert back to the unedited version as we are going to get the framebuffer loaded through Chimera instead as it's a bit easier to do and works for guys who are running an EasyBeast install.
<key>GraphicsEnabler</key>
<string>Yes</string>

Now what to do is to reboot and load verbose boot at Chimera. Once OSX has loaded it is then time to test if you have a framebuffer loaded. They way to do this is via the following command in Terminal:
Code:
ioreg | grep ATY

For me it shows:
Not-Shys-Mac-Pro:~ notshy$ ioreg | grep ATY
| | | +-o ATY,Vervet@0 <class IOFBStub, id 0x100000356, registered, matched, active, busy 0 (4122 ms), retain 7>
| | | | +-o ATY_Vervet <class ATIFramebuffer, id 0x10000036a, registered, matched, active, busy 0 (3969 ms), retain 16>
| | | +-o ATY,Vervet@1 <class IOFBStub, id 0x100000357, registered, matched, active, busy 0 (6 ms), retain 7>
| | | | +-o ATY_Vervet <class ATIFramebuffer, id 0x10000037b, registered, matched, active, busy 0 (5 ms), retain 13>
| | | +-o ATY,Vervet@2 <class IOFBStub, id 0x100000358, registered, matched, active, busy 0 (10 ms), retain 7>
| | | | +-o ATY_Vervet <class ATIFramebuffer, id 0x100000381, registered, matched, active, busy 0 (8 ms), retain 13>
| | | +-o ATY,Vervet@3 <class IOFBStub, id 0x100000359, registered, matched, active, busy 0 (6 ms), retain 7>
| | | | +-o ATY_Vervet <class ATIFramebuffer, id 0x100000387, registered, matched, active, busy 0 (5 ms), retain 13>

And this shows that I have the Vervet framebuffer loaded. And because I haven't set an AtiConfig flag in my boot.plist then I know that my IDs must be correctly in the ATI.c file within Chimera because that framebuffer has autoloaded. This means that you no longer need to do any more reading of this thread as your card is already supported in Chamelon properly. The confirmation of this is if you run bdmesg from Terminal also it will confirm what is Chimera is loading. In Terminal type:
Code:
bdmesg

The output is quite long but the bit we are after is near the bottom, just after loading my DSDT:
ATI VGA Controller [1002:68b8] :: PciRoot(0x1)/Pci(0x3,0x0)/Pci(0x0,0x0)
Framebuffer @0xE0000000 MMIO @0xFBEC0000 I/O Port @0x0000DE00 ROM Addr @0x00000000
ATI card POSTed, reading VBIOS from legacy space
ATI Juniper ATI Radeon HD 5770 1024MB (Vervet) [1002:68b8] (subsys [1458:21d7]):: PciRoot(0x1)/Pci(0x3,0x0)/Pci(0x0,0x0)

And what this is showing is that in the ATI.c file - my card is recognised as a 5770 and the default for the card is Vervet (as I'm not forcing one).

If your framebuffer isn't autoloading by ATI.c in Chimera then you will see the following in ioreg:
Not-Shys-Mac-Pro:~ notshy$ ioreg | grep ATY
| | | +-o ATY,ATY,RadeonFramebuffer@0 <class AtiFbStub, id 0x1000003$
| | | | +-o ATY_ATY,RadeonFramebuffer <class ATIFramebuffer, id 0x10$
| | | +-o ATY,ATY,RadeonFramebuffer@1 <class AtiFbStub, id 0x1000003$
| | | | +-o ATY_ATY,RadeonFramebuffer <class ATIFramebuffer, id 0x10$
| | | +-o ATY,ATY,RadeonFramebuffer@2 <class AtiFbStub, id 0x1000003$
| | | | +-o ATY_ATY,RadeonFramebuffer <class ATIFramebuffer, id 0x10$
| | | +-o ATY,ATY,RadeonFramebuffer@3 <class AtiFbStub, id 0x1000003$
| | | | +-o ATY_ATY,RadeonFramebuffer <class ATIFramebuffer, id 0x10$

And this shows that the default RadeonFramebuffer has loaded. This means that the IDs for your card are in the ATI5000controller.kext or ATI6000controller.kext but that there isn't a framebuffer being autoloaded by Chimera. If you try to run Geekbench or DVD player with this then you will see that they most likely crash, To fix this we need to force load a framebuffer.

If your IDs aren't any of the ATIcontroller kexts that I think that you will get a Kernel Panic on booting into OSX and should be able to get through into OSX booting in safe mode "-x" at Chimera. The IDs supported are:

ATI5000Controller.kext (iMac - 1.6.34.13)
0x68981002 0x68991002 0x68E01002 0x68E11002 0x68D81002 0x68C01002 0x68C11002 0x68D91002 0x68B81002 0x68B01002 0x68B11002 0x68A01002 0x68A11002

ATI6000Controller.kext (iMac - 1.6.34.13) - TO BE UPDATED
0x67681002 0x67701002 0x67791002 0x67601002 0x67611002 0x67501002 0x67581002 0x67591002 0x67401002 0x67411002 0x67451002 0x67381002 0x67391002 0x67201002 0x67221002 0x67181002

And you will need to add the right ID for your card based on vendor and device ID to the list of supported IDs in the info.plist of the relevant kext (Copy a vanilla kext to your desktop and make a second copy of it somewhere else in a folder to keep it safe - for the one on your desktop - right click - show package contents - Contents - Info.plist - open with TextEdit - look for "<key>IOPCIMatch</key>" and you'll see where you need to add your ID - note the format of the other onces "Device then 1002" - then install this modified kext from your desktop by trashing the relevant kext in /S/L/E and installing this modified kext using KextBeast.)

Sorry for the detour for unsupported cards. Back to cards where Radeonframebuffer loads. This means that your card has the right IDs in the relevant kexts but you haven't got the right framebuffers. Here's a list of the current ones supported in the ATI.c to load with AtiConfig but I will update if I find any missing:
4XXX/5XXX and older cards
Alopias Alouatta Baboon Cardinal Caretta Colobus Douc Eulemur Flicker Galag Gliff Hoolock Hypoprion Iago Kakapo Kipunji Lamna Langur Megalodon Motmot Nomascus Orangutan Peregrine Quail Raven Shrike Sphyrna Triakis Uakari Vervet Zonalis

6XXX and other cards
Pithecia Bulrushes Cattail Hydrilla Duckweed Fanwort Elodea Kudzu Gibba Lotus Ipomoea Mangabey Muskgrass Juncus

Unless you start doing some analysis of the framebuffer connector tables, then it is going to be a bit of trial and error to see what framebuffer works best for your card. To get them to load, at the Chimera bootscreen, stop the countdown then type:
Code:
AtiConfig=Duckweed -v

But it might not be Duckweed that works best for your card but try the different ones and note that it is case sensitive. By typing the framebuffer at the Chimera screen it means if it doesn't work properly then you can just reboot and try another without having to try and edit your boot.plist. To check that the framebuffer is correctly loaded use the "ioreg | grep ATY" command from Terminal.

If you want the framebuffer to load every time - until we update Chameleon - then add this to your boot.plist:
<key>AtiConfig</key>
<string>XXXXX</string>

Where XXXX is your framebuffer that works best - such as Duckweed etc - and this will force that framebuffer to load every time ! When we update Chimera for your results then you can remove this and feel glad that you've contributed to the community by testing with your card !

Once you have a card working please can you post here with:
- the EXACT model/make of your card with a link to the official website of the card manufacturer and linking to the exact model.
- coding box with your "sudo lspci -nnvd 0x1002: | grep -B2 Subsystem" output
- an ioreg dump (load IORegistryExplorer from Applications - go to root at the top then File > Save as and export your ioreg output - then zip and save as an attachment to your post)
- screenshot of your Graphics section of Profiler and anything else you want to screenshot
- list of how you have your screen / screens connected - DVI / HMDI / DisplayPort / MiniDP and a list of what exact model screens are connected to what ports
- any info on dual or triple displays you have running with a screenshot of Displays in System Prefs showing your dual/triple screens with their orientation to each other.


Please don't quote this original post in any of your posts as I will edit this post from time to time and it will look confusing for those who read the thread after I've changed it.

Also I'd like to thank Kabyl for his efforts in getting ATI.c working in the first place and I've used the tools that he suggested to report cards on his original ATI 4XXX/5XXX thread. Thanks to MacMan and TonyMac for the Chimera branch and helping support for all our hacks. And also to Andy for his initial work on getting the 6XXX cards supported in ATi.c.

Update - 10th May
Updated the LSPCI Tools to v1.1 which should work better !

From MacMan - most common manufacturer IDs in subsys IDs:
Code:
ASUS  1043
ATI   1002
Club3D  1787
Connect3D 1002
Diamond  1002
Force3D  1002
Gigabyte  1458
HIS   1787
MSI   1462
Powercolor 1002
Sapphire 174B
VTX3D  1002
XFX   1682
 

Attachments

  • IOReg &amp; LSCPI v1.1.zip
    509.1 KB · Views: 1,780
Re: Adding ATI/AMD card IDs to ATI.c to autoload framebuffers

Using aty | grep ioreg I dont get any information.

Ive tried to get my card working using Duckweed, Uakari and Vervet. My system wont boot with Duckweed or Uakari and Vervet it boots but says No Kexts Loaded.

U recommended to me that I might be able to add my device ID's to the aticontroller5000
and boot using vervet so im gonna try that now.
 
Re: Adding ATI/AMD card IDs to ATI.c to autoload framebuffers

I have a bit of a problem, the included application, LSCPI, installs, but when i invoke it in Terminal, it says command not found.

Another thing, my ID 0x67381002, its already listed in ATI6000controller.kext, but when I use ioreg | grep ATY is not showing a framebuffer and system profile still shows NI40.

My card is the XFX HD-687A-ZNFC.

http://www.newegg.com/Product/Product.a ... 6814150506

More strange, Duckweed used to allow me to boot, now, when I use it at the chimera startup, it halts the system.

Stranger still, I tried all the framebuffers and all, except Hydrilla, Duckweed, Mangabey and Pithecia, allowed me to boot, but again, ioreg | grep ATY says that no framebuffer was loaded.
 
Re: Adding ATI/AMD card IDs to ATI.c to autoload framebuffers

grtitan said:
I have a bit of a problem, the included application, LSCPI, installs, but when i invoke it in Terminal, it says command not found.

Another thing, my ID 0x67381002, its already listed in ATI6000controller.kext, but when I use ioreg | grep ATY is not showing a framebuffer and system profile still shows NI40.

My card is the XFX HD-687A-ZNFC.

http://www.newegg.com/Product/Product.a ... 6814150506

More strange, Duckweed used to allow me to boot, now, when I use it at the chimera startup, it halts the system.

Stranger still, I tried all the framebuffers and all, except Hydrilla, Duckweed, Mangabey and Pithecia, allowed me to boot, but again, ioreg | grep ATY says that no framebuffer was loaded.

Have you tried re-starting Terminal after LSPCI installs ? Can you please post your IOReg export at the moment.

From looking at the bdmesg that you posted in the other thread:
Using PCI-Root-UID value: 0
ATI VGA Controller [1002:6738] :: PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)
Framebuffer @0xD0000000 MMIO @0xFDDC0000 I/O Port @0x0000DE00 ROM Addr @0x00000000
ATI card POSTed, reading VBIOS from legacy space
ATI Barts AMD Radeon HD 6870 Series 1024MB (Duckweed) [1002:6738] (subsys [1682:3100]):: PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)

It looks like your card is autoloading Duckweed but not quite right. Your subsystem IDs look like they are 1682:3100 (and hopefully lscpi tools will show that) but that does not match the Duckweed section of ATI.c:
0x6738, 0x67381002, CHIP_FAMILY_BARTS, "AMD Radeon HD 6870 Series", kDuckweed

I think this is Andy's coding here and we need to patch this up. If you look at the cards which are listed in the "series" section of ATI.c:
http://forge.voodooprojects.org/p/chameleon/source/tree/HEAD/branches/Chimera/i386/libsaio/ati.c

Then they all have "0x00000000" in the subsys IDs where as what seems to have happpened is that a specific subsys ID has been given for the 6870 but it doesn't even look like the right one as it's a mixture of the vendor and device ID rather than the subsys ID.

We will compile a new test version of Chimera for you later on. Do you know how to manually install a boot file using Terminal ?
 
Re: Adding ATI/AMD card IDs to ATI.c to autoload framebuffers

Cavej03 said:
Using aty | grep ioreg I dont get any information.

Ive tried to get my card working using Duckweed, Uakari and Vervet. My system wont boot with Duckweed or Uakari and Vervet it boots but says No Kexts Loaded.

U recommended to me that I might be able to add my device ID's to the aticontroller5000
and boot using vervet so im gonna try that now.

Yes - you need the IDs in one of the ATI controllers first.

Please post your lspci tools output and also your system profiler > Graphics output.
 
Re: Adding ATI/AMD card IDs to ATI.c to autoload framebuffers

notshy said:
Yes - you need the IDs in one of the ATI controllers first.

Please post your lspci tools output and also your system profiler > Graphics output.

I thought as much

lspci also doesnt work for me. Gonna boot into a linux distro and run it from there.
 
Re: Adding ATI/AMD card IDs to ATI.c to autoload framebuffers

Point taken on lspci tools - I've already got it installed on my machine and that was how I installed it. I'll try installing on a test build tonight.

Yes - linux boot cd would also do the trick !
 
Re: Adding ATI/AMD card IDs to ATI.c to autoload framebuffers

Ok so output in linux gives me this:
Code:
01:00.0 VGA compatible controller [0300]: ATI Technologies Inc Device [1002:68ba]
	Subsystem: PC Partner Limited Device [174b:e144]
--

01:00.1 Audio device [0403]: ATI Technologies Inc Juniper HDMI Audio [Radeon HD 5700 Series] [1002:aa58]
	Subsystem: PC Partner Limited Device [174b:aa58]

Meaning I should ad 0x68ba1002 to my ATI.c file? If so I have tried this already although the old MBP kexts had no hex values with abcdef in them so I wasn't sure if I needed to put the "ba" in as ba OR BA.

So my next step is to try again using 0x68BA1002 first in the ATI6000 then if that doesnt work I will try to add it to the ATI5000 and boot using Vervet.

When I put 0x68BA1002 into any ATI5000 kext I get past the initial error and it goes through the normal startup but then it goes to a black screen and the gfx card seems to stop but cpu is still runing. (Does this suggest that the 0x68BA1002 is working but the frame buffer doesnt know how inject the kext?)

If im wasting my time 0x68BA1002 with case sensitivity tell me lol because everytime I try I have to boot into safe mode and reinstall multibeast with a garbled screen that doesnt show a mouse. (basically I have to drag an icon around so I know where my mouse is and feel my way around... Kinda hard to explain but sucks LOL)

Im just reading up on 6770 vs 5770... they are the exact same card ffs. Wish I did a bit more research before buying I assumed that the 6770 would pretty much work out of the box because of the new Imacs. Might try and take it back and get a bat-mobile lol.
 
Re: Adding ATI/AMD card IDs to ATI.c to autoload framebuffers

I will take a look at the 5000 and 6000 controller kexts later.

I'd suggest adding the IDs to each one of the controllers - ATI5000 first and if that doesn't work then the ATI6000 second but I'd restore the vanilla ATI5000 controller from the iMac kexts.

The first stage is to get the default RadeonFramebuffer to load.

Do you know how to run VNC to get screensharing ? Do you have another Mac that you could run screensharing with or you can do it with an Android phone or an iPhone also ?

I wouldn't worry about adding IDs to your ATI.c quite yet - one thing at a time - we can always force the framebuffer with AtiConfig without editing ATI.c to autoload anything.
 
Re: Adding ATI/AMD card IDs to ATI.c to autoload framebuffers

Oh I was confused about what the ATI.c is I thought it was just short form. I have tried adding IDs to both controllers and forcing them to load using AtiConfig=Duck/Verv/Uakari I dont know any others but I just found a list so Ill go through them individually.

Im always ending up with the same message.
Code:
Using PCI-Root-UID value: 1
ATI VGA Controller [1002:68ba] :: PciRoot(0x1)/Pci(0x1, 0x0)/Pci(0x0, 0x0)
Framebuffer @0xE0000000 MMI0 @0xFBEC0000 I/O Port @0x0000EE00 ROM Addr @0x00000000
ATI card POSTed, reading VBIOS from legacy space.

Memory allocation error! Addr=0x0, Size=0x40001230, File=ati.c, Line=1210
This is a non recoverable error! system HALTED!!!!

The last two lines I have never noticed before as they take about a minute to appear (appeared whilst writing this post)

The message never changes no matter what framebuffer I use.

And yeah I decided to setup VNC the last time it happened.
 
Status
Not open for further replies.
Back
Top