Jump to content

[Guide] [Mavericks & Yosemite] AMD Radeon HD5450


Dr. Hurt
 Share

214 posts in this topic

Recommended Posts

My DSDT (Gigabyte GA-EX58-UD4P) DSDT (attached) does not appear to have either PEG0 or PEGP, can you assist?

 

Thanks very much...

 

UPDATE:  Disregard, the DSDT file previously built for JuniorGump's similar (UD3R) board works fine.  Thanks...

Interesting that it did not work here. :wacko:

Link to comment
Share on other sites

Introduction:

After seeing a lot of people having trouble getting the Radeon HD5450 working with Mavericks, I decided to make a guide.

The card works perfectly without any graphics enabler as long as the proper device ids are in place.

Guides made for Mountain Lion are obsolete because Apple changed the kext names.

 

--- The are two ways to get the HD5450 to work properly in Mavericks:

1- Injecting a compatible fake-id (in this case, 68E01002) via DSDT. This has the advantage of using Apple's stock kexts and thus no need to re-patch kexts with every system update. 

2- Adding your specific device-id to the appropriate kexts. This is probably easier, but you'll have to redo it everytime you update the system.

 

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

 

1- Inject a compatible fake-id via DSDT. (Recommended if you have the skills)

All you need is to add the following code in the appropriate location in your DSDT (usually under PEG0 or PEGP).

PS. With this method you *must* use the original unmodified kexts.

Device (GFX0)
                {
                    Name (_ADR, Zero)
                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x0C)
                            {
                                "device-id", 
                                Buffer (0x04)
                                {
                                    0xE0, 0x68, 0x00, 0x00
                                }, 


                                "ATY,DeviceID", 
                                Buffer (0x02)
                                {
                                    0xE0, 0x68
                                }, 


                                "vendor-id", 
                                Buffer (0x04)
                                {
                                    0x02, 0x10, 0x00, 0x00
                                }, 


                                "ATY,VendorID", 
                                Buffer (0x02)
                                {
                                    0x02, 0x10
                                }, 


                                "AAPL,slot-name", 
                                Buffer (0x07)
                                {
                                    "Slot-1"
                                }, 


                                "@0,AAPL,boot-display", 
                                Buffer (Zero) {}
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }
 

2- Add the device id of your GPU to the appropriate kexts.

Add your device-id to the cedar section of the AMDRadeonX3000.kext and anywhere in the AMD5000Controller.kext

- Go to /System/Library/Extensions/ 
- Copy AMDRadeonX3000.kext and AMD5000Controller.kext to your desktop

