Jump to content

Editing custom personalities for ATI Radeon HD[45]xxx


  • Please log in to reply
733 replies to this topic

#61
kizwan

kizwan

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 1,422 posts

I didn't get the error ever. Sometimes stoped at first line. Are you booting on Verbose?

ATI card POSTed, reading VBIOS from legacy space
Memory allocation error! Addr=0xdeadbeef, Size 0x0 File=ati.c, Line=668
This is anon recoverable error! System HALTED!
The line changes in some boot's versions, but always are part of the same script.

Yes, I boot in verbose mode. I didn't get the same error, just "ATI card POSTed..." & it just hang there.

I already tried with original ROM, same issue, stuck at the same place.

I also tried Motmot & the result still the same, no output on the monitor. Checked via VNC, QE/CI are enabled.

#62
jsl

jsl

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 238 posts

Ok, I believe I've mapped the senseid field to the atom bios!
i2cid = (senseid & 0xf-1)+0x90;
or the inverse:
senseid = (i2cid & 0xf) +1;
Now here's a version of my radeondump that will print the i2cids for the connectors.
For example, for my sapphire card:

./radeondump < rom
	 ATOM BIOS Rom: 
			 SubsystemVendorID: 0x174b SubsystemID: 0xe151
			 IOBaseAddress: 0x0000
			 Filename: 3E151DAF.HY1
			 BIOS Bootup Message: 
	 REDWOOD XT C02002 GDDR5 64Mx16 1G UCODEv:126							   
	 
	 Connector at index 0 type: DisplayPort (10)
	 Connector's i2cid: 91
	 Connector at index 1 type: HDMI-A (11)
	 Connector's i2cid: 94
	 Connector at index 2 type: DVI-I (2)
	 Connector's i2cid: 92
	 Connector at index 3 type: DVI-I (2)
	 Connector's i2cid: 92
(In the above the i2cid is printed base 16).

So the senseid values are:
DP: (91&0xf)+1 = 2
HDMI: (94&0xf)+1=5
DVI: (92&0xf)+1=3

These exactly match the senseid that I found in post #1 by experimentation.

bcc9, You are my hero !
Thanks for your patience and detailed guide.
I have successfully patched ConnectorInfo of Vervet FB in my ATIFramebuffer.
This is the first time I can activate my Asus EAH 5770 display output via both DVI and HDMI.
If anyone need this patched ATIFramebuffer, please download here.

Attached Files



#63
hjs89

hjs89

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 150 posts
  • Gender:Male
Yeahh!! Finally I've QE/CI, It didn't work before because my system was 10.6.0 with ATI's kexts from 10.6.6 ;) . After update to 10.6.6 QE/CI is enabled. You can see more info here.

The problem still being the same. HDMI port works, LVDS is always black but detected. EDID info is read in both displays but the system switch them. When I change the resolution of LVDS port the resolution changes in HDMI Display. I think that improving the personality it should work.

The outputs of my Graphic Card are:

LVDS (96&0xf) = 7
VGA (90&0xf) = 1
HDMI (91&0xf) = 2

Stock Vervet
00 04 00 00 00 04 00 00 00 01 00 00 12 04 04 02
 04 00 00 00 14 00 00 00 00 01 00 00 01 12 01 04
 00 02 00 00 14 00 00 00 00 01 00 00 00 00 06 03
 00 08 00 00 00 02 00 00 00 01 00 00 22 05 05 01

My modified Vervet
00 02 00 00 14 00 00 00 00 01 00 00 00 00 06 07 - LDVS port
 00 04 00 00 00 04 00 00 00 01 00 00 12 04 04 01 - VGA port
 00 08 00 00 00 02 00 00 00 01 00 00 22 05 05 02 - HDMI port
 00 08 00 00 00 02 00 00 00 01 00 00 22 05 05 05

Nowadays the only mobilities that are working its LVDS screen are 5000 series with Nomascus fb.
02 00 00 00 40 00 00 00 09 01 00 00 00 00 00 05
 00 04 00 00 04 06 00 00 00 03 00 00 11 02 01 01
 00 04 00 00 04 06 00 00 00 03 00 00 21 03 02 02
 00 04 00 00 04 06 00 00 00 03 00 00 12 04 03 03
 00 04 00 00 04 06 00 00 00 03 00 00 22 05 04 04

The sense ID of some of these cards for LVDS is 5, you can see this here.

I've tried to modify the first port with my senseID 07 but didn't work, in Nomascus personality. The screen still being black and I can't see anything trough VNC.

In the bcc9's example he changed the connector-type for the 3rd port, but that personality was able to use HDMI in the 4th port. Are able the personalities to load connector-types that weren't in the original personality?

For example, if y modify the first line of Vervet to 02 00 00 00 40 00 00 00 09 01 00 00 00 00 00 07.

Thanks for your help.

#64
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,277 posts
  • Gender:Male

bcc9, You are my hero !
Thanks for your patience and detailed guide.
I have successfully patched ConnectorInfo of Vervet FB in my ATIFramebuffer.
This is the first time I can activate my Asus EAH 5770 display output via both DVI and HDMI.
If anyone need this patched ATIFramebuffer, please download here.

Cool, it's good to see some successes rolling in!

I've made a new version of ati-personality.pl (see attachment in post #1)
This version fully parses the assembly language instructions for you and reports the effective address of the ConnectorInfo table and the number of ConnectorInfo entries for every personality.
By default, it outputs 32-bit kext information. Run with -x to get 64-bit kext information.
You still have to manually convert the effective address to disk offset as described in post #1, but you now no longer need to look at any assembly instructions.


#65
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,277 posts
  • Gender:Male

I did nothing to use a static EDID so i would say no i don't use one, and neither an av receiver.

I have another question, some Nvidia gpu need 10.6.3 applehda.kext to have HDMI audio , is it the same for ati HD5770 ?
I tried to change Smbios from macpro3,1 to iMac9,1 since HDMI audio from HD4850 through an MiniDisplayPort>HDMI works on 2009 imac but still no success

So it seems your monitor is putting out EDID where the audio extension block is unusual such that apple's code is unable to parse it. I don't think you can get working hdmi audio until you resolve this.
Recommend you dump out all 256 bytes of the EDID and patch it by hand to be more standard (inject the patched EDID into your ioregistry).

I'm using 10.6.6 AppleHDA with my 5670 no problem. I believe the 5770 users hadn't rolled back their AppleHDA either.
(Speaking of nvidia hdmi audio, I've been unable to get it to work no matter what I've tried includingn 10.6.3 AppleHDA).

#66
hjs89

hjs89

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 150 posts
  • Gender:Male
I've done some more test with Vervet and Nomascus.

Nomascus
02 00 00 00 40 00 00 00 09 01 00 00 00 00 00 07 - LDVS port
00 04 00 00 00 04 00 00 00 01 00 00 12 04 04 01 - VGA port
00 08 00 00 00 02 00 00 00 01 00 00 22 05 05 02 - HDMI port
00 08 00 00 00 02 00 00 00 01 00 00 22 05 05 05

When I do that the internal monitor still being black and the hdmi doesn't work. However the SO recognize both monitors, continues switching them and if I disconect the HDMI cable nothing happens, It doesn't recognize when the cable is plugged or unplugged. If I boot without HDMI cable it doesn't recognize it. Checked via VNC.

Nomascus' mod
02 00 00 00 40 00 00 00 09 01 00 00 00 00 00 07 - LDVS Port
00 04 00 00 04 06 00 00 00 03 00 00 11 02 01 01 - VGA Port
00 04 00 00 04 06 00 00 00 03 00 00 21 03 02 02 - HDMI Port
00 04 00 00 04 06 00 00 00 03 00 00 12 04 03 03
00 04 00 00 04 06 00 00 00 03 00 00 22 05 04 04

The Internal Display still black and there isn't HDMI signal on my display. Connecting via VNC I can check that the System recognize the both Displays, LVDS and HDMI (with DVI code), it recognize well the resolutions (It doesn't switch them like Vervet) and detects when I plug/unplug the HDMI cable.

@Bcc9. Do you know why if the system recognize the displays, it can read EDID and recognize the resolution well, it didn't send any signal?

P.S. Thanks for your script. It does easier look for a personality :rolleyes:

#67
toleda

toleda

    InsanelyMac Legend

  • Gurus
  • 823 posts
  • Gender:Male
Sapphire HD 5570 HDMI audio success.

Credit to bcc9 for developing the method and tmongkol for proposing the working solution for the HD 5570.

Configuration:
DVI, HDMI, VGA

Default Situation:
10.6.6, Kabyl rel 700
Boots to Baboon
HDMI video no audio
DVI is black screen

The radeondump 0.2:
ATOM BIOS Rom:
SubsystemVendorID: 0x174b SubsystemID: 0xe142
IOBaseAddress: 0x0000
Filename: 2E142010.002
BIOS Bootup Message:
REDWOOD C02101 DDR3 64Mx16

Connector at index 0 type: HDMI-A (11)
Connector's i2cid: 92
Connector at index 1 type: DVI-I (2)
Connector's i2cid: 93
Connector at index 2 type: DVI-I (2)
Connector's i2cid: 93
Connector at index 3 type: VGA (1)
Connector's i2cid: 90

tmongkol proposes Eulemur Framebuffer

for the HDMI senseid
change from:
00 08 00 00 00 02 00 00 00 01 00 00 12 04 04 02
to
00 08 00 00 00 02 00 00 00 01 00 00 12 04 04 03

Patched for Sapphire HD 5570
Eulemur:

0000000 04 00 00 00 14 00 00 00 00 01 00 00 01 02 01 04
0000010 00 08 00 00 00 02 00 00 00 01 00 00 12 04 04 03
0000020 10 00 00 00 10 00 00 00 00 00 00 00 00 10 00 01
0000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000040

Result:
HDMI video and audio working
DVI video working (audio may not be possible with this card)
Fully functional HD 5570 in 10.6.6
GT 430 retired.

Thanks bcc9 and tmongkol

#68
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,277 posts
  • Gender:Male
Update: ati-personality.pl updated to version 0.4, to fix the parsing for the Caretta personality in 64-bit mode.

#69
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,277 posts
  • Gender:Male

In the bcc9's example he changed the connector-type for the 3rd port, but that personality was able to use HDMI in the 4th port.

Just to clarify...
In my Uakari example case, my system is only matching against the first 3 entries from the ConnectorInfo table. I know this because I looked at the port-number entries in the ioregistry, and they report port-numbers 0,1,2, not 0,1,3.

So the 4th entry in the Uakari table is not being used on my system. This is not surprising as chameleon is only injecting ATY,Uakari[012] for my system, since it is using the "wrong" connector count for uakari due to my card matching the baboon personality with 3 connectors by default.

I don't think my system could ever match the 4th ConnectorInfo table entry with only 3 ATY_Uakari injection strings.

#70
jsl

jsl

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 238 posts

Just to clarify...
In my Uakari example case, my system is only matching against the first 3 entries from the ConnectorInfo table. I know this because I looked at the port-number entries in the ioregistry, and they report port-numbers 0,1,2, not 0,1,3.

So the 4th entry in the Uakari table is not being used on my system. This is not surprising as chameleon is only injecting ATY,Uakari[012] for my system, since it is using the "wrong" connector count for uakari due to my card matching the baboon personality with 3 connectors by default.

I don't think my system could ever match the 4th ConnectorInfo table entry with only 3 ATY_Uakari injection strings.

These are what I have found and edited:
ATOM BIOS Rom:
SubsystemVendorID: 0x1462 SubsystemID: 0x2140
IOBaseAddress: 0x0000
Filename: SV35125e.bin
BIOS Bootup Message: 113-MSITV214MS.114
JUNIPER BIOS UCODEV:122
Connector at index 0 type: DisplayPort (10)
Connector's i2cid: 91
Connector at index 1 type: HDMI-A (11)
Connector's i2cid: 94
Connector at index 2 type: DVI-I (2)
Connector's i2cid: 93
Connector at index 3 type: DVI-I (2)
Connector's i2cid: 93

Personality: Uakari
ConnectorInfo count in decimal: 4
Effective address for ConnectorInfo table in hex: 12840
Personality: Vervet
ConnectorInfo count in decimal: 4
Effective address for ConnectorInfo table in hex: 12880
Personality: Eulemur
ConnectorInfo count in decimal: 3
Effective address for ConnectorInfo table in hex: 12a60

Good news for Asus EAH 5850 in x86_64 for Asus P5Q PRO MB and MSI Hawk 5770 for Asus P6T SE:
I have patched Uakari FB & Vervet FB with working HDMI audio too following this guide by bcc9.
Thanks again for bcc9 !

#71
yeehaa

yeehaa

    InsanelyMac Protégé

  • Members
  • PipPip
  • 81 posts
  • Gender:Male
  • Location:FL, USA

Before the framebuffer patch, any monitor connected to either VGA or HDMI is not detected, including internal monitor. Not even "Status: No Display Connected" message.

n did u have the 4 ATI kexts loaded too before? but without QE/CI?

#72
kizwan

kizwan

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 1,422 posts

n did u have the 4 ATI kexts loaded too before? but without QE/CI?

Before the ATIFramebuffer patch, all 4 kexts loaded (including ATI4600Controller) & no monitor is detected. Checked via VNC no QE/CI.

After the ATIFramebuffer patch, all 4 kexts loaded & monitors are detected but no output on the monitors. Checked via VNC, QE/CI working.

BTW, are you able to get your Radeon HD 4550 working? I believe on desktop it is much easier to get monitor to work with ATIFramebuffer patch.

#73
wmarsh

wmarsh

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 900 posts
bcc9, is there any way of interrogating the video bios to get the correct values for
byte link_i2cid; byte dac_digidx; byte hotplugid;

like you did for byte senseid;

I think this may be important to getting output on LVDS

#74
hjs89

hjs89

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 150 posts
  • Gender:Male

bcc9, is there any way of interrogating the video bios to get the correct values for
byte link_i2cid; byte dac_digidx; byte hotplugid;

like you did for byte senseid;

I think this may be important to getting output on LVDS


Can you tell anything more about this? Sounds really interesting.

#75
wmarsh

wmarsh

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 900 posts

Can you tell anything more about this? Sounds really interesting.

Right now we know what to patch in the connector table in the 1st 4 bytes (for connector type) and the last (sensid)

We are guessing at the middle bytes.

The mobility chips I believe interface with the internal display on an i2c bus

http://www.insanelym...t96664-150.html

http://ddccontrol.so...oc/0.4/apc.html

I think we get output from dong's fb, because he is reading info from video bios, in a way he ported from linux code, to make this connection. The apple fb don't do this. But if we can read this from the video bios manually, we may be able to set these bytes in such a way that they connect.

The old ATIFramebuffer thread is most interesting, especially the discourse btwn dong and netkas on how to make this connection.

http://www.insanelym...howtopic=156279

Somewhere in that thread, dong's radeondump tool is posted.
[EDIT if you google "dong vbios" its posted on the 1st link]

I get the following with it
bash-3.2# kextload ./RadeonPCI.kext/
bash-3.2# ./RadeonDump -i
Found a device of class RadeonPCI: IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/AGP@1/IOPCI2PCIBridge/VID@0/RadeonPCI
it matched on name "display"
Detected unknown Card (device id: 0x9552)
It's not in known card list, treat as card with device id: 0x9511
Detect EDID may fail for this card.
Start I2C dump
ATOM BIOS detected
ATOM BIOS Rom: 
	SubsystemVendorID: 0x1028 SubsystemID: 0x02aa
	IOBaseAddress: 0xde00
	Filename: BR31245C.001
	BIOS Bootup Message: 
Dell_Roberts_M92S_GDDR3 M92 GDDR3 64bit 450e/600m						   

object id 0005 01
src object id 2115 21
record type 1
 rhdAtomParseI2CRecord:  I2C Record: HW_Line 9 EngineID: 0 I2CAddr: 0
ddc_line from ATOMBIOS: 0x0
record type 4
object id 000e 01
src object id 2121 33
record type 1
 rhdAtomParseI2CRecord:  I2C Record: GPIO_ID 9 EngineID: 0 I2CAddr: 0
ddc_line from ATOMBIOS: 0x0
record type 4


#76
checcco

checcco

    InsanelyMac Protégé

  • Members
  • PipPip
  • 96 posts
Many mobility 5650 are working with Nomascus since they have 05 as senseid, exactly like the one found in Nomascus for the LVDS.

This is my 5650m, I've got 07 for senseid and Nomascus isn't working.

ATOM BIOS Rom: 
		SubsystemVendorID: 0x103c SubsystemID: 0x1448
IOBaseAddress: 0x4000
Filename: BR38421.001 
BIOS Bootup Message: 
MADISON Lenovo-Yx60-Madison Pro DDR3 64Mx16 500E/600M					   
Connector at index 0 type: LVDS (7)
Connector's i2cid: 96
Connector at index 1 type: HDMI-A (11)
Connector's i2cid: 90
Connector at index 2 type: VGA (1)
Connector's i2cid: 97

I'm really not good at hexediting, so would someone please share a ATIFramebuffer.kext with 07 for the LVDS in Nomascus?

Thank you very much.

#77
Boombeng

Boombeng

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 598 posts
  • Gender:Male
  • Location:France

Many mobility 5650 are working with Nomascus since they have 05 as senseid, exactly like the one found in Nomascus for the LVDS.

This is my 5650m, I've got 07 for senseid and Nomascus isn't working.

ATOM BIOS Rom: 
		SubsystemVendorID: 0x103c SubsystemID: 0x1448
IOBaseAddress: 0x4000
Filename: BR38421.001 
BIOS Bootup Message: 
MADISON Lenovo-Yx60-Madison Pro DDR3 64Mx16 500E/600M					   
Connector at index 0 type: LVDS (7)
Connector's i2cid: 96
Connector at index 1 type: HDMI-A (11)
Connector's i2cid: 90
Connector at index 2 type: VGA (1)
Connector's i2cid: 97

I'm really not good at hexediting, so would someone please share a ATIFramebuffer.kext with 07 for the LVDS in Nomascus?

Thank you very much.

Here you go
Atiframebuffer.kext from 10.6.6 with Nomascus personality table hexedited to match 07 instead of 05 senseid for lvds connection

0000000 02 00 00 00 40 00 00 00 09 01 00 00 00 00 00 05 07

I hope it works (don't forget to boot with 'AtiConfig=Nomascus arch=i386' since only i386 code is patched)

Personality: Nomascus
ConnectorInfo count in decimal: 5
Effective address for ConnectorInfo table in hex: 11500 (70912)
offset_for_segment = 70904
start_address_for_segment = 0x000111c0 (70080)
= 227384


Attached File  ATIFramebuffer.kext.zip   199.05KB   43 downloads

#78
hjs89

hjs89

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 150 posts
  • Gender:Male
I've done an interesting experiment. I've used Lion's FB with ATIRadeonX2000.kext and its plugins and now I've QE/CI and Lion's FB working.

It detects my LVDS and my HDMI port (without audio, maybe because my integrated sound card it isn't working yet, i'm using a usb dongle) and the VGA port. It detects well my displays, resolutions, etc. But the colours in the LVDS aren't correct (hdmi and vga colours works fine).

Seems that Lion's FB works different and auto detects the ports

That is what I see.
Posted Image

Anybody knows why can it be happening?

#79
checcco

checcco

    InsanelyMac Protégé

  • Members
  • PipPip
  • 96 posts
Thanks Boombeng for the file :gun: You've been very kind!

My problem is I can't use kabyl boot since it stops on gray screen when setting GraphicsEnabler=Yes

So to set Nomascus as fb I tried to use the boot file provided in this thread http://www.insanelym...p...249669&st=0 which automatically set Nomascus.

I got black screen on display and no other port working. I VNCed in my laptop and discovered that system profiler reported 5870 instead of my 5650. So maybe that was the problem in the boot file itself.

Maybe I'm missing something, but I need a little help here. How can I set Nomascus Fb if I can't use kabyl's boot?

Finally I tried again what hsj89 suggested with Lion Kexts. I used ATIFB, ATISupport and ATI5000 from Lion.

I used chameleon trunk boot with GraphicsEnabler=Yes and for the first time I got QE/CI working(front row, effects, etc), but only on my VGA port. Laptop display black.

So I'm closer but a little help about what boot file to use would be very appreciated!

Thanks!!

#80
Boombeng

Boombeng

    InsanelyMac Legend

  • Members
  • PipPipPipPipPipPipPip
  • 598 posts
  • Gender:Male
  • Location:France

Thanks Boombeng for the file :gun: You've been very kind!

My problem is I can't use kabyl boot since it stops on gray screen when setting GraphicsEnabler=Yes

So to set Nomascus as fb I tried to use the boot file provided in this thread http://www.insanelym...p...249669&st=0 which automatically set Nomascus.

I got black screen on display and no other port working. I VNCed in my laptop and discovered that system profiler reported 5870 instead of my 5650. So maybe that was the problem in the boot file itself.

Maybe I'm missing something, but I need a little help here. How can I set Nomascus Fb if I can't use kabyl's boot?

Finally I tried again what hsj89 suggested with Lion Kexts. I used ATIFB, ATISupport and ATI5000 from Lion.

I used chameleon trunk boot with GraphicsEnabler=Yes and for the first time I got QE/CI working(front row, effects, etc), but only on my VGA port. Laptop display black.

So I'm closer but a little help about what boot file to use would be very appreciated!

Thanks!!


What device ID ?





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy