Jump to content

[Guide] Getting XFX HD6850 connectors to work


Alexander Martinez
 Share

112 posts in this topic

Recommended Posts

Real professional post Alex I read every bit of word. One thing i could help you out on is the fact with the DisplayPort and the reason in which it doesn't work with DVI + DVI + HDMI is that they're all passive signals. You need at least one active signal (that being the Display Port[DP}). If you want to use the DP port or use an active converter from one of the DVI or HDMI would get you beyond the 2 monitor limitation. Just keep in mind active signaling is needed to go beyond 2 monitors due to clock limitations in current gpu architecture.

 

Again though, great post it almost made me accidentally buy a 6850 =p

  • Like 1
Link to comment
Share on other sites

Thanks for the good guide (rewritten). After I read this topic, I thought to get all working connectors of my PowerColor HD6870 (AX6870 1GBD5-2DH) last night. Finally, I got all connectors today.

 

ATOM BIOS Rom:
SubsystemVendorID: 0x1787 SubsystemID: 0x2305
IOBaseAddress: 0x0000
Filename: B6A25BCA.HGZ
BIOS Bootup Message:
BARTS XT 1GB GDDR5 BIOS B6A25BCA.HGZ								  

PCI ID: 1002:6738
Connector at index 0
Type [@offset 44499]: DisplayPort (10)
Encoder [@offset 44503]: INTERNAL_UNIPHY2 (0x21)	---- DP1
i2cid [@offset 44627]: 0x90, OSX senseid: 0x1
Connector at index 1
Type [@offset 44509]: DisplayPort (10)
Encoder [@offset 44513]: INTERNAL_UNIPHY2 (0x21)	---- DP2
i2cid [@offset 44654]: 0x91, OSX senseid: 0x2
Connector at index 2
Type [@offset 44519]: HDMI-A (11)
Encoder [@offset 44523]: INTERNAL_UNIPHY1 (0x20)	 ---- HDMI
i2cid [@offset 44681]: 0x93, OSX senseid: 0x4
Connector at index 3
Type [@offset 44529]: DVI-D (3)
Encoder [@offset 44533]: INTERNAL_UNIPHY1 (0x20)	---- DVI 2
i2cid [@offset 44708]: 0x95, OSX senseid: 0x6
Connector at index 4
Type [@offset 44539]: DVI-I (2)
Encoder [@offset 44543]: INTERNAL_UNIPHY (0x1e)	---- DVI 1
i2cid [@offset 44745]: 0x94, OSX senseid: 0x5
Connector at index 5
Type [@offset 44549]: DVI-I (2)
Encoder [@offset 44553]: INTERNAL_KLDSCP_DAC1 (0x15)	---- DVI 1
i2cid [@offset 44745]: 0x94, OSX senseid: 0x5

 

Physical layout:

 

|__DVI 1__| /_HDMI_\ |_DP2_| |_DP1_|

 

|__DVI 2__|

 

Based on Chameleon Boot loader, it will use Duckweed as default when GraphicsEnabler is yes. Duckweed supports DVI 1 + HDMI + DP1 + DP2 natively. However, Dvi 2's not working at all.

 

Based on 10.7.2 combo update:

 

Personality: Duckweed

ConnectorInfo count in decimal: 4

Disk offset in decimal 523688

0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01

0000010 00 04 00 00 04 03 00 00 00 01 00 00 22 05 05 02

0000020 00 08 00 00 04 02 00 00 00 01 00 00 11 02 03 04

0000030 00 02 00 00 14 02 00 00 00 01 00 00 00 00 06 05

0000040

 

I looked personalities and got Gibba that is similar to Duckweed. Gibba has 5 connectors while Duckweed has 4 connectors. I booted with AtiConfig=Gibba and got DVI 1 and HDMI working. So, I tried to change as following

 

from

 

Personality: Gibba

ConnectorInfo count in decimal: 5

Disk offset in decimal 523928

0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 05 01

0000010 00 04 00 00 04 03 00 00 00 01 00 00 22 05 04 02

0000020 00 08 00 00 04 02 00 00 00 01 00 00 11 02 06 04

0000030 00 02 00 00 14 02 00 00 00 01 00 00 00 00 03 05

0000040 04 00 00 00 04 02 00 00 00 01 00 00 11 02 01 03

0000050

 

to

 

Personality: Gibba

ConnectorInfo count in decimal: 5

Disk offset in decimal 523928

0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01 ---- DP 1

0000010 00 04 00 00 04 03 00 00 00 01 00 00 22 05 05 02 ---- DP 2

0000020 00 08 00 00 04 02 00 00 00 01 00 00 11 02 06 04 ---- HDMI

0000030 00 02 00 00 14 02 00 00 00 01 00 00 00 00 03 05 ---- DVI 1

0000040 04 00 00 00 04 02 00 00 00 01 00 00 11 02 01 06 ---- DVI 2

0000050

 

Then, I could use combination of either DVI 1 + DVI 2 + DP 1 + DP 2 or DVI 1 + HDMI + DP 1 + DP 2 as maximum four connectors. Also, I could use DVI 1 + DVI 2 or DP 1 + DVI 2 or DP 2 + DVI 2, for example. All connectors can be plugged and unplugged (detectable).

 

Note: DVI 2 will be disable when HDMI is active. I was using HexEdit to edit the personality. Using PowerColor active mini DisplayPort / DisplayPort to DVI adaptors.

 

 

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

Update: 2012-01-05

Another ATi HD5770 Sapphire vapor-x

 

 

Before patching:

 

Personality: Vervet

ConnectorInfo count in decimal: 4

Disk offset in decimal 485112

0000000 00 04 00 00 00 04 00 00 00 71 00 00 12 04 04 02 got black screen on DP2DVI

0000010 04 00 00 00 14 00 00 00 00 71 00 00 01 12 01 04

0000020 00 02 00 00 14 00 00 00 00 71 00 00 00 00 06 03

0000030 00 08 00 00 00 02 00 00 00 71 00 00 22 05 05 01

0000040

 

 

After patching

 

OK --- change only 71 to 01 for DP line

Personality: Vervet

ConnectorInfo count in decimal: 4

Disk offset in decimal 485112

0000000 00 04 00 00 00 04 00 00 00 01 00 00 12 04 04 02

0000010 04 00 00 00 14 00 00 00 00 71 00 00 01 12 01 04

0000020 00 02 00 00 14 00 00 00 00 71 00 00 00 00 06 03

0000030 00 08 00 00 00 02 00 00 00 71 00 00 22 05 05 01

0000040

 

Got maximum working three monitors properly.

 

DP2DVI + HDMI + DVI

DP2DVI + DVI + DVI

DP2DVI + DVI2VGA + DVI2V, etc.

must use DP to get the third monitor.

also

DP2DVI + HDMI

DP2DVI + DVI, etc

  • Like 3
Link to comment
Share on other sites

Awesome write-up! :-)

 

A while back I got my Club 3D / Powercolor 6850's second DVI port using Mucha's and bcc9's posts and a bit of chaotic hex editing... However after waking up from sleep, the second monitor remains in sleep mode (connector information is still present in the display menu, also after detect monitors). I'm beginning to think this is could be related to the hotplugIDs; could you check if this happens with your edited personality as well?

 

Best wishes for the new year!

Link to comment
Share on other sites

Awesome write-up! :-)

 

A while back I got my Club 3D / Powercolor 6850's second DVI port using Mucha's and bcc9's posts and a bit of chaotic hex editing... However after waking up from sleep, the second monitor remains in sleep mode (connector information is still present in the display menu, also after detect monitors). I'm beginning to think this is could be related to the hotplugIDs; could you check if this happens with your edited personality as well?

 

Best wishes for the new year!

 

Hello,

This does not happen for any of my monitors. My computer has been waking up and sleeping for over 2 weeks in a row and all displays work correctly. Just like you said, try checking for duplicate Hot plug IDs.

 

 

Best wishes to you too.

Link to comment
Share on other sites

I've tried using this method and I'm just not having any luck. I have a Sapphire 6850, however all the outputs are the same as yours. I've tried using the same descriptors as you, tried my own, and I just can't get this to work. I'm using HexFiend. Is it possible that it's not changing the descriptors?

I've gotten my comp to detect the tv but the tv doesn't read the signal. Does this have to do with the transmittor?

Link to comment
Share on other sites

I've tried using this method and I'm just not having any luck. I have a Sapphire 6850, however all the outputs are the same as yours. I've tried using the same descriptors as you, tried my own, and I just can't get this to work. I'm using HexFiend. Is it possible that it's not changing the descriptors?

I've gotten my comp to detect the tv but the tv doesn't read the signal. Does this have to do with the transmittor?

 

Have you tried verifying that the modded kext is being loaded correctly?

If you run ati-personality.pl (or ati-personality.pl -x for x64) after an edit, does it show your modified values?

Are you editing the file for the correct kernel version (32 bits vs 64 bits)?

Could it be that the system is loading a cached version that is not modified (try booting with -f)?

 

As for the tv not getting a picture:

 

Check for duplicate hotplug id's.

Check for incorrect connector type.

I'd like to think that it's more of an encoder problem than a transmitter but I would not discard the latter.

Use the decoded bios information to get the transmitter (UNIPHYx where x could be nothing, 1 or 2). HDMI is usually single link (check with your manufacturer), so you would choose UNIPHYx:LINKA or UNIPHYx:LINKB. Try each of the encoders with both transmitters.

 

Let me know how it goes.

Link to comment
Share on other sites

This is 2 commands?

 

sudo perl -pi -e 's|\x00\x04\x00\x00\x04\x03\x00\x00\x00\x01\x00\x00\x12\x04\x05\x01\x00\x04\x00\x00\x04\x03\x00\x00\x00\x01\x00\x00\x22\x05\x04\x02\x00\x08\x00\x00\x04\x02\x00\x00\x00\x01\x00\x00\x11\x02\x06\x04\x00\x02\x00\x00\x14\x02\x00\x00\x00\x01\x00\x00\x00\x00\x03\x05\x04\x00\x00\x00\x04\x02\x00\x00\x00\x01\x00\x00\x11\x02\x01\x03|\x00\x04\x00\x00\x04\x03\x00\x00\x00\x01\x00\x00\x12\x04\x04\x01\x00\x04\x00\x00\x04\x03\x00\x00\x00\x01\x00\x00\x22\x05\x05\x02\x00\x08\x00\x00\x04\x02\x00\x00\x00\x01\x00\x00\x11\x02\x06\x04\x00\x02\x00\x00\x14\x02\x00\x00\x00\x01\x00\x00\x00\x00\x03\x05\x04\x00\x00\x00\x04\x02\x00\x00\x00\x01\x00\x00\x11\x02\x01\x06|g' /System/Library/Extensions/ATI6000Controller.kext/Contents/MacOS/ATI6000Controller

enter

than

sudo touch /System/Library/Extensions

enter

??????

Link to comment
Share on other sites

This is 2 commands?

 

sudo perl -pi -e 's|\x00\x04\x00\x00\x04\x03\x00\x00\x00\x01\x00\x00\x12\x04\x05\x01\x00\x04\x00\x00\x04\x03\x00\x00\x00\x01\x00\x00\x22\x05\x04\x02\x00\x08\x00\x00\x04\x02\x00\x00\x00\x01\x00\x00\x11\x02\x06\x04\x00\x02\x00\x00\x14\x02\x00\x00\x00\x01\x00\x00\x00\x00\x03\x05\x04\x00\x00\x00\x04\x02\x00\x00\x00\x01\x00\x00\x11\x02\x01\x03|\x00\x04\x00\x00\x04\x03\x00\x00\x00\x01\x00\x00\x12\x04\x04\x01\x00\x04\x00\x00\x04\x03\x00\x00\x00\x01\x00\x00\x22\x05\x05\x02\x00\x08\x00\x00\x04\x02\x00\x00\x00\x01\x00\x00\x11\x02\x06\x04\x00\x02\x00\x00\x14\x02\x00\x00\x00\x01\x00\x00\x00\x00\x03\x05\x04\x00\x00\x00\x04\x02\x00\x00\x00\x01\x00\x00\x11\x02\x01\x06|g' /System/Library/Extensions/ATI6000Controller.kext/Contents/MacOS/ATI6000Controller

enter

than

sudo touch /System/Library/Extensions

enter

??????

 

Sorry for not replying all steps.

 

After you rebuild kextcache, you got to wait a few minute and then restart the system.

 

Before boot the OS, press F8 (if you don't set timeout in org.chameleon.Boot.plist)

 

type AtiConfig=Gibba

 

You should get all ports to work , remember only four maximum monitors.

Link to comment
Share on other sites

Sorry guys, this is an excellent write up, but I'm obviously missing something here. I'm having no luck parsing the output from"perl ati-personality.pl -x". I've used the radeon_bios_decode without any trouble. I've read bcc9's "finding the patch address" instructions, but it just leaves my head spinning, especially after I've found two posts with conflicting ways of calculating the hex addresses. Hopefully someone can quickly look at the output files I'm getting from the perl script and point me in the right direction.

 

EDIT: OK, ignore that, I needed the -x AND -a switches.

Archive.zip

Link to comment
Share on other sites

Hello, lox72.

Glad you got the card recognized.

As for the HDMI audio problem, it's either incomplete/missing DSDT edits or using an old patched AppleHDA.kext.

 

Start by editing your DSDT. Verify with IORegistryExplorer if HDAU is loading under PEGP.

I edited my DSDT

 

I will attatch my current DSDT. Your areas of interest will be GFX0 and HDAU, where it says hda-gfx.

This is what my audio edits look like:

 

	Device (PCI0)
	{
		Name (_HID, EisaId ("PNP0A03"))
		Name (_ADR, Zero)
		Name (_UID, One)
		Name (_BBN, Zero)
		Device (PEGP)
		{
			Name (_ADR, 0x00010000)
			Name (_PRW, Package (0x02)
			{
				0x09,
				0x05
			})
			Device (GFX0)
			{
				Name (_ADR, Zero)
				Name (_SUN, One)
				Method (_DSM, 4, NotSerialized)
				{
					Store (Package (0x06)
						{
							"@0,connector-type",
							Buffer (0x04)
							{
								0x00, 0x08, 0x00, 0x00
							},
							"@1,connector-type",
							Buffer (0x04)
							{
								0x00, 0x08, 0x00, 0x00
							},
							"hda-gfx",
							Buffer (0x0A)
							{
								"onboard-1"
							}
						}, Local0)
					DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
					Return (Local0)
				}
			}
			Device (HDAU)
			{
				Name (_ADR, One)
				Method (_DSM, 4, NotSerialized)
				{
					Store (Package (0x02)
						{
							"hda-gfx",
							Buffer (0x0A)
							{
								"onboard-1"
							}
						}, Local0)
					DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
					Return (Local0)
				}
			}
		}

 

Good Luck

dsdt.aml.zip

Link to comment
Share on other sites

Alex great post I'm following through to get the 2nd DVI connector to work on my gigabyte HD6870. It has 5 physical connectors on it 1 DVI-I 1 DVI-D 2 DP and 1 HDMI.

 

I'm following your example:

So we get that connector 4 on duckweed is:

 

00 00 02 00 - Connector type: Single DVI
00 00 02 14 - Control flags (ATY,ControlFlags): DVI + VGA + DVI
01 00 - Features: No Idea.
00 00 - Unknown.
00 - Transmitter: UNIPHY:DUALLINK (Link A + Link  using DAC A
00 - Encoder: DIGA
06 - HotPlug ID: 06
05 - Sense ID: 05

 

But as I read the info the connector type should be lvds? The DVI(s) have a 00 00 00 04? What am I missing?

 

I want to make sure I understand so when I change one of the personalities I don't screw up.

Link to comment
Share on other sites

 Share

×
×
  • Create New...