- Right click on the AMD5000Controller.kext and click show contents.
- Open the info.plist (using TextEdit or any plist editor)
- Find the IOPCIMatch key and you'll see many device-ids
- Change any of those device-ids with yours (eg. 68981002 -> 68F91002)
- Save (make sure you don't change file extension)

- Right click on the AMDRadeonX3000.kext and click show contents.
- Open info.plist
- Find the AMDCedarGraphicsAccelerator
- Under IOPCIMatch, change 68E01002 to 68F91002
- Save

Use Kext Wizard to reinstall the modified kexts.

 

===============================================================================================================

 

Further Considerations:

1- Power Management

a- I use MacPro3,1 smbios to avoid loading AGPM and my temperature and performance are very acceptable.

b- You can experiment with different smbios (mainly iMac11,2 and 11,1) which will load AGPM.

 

2-  Framebuffers:

a- You can either use the Eulemur or the Generic framebuffer. My tests show no performance difference.

b- Eulemur breaks sleep with DVI and HDMI monitors. VGA works fine though!

c- Clover and Chameleon will automatically set framebuffer to Eulemur so I strongly recommend you disable the graphics injector features. 

 

3-  VESA modes (aka. boot resolution)

a- Chameleon's resolution module can patch the vbios and give you full resolution during boot.

b- Clover's built-in vbios patcher works perfectly too. 

c- VGA does not work in either case. The bootloader fails to read the EDID to obtain the optimal resolution.

 

4- Clover:

a- Clover's graphics injector has the ability to inject a fake id

b- As stated before, the injector automatically set framebuffer to Eulemur and thus breaks sleep. 

You da Man Doc!  DSDT method works great.....10.9.2!

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...
  • 2 weeks later...

Dear Dr. Hurt,

 

hoping not to trouble you too much with my question,

 

could you please help me to better understand which "compatible fake-id" I should use (within the code that you provided as a sample in your guide) to inject a compatible fake-Id for my XFX Radeon HD5670 card for its inclusion in the DSDT of my Asus 7P55D-E ?

 

More precisely: based on the fact that the ID of the card detected in my system is 68d81002, should I modify your sample code replacing any occurrence of "0xE0" with "0xD8" or should I use a completely different (btw: which one?) ID that is known to be 'compatible' with my HD5670?

 

I apologize if the question might sound stupid or obvious, but I have spent the last four late evenings trying (unsuccessfully) to have my XFX Radeon HD5670 working in my 10.9.2 Vanilla installation playing in whatever way with Kexts, plist editor and Chameleon boot flags, and I would really like to try a different method to finally manage to activate my card using the DSDT injection approach that you recommended In your guide (currently my problem is not only QE/CI missing, but the whole card not detected, with my system simply showing a generic 5MB monitor...).

However, although I initially seemed to understand that I should indeed replace 0xE0 with 0xD0 in your example, I was a quite confused reading your remarks in post#5 about the mistake of adding "own Id" instead of the fake one (and by "own ID" I assume you indeed referred to the correct ID of the peripheral as reported by the system info).

 

Thanks very much for your help.

Link to comment
Share on other sites

  • 2 weeks later...

Hi everyone!

 

Dr. Hurt, Thank you for the wonderful topic! I modified the kexts and now I have QE/CI enabled. Works great! This is wonderful!

 

Next thing I would like to try the DSDT injection approach.

I extracted my DSDT (attached) but I can't find the PEG0 or PEGP section to inject the code.

 

dsdt.dsl.zip

 

Can anyone please have a look and advice me on this? Thank you very much in advance!

Link to comment
Share on other sites

Hi everyone!

 

Dr. Hurt, Thank you for the wonderful topic! I modified the kexts and now I have QE/CI enabled. Works great! This is wonderful!

 

Next thing I would like to try the DSDT injection approach.

I extracted my DSDT (attached) but I can't find the PEG0 or PEGP section to inject the code.

 

attachicon.gifdsdt.dsl.zip

 

Can anyone please have a look and advice me on this? Thank you very much in advance!

 

In your case, the code needs to be added P0P1.

 

Anyway, here's your DSDT patched with the needed stuff.

 

Remember that you *must* revert the edits you made to your kexts before using the patched DSDT.

DSDT.zip

  • Like 1
Link to comment
Share on other sites

In your case, the code needs to be added P0P1.

 

Anyway, here's your DSDT patched with the needed stuff.

 

Remember that you *must* revert the edits you made to your kexts before using the patched DSDT.

Thank you very much for patching my DSDT!

 

I placed the file in /Extra, restored the patched kexts to the original ones, and rebooted with GraphicsEnabler=No

 

However it seems not to work: now I lost QE/CI, in "About this Mac" there is a blank field under "Graphics", and my monitor switched back to 600x800 resolution.

 

The patched DSDT seems to be loaded: in Chameleon Wizard under Compile/Extract it tells me "DSDT cannot be extracted because you are using custom file DSDT.aml"

 

Anything I could be doing wrong?

Link to comment
Share on other sites

  • 3 weeks later...

This files works 100% on Mavericks 10.9.3

 

Edit with your ids and install with kext utility.

Help please. Updated to 10.9.3 and used these kext and have also tried my old 10.9.2 ones but cannot the the card to work correctly.

 

I have amended the info list with the ids of my card, anything else I can try.

 

Thank you

Link to comment
Share on other sites

Installed the kext and all was working fine, so I tried the same procedure on the main drive and no QE/CI. Re booted back into the back up and the same issue. My card has an id of 68E1, I have checked the info list and the id is present.

 

Do I have to run myhack after installing the kext with kext utility? Do I need any flags in the org.chameleon.Boot?

 

Thank you

Link to comment
Share on other sites

Try :

 

GraphicsEnabler=Yes and AtiConfig=Eulemur

or

GraphicsEnabler=No and AtiConfig=Eulemur

or

GraphicsEnabler=No

 

Check that ID's are presents in both AMDRadeon5000Controller.kext and AMDRadeonx3000.kext and that you've rebuild System Cache (type sudo touch /System/Library/Extensions in terminal) and reboot with UseKernelCache=No and - f

 

You shouldn't need to use myHack if you installed your kexts with Kext Utility but it won't mess up your system if you do so.

Link to comment
Share on other sites

Thanks. I deleted the two kexts from the library / extension, remade them using kext wizard it started working fine on the test hd.

 

I did the same on the live hd and no joy. I just restored the test over live and all is good. I did use your kext.

 

Thank you once again for the rescue. :D

Link to comment
Share on other sites

 Share

×
×
  • Create New...