Jump to content
StephanCA

HD 5870 shows as 5000

27 posts in this topic

Recommended Posts

Hi, I have a problem that my video card is showing as 5000, I already searched everywhere and tried everything but still no luck. When I use GraphicsEnable=Yes the card shows as 5800 series, but then my screen resolution is very small, and in display properties I'm somehow getting two displays.

 

I used this topic and tried everything from there, but I think I don't have any problems with QI/CI, it's just that my card is not showing as 5870. Let me know how can I test it to see if it works properly.

Share this post


Link to post
Share on other sites
Advertisement

it is only cosmetic HD 5000 for this display you have inject your card in DSDT. Example for inject it

 

Device (PEGP)

{

Name (_ADR, 0x00010000)

Method (_PRW, 0, NotSerialized)

{

Return (GPRW (0x09, 0x04))

}

Method (_PRT, 0, NotSerialized)

{

If (PICM)

{

Return (AR02)

}

Return (PR02)

}

}

Device (GFX0)

{

Name (_ADR, Zero)

Name (_SUN, One)

Method (_DSM, 4, NotSerialized)

{

Store (Package (0x0C)

{

"@0,name",

Buffer (0x0D)

{

"ATY,Duckweed"

},

"@1,name",

Buffer (0x0D)

{

"ATY,Duckweed"

},

"@2,name",

Buffer (0x0D)

{

"ATY,Duckweed"

},

"@3,name",

Buffer (0x0D)

{

"ATY,Duckweed"

},

"model",

Buffer (0x13)

{

"AMD Radeon HD 6850"

},

"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)

}

}

}

Share this post


Link to post
Share on other sites

it is only cosmetic HD 5000 for this display you have inject your card in DSDT. Example for inject it

 

 

Device (PEGP)

{

Name (_ADR, 0x00010000)

Method (_PRW, 0, NotSerialized)

{

Return (GPRW (0x09, 0x04))

}

Method (_PRT, 0, NotSerialized)

{

If (PICM)

{

Return (AR02)

}

Return (PR02)

}

}

Device (GFX0)

{

Name (_ADR, Zero)

Name (_SUN, One)

Method (_DSM, 4, NotSerialized)

{

Store (Package (0x0C)

{

"@0,name",

Buffer (0x0D)

{

"ATY,Duckweed"

},

 

"@1,name",

Buffer (0x0D)

{

"ATY,Duckweed"

},

 

"@2,name",

Buffer (0x0D)

{

"ATY,Duckweed"

},

 

"@3,name",

Buffer (0x0D)

{

"ATY,Duckweed"

},

 

"model",

Buffer (0x13)

{

"AMD Radeon HD 6850"

},

 

"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)

}

}

}

 

Yes I used this code from the other topic

 

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 (0x0E)

 

{

 

"AAPL,slot-name",

 

Buffer (0x09)

 

{

 

"PCIe-1"

 

},

 

"@0,name",

 

Buffer (0x0D)

 

{

 

"ATY,Uakari"

 

},

 

"@1,name",

 

Buffer (0x0D)

 

{

 

"ATY,Uakari"

 

},

 

"@2,name",

 

Buffer (0x0D)

 

{

 

"ATY,Uakari"

 

},

 

"@3,name",

 

Buffer (0x0D)

 

{

 

"ATY,Uakari"

 

},

 

"model",

 

Buffer (0x13)

 

{

 

"ATI Radeon HD 5870"

 

},

 

"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)

 

}

 

}

 

}

 

 

But I'm not sure if it works because the only thing that changed is when I use

GraphicsEnable=Yes it makes low resolution and shows 5800 series, before I injected this code I could use

GraphicsEnable=Yes and it wasn't different form =No.

 

 

Screen_Shot_2013_01_13_at_12_49_26_PM.png

 

Here is my IOreg.

my mac pro.zip

Share this post


Link to post
Share on other sites

DSDT edit as you have listed will not work, it's at the wrong device address! Per you IOreg, your card is at 0x00030000 but your DSDT entry is at 0x00010000. So it's not doing anything at the moment.

 

Uakari is correct FB for 5870, I had XFX-5870 for 2 years in hackintosh(great card BTW). DSDT injection OR GraphicsEnabler=Yes will work, but can only use one or the other. To use GE=Yes and get full res, , DVD Player not crash, You need to pick FB manually in Chameleon by adding.

 

GraphicsEnabler=Yes

AtiConfig=Uakari

AtiPorts=4

 

Here is my old simplified DSDT activation with my card being at 0x00030000 and HDMI audio. No need to include slot name and stuff. Best single GPU ATI card until release of 7000 series

	 Device (PEGP)
	 {
		 Name (_ADR, 0x00030000)
		 Name (_PRW, Package (0x02)
		 {
			 0x09,
			 0x05
		 })
		 Device (GFX0)
		 {
			 Name (_ADR, Zero)
			 Name (_SUN, One)
			 Method (_DSM, 4, NotSerialized)
			 {
				 Store (Package (0x0C)
					 {
						 "@0,name",
						 Buffer (0x0D)
						 {
							 "ATY,Uakari"
						 },
						 "@1,name",
						 Buffer (0x0D)
						 {
							 "ATY,Uakari"
						 },
						 "@2,name",
						 Buffer (0x0D)
						 {
							 "ATY,Uakari"
						 },
						 "@3,name",
						 Buffer (0x0D)
						 {
							 "ATY,Uakari"
						 },
						 "model",
						 Buffer (0x13)
						 {
							 "AMD Radeon HD 5870"
						 },
						 "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)
			 }
		 }
	 }

Using DSDT you must set GraphicsEnabler=No, either method will work equally well with no difference in performance. Just gave my 5870 to a friend and installed it in his Hackintosh for him, used GE=Yes with AtiConfig=Uakari and AtiPorts=4 and it works perfectly for him as well. His DSDT (which I made too) just has HDMI audio enable edits and nothing specific to GPU so he can change cards without me having to come and edit his DSDT for him

 

And no offense to everyone who helped the guy in that thread you referenced, but the only reason he had so much trouble was because he listened to everybody except the one person who owned the same card and knew without a doubt how to make it work perfectly. I still have benchmarks from it posted in many of the benchmarking threads in New Release section. In your IOreg the card is loading with full hardware acceleration, but without correct Frame Buffer loading and is using generic FB instead.

Share this post


Link to post
Share on other sites

eep357, Your code works and shows proper info and adds my card to PCI Cards, but only problem is that I'm getting low resolution, and another monitor in properties that is not physically connected. The problem is probably that my card has only 3 ports, and I dont know how to change your code for that, by removing @3,name it still the same. My card is ASUS HD 5870 V2. I will attach my two IOreg with and without DSDT, and also my DSDT.aml

 

post-820007-0-39265200-1358130773_thumb.png

mymac.zip

mymacnodsdt.zip

DSDT.aml.zip

Share this post


Link to post
Share on other sites

Oh, and in your DSDT the device name where you will apply edits is called MRP3, just copy the code over the whole device section replacing MRP3 with PEGP. You may have to change a couple old references to that device name also to PEGP when you compile it if any errors or warnings are received

 

OK, 1 sec, 3 port version coming right up

 

also since you have 3 port card and not reference design, Uakari may not be the best , what 3 connector types do you have? HDMI, DP and DVI?

 

Try this, but non reference design may require some additional work and possibly framebuffer personality editing.

 

Vervet frame buffer maybe another option to try before having to manually edit kext. Since it is also 6 digits long name, you can just change Uakari to Vervet in the DSDT with no need to change buffer length or anything.

DSDT.aml.zip

Share this post


Link to post
Share on other sites

Here, try this, otherwise gonna have to boot windows and get a ROM dump from GPU-z and use that info to modify personality tables, or use Clover bootloader's patching.

DSDT.aml.zip

Share this post


Link to post
Share on other sites

non-reference card is the problem, so your ports and sense IDs do not mach the default personality tables. Dump your GPU's rom from windows using GPU-z and upload it here. dump will be a .bin file, just rename it to .rom, or not since I can do that part. :)

Share this post


Link to post
Share on other sites

Hi :)

 

@eep357

 

it's more about HD 5870 than OS X Mountain Lion, so needs to be moved in the more appropriate place. :)

 

@StephanCA

 

chameleon can inject these infos alone, so try to install the last chameleon then

 

GraphicsEnabler=Yes

 

AtiConfig=Uakari

 

AtiPorts=4

 

 

into your org.chameleon.Boot.plist.

 

You will not need to inject it via DSDT. And like iFIRE said it, it's just cosmetic, it doesn't affect the proper functioning of your graphics card!

;)

 

 

Cordially

Share this post


Link to post
Share on other sites

eep357, I will have to install windows tomorrow to do that, but here is the rom that I updated my card with if thats the same thing http://www.techpowerup.com/vgabios/72815/Asus.HD5870.1024.100311.html

 

fantomas1, I tried those lines and it does the same thing - low resolution and another monitor in properties, without those lines everything seems to work, except I noticed when changing browsers window size it's not smooth, and the card is not listed in PCI Cards. I want to make sure it works good since I'm planning on keeping this set up.

Share this post


Link to post
Share on other sites

It will affect performance if FB cannot match the ports, and in this case due to non-reference design, Uakari will not. Forcing Uakari FrameBuffer will result in not all outputs working. GE=Yes will load generic framebuffer, which will work but slightly reduce performance and DVD Player will crash. The only way to make it work properly is to patch the framebuffer personalities in ATI5000Controller.kext. Once the kext is patched, it will not matter if you inject via DSDT or use Chameleon with options specified above (assuming the patching is applied to Uakari personality)

 

That will be enough, here is that rom decoded:

ATOM BIOS Rom:
SubsystemVendorID: 0x1043 SubsystemID: 0x0346
IOBaseAddress: 0x0000
Filename: SV36460.107
BIOS Bootup Message:
6898.12.20.0.5.AS02 U126							 

PCI ID: 1002:6898
Connector at index 0
Type [@offset 44298]: DisplayPort (10)
Encoder [@offset 44302]: INTERNAL_UNIPHY2 (0x21)
i2cid [@offset 44398]: 0x92, OSX senseid: 0x3
Connector at index 1
Type [@offset 44308]: HDMI-A (11)
Encoder [@offset 44312]: INTERNAL_UNIPHY2 (0x21)
i2cid [@offset 44425]: 0x93, OSX senseid: 0x4
Connector at index 2
Type [@offset 44318]: DVI-I (2)
Encoder [@offset 44322]: INTERNAL_UNIPHY (0x1e)
i2cid [@offset 44462]: 0x94, OSX senseid: 0x5
Connector at index 3
Type [@offset 44328]: DVI-I (2)
Encoder [@offset 44332]: INTERNAL_KLDSCP_DAC1 (0x15)
i2cid [@offset 44462]: 0x94, OSX senseid: 0x5

Here is reference model 5870's rom decoded:

ATOM BIOS Rom:
SubsystemVendorID: 0x1682 SubsystemID: 0x2961
IOBaseAddress: 0x0000
Filename: 587XZF15.BIN
BIOS Bootup Message:
CYPRESS XT GDDR5 32Mx32 C00801 BIOS UCODEv:126							 
PCI ID: 1002:6898
Connector at index 0
Type [@offset 44528]: DisplayPort (10)
Encoder [@offset 44532]: INTERNAL_UNIPHY2 (0x21)
i2cid [@offset 44656]: 0x90, OSX senseid: 0x1
Connector at index 1
Type [@offset 44538]: HDMI-A (11)
Encoder [@offset 44542]: INTERNAL_UNIPHY2 (0x21)
i2cid [@offset 44683]: 0x93, OSX senseid: 0x4
Connector at index 2
Type [@offset 44548]: DVI-I (2)
Encoder [@offset 44552]: INTERNAL_UNIPHY1 (0x20)
i2cid [@offset 44720]: 0x92, OSX senseid: 0x3
Connector at index 3
Type [@offset 44558]: DVI-I (2)
Encoder [@offset 44562]: INTERNAL_KLDSCP_DAC2 (0x16)
i2cid [@offset 44720]: 0x92, OSX senseid: 0x3
Connector at index 4
Type [@offset 44568]: DVI-I (2)
Encoder [@offset 44572]: INTERNAL_UNIPHY (0x1e)
i2cid [@offset 44757]: 0x94, OSX senseid: 0x5
Connector at index 5
Type [@offset 44578]: DVI-I (2)
Encoder [@offset 44582]: INTERNAL_KLDSCP_DAC1 (0x15)
i2cid [@offset 44757]: 0x94, OSX senseid: 0x5

And here is Uakari's Table

Personality: Uakari
ConnectorInfo count in decimal: 4
Disk offset in decimal 591232
0000000    00  04  00  00  00  04  00  00  00  71  00  00  12  04  04  01
0000010    04  00  00  00  14  00  00  00  00  71  00  00  01  12  01  03
0000020    00  02  00  00  14  00  00  00  00  71  00  00  00  00  06  05
0000030    00  08  00  00  00  02  00  00  00  71  00  00  22  05  05  04
0000040

With the reference design, the port types and sense ID's all match what is in the VBIOS. On your non-reference, the first connector "DisplayPort" has different sense ID, instead of sense ID id 01, it has sense ID of 03 and therefor fails to load any further. Luckily the HDMI and DVI sense ID's do match, so will only need to make minor change to the personality like this:

Personality: Uakari
ConnectorInfo count in decimal: 4
Disk offset in decimal 591232
0000000    00  04  00  00  00  04  00  00  00  71  00  00  12  04  04  03
0000010    04  00  00  00  14  00  00  00  00  71  00  00  01  12  01  06
0000020    00  02  00  00  14  00  00  00  00  71  00  00  00  00  06  05
0000030    00  08  00  00  00  02  00  00  00  71  00  00  22  05  05  04
0000040

 

Then move the additional DVI port to the end of the connector list:

Personality: Uakari
ConnectorInfo count in decimal: 4
Disk offset in decimal 591232
0000000    00  04  00  00  00  04  00  00  00  71  00  00  12  04  04  03
0000010    00  02  00  00  14  00  00  00  00  71  00  00  00  00  06  05
0000020    00  08  00  00  00  02  00  00  00  71  00  00  22  05  05  04
0000030    04  00  00  00  14  00  00  00  00  71  00  00  01  12  01  06
0000040

 

I'll actually flip the Dual link and Single link in the connector table, but you get the idea :)

 

This layout should work, gimme a bit to patch it:

Personality: Uakari
ConnectorInfo count in decimal: 4
Disk offset in decimal 591232
0000000 00  04  00  00  00  04  00  00  00  71  00  00  12  04  04  03
0000010 04  00  00  00  14  00  00  00  00  71  00  00  01  12  01  05
0000020 00  08  00  00  00  02  00  00  00  71  00  00  22  05  05  04
0000030 00  02  00  00  14  00  00  00  00  71  00  00  00  00  06  01
0000040

 

What OSX version are you on, don't want to give you a patched 10.8.3 kext.

Share this post


Link to post
Share on other sites

eep357, it probably almost works, I'm already getting only one display in properties but it's recognized as CRT. here is IOreg. Thank you for helping.

 

I'm connected to HDMI at the moment, and it shows CRT and no audio.

mymac.zip

Share this post


Link to post
Share on other sites

yes, IOreg looks really good other than that. Can you try some different frame framebuffers like Verevet, Eulemer, Hoolock, Baboon, or Langur until you find one that registers the hdmi properly and let me know which one it is and send that ioreg, I can then copy it's full hdmi table over to to Uakari

Share this post


Link to post
Share on other sites

I don't have any luck with trying different framebuffers. When I used Uakari with original kext I think it represented HDMI the best but it just had that annoying CRT display with it.

Share this post


Link to post
Share on other sites

For me it doesn't make difference DSDT or chameleon, I get same results. Don't know whats wrong with it.

 

Maybe it could be that sense id's got mixed up and it thinks that my hdmi port is VGA.

 

Yes in IOreg it says 0x200 and should say 0x800 for HDMI. what sense id's did you use? because i'm trying to play with framebuffer to see if I can learn it and I cant get the right one for DVI. For HDMI I think its 4 and DP is 3 or 5.

Share this post


Link to post
Share on other sites

Ok here is what I got now in AMD5000Controller now that is all working except need to get rid of the last line

 

00 04 00 00 00 04 00 00 00 71 00 00 12 04 01 03
00 02 00 00 14 00 00 00 00 71 00 00 00 00 02 05
00 08 00 00 00 02 00 00 00 71 00 00 22 05 03 04
00 08 00 00 00 02 00 00 00 71 00 00 22 05 04 04

 

When I just remove the last line than the kext doesnt load, and when I use random sense id for it I get CRT monitor again.

Share this post


Link to post
Share on other sites

I think I got it to work, I used those lines

 

00 04 00 00 00 04 00 00 00 71 00 00 12 04 04 03
00 02 00 00 14 00 00 00 00 71 00 00 00 00 06 05
00 08 00 00 00 02 00 00 00 71 00 00 22 05 05 04
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

 

I will attach my IOreg, please let me know if everything should be ok now, and a big thanks for your help, I learned a lot in those two days.

mymac.zip

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×