Jump to content

7970M Custom Personality editing and injection help

3 posts in this topic

Recommended Posts

Hello all,


So finally i have managed to edit my DSDT to allow the 7970M card to be enabled. I have the HDMI working 100%, this is great but as it is a laptop i would love to have to internal screen working. I have read every forum on the net on how to edit custom personalities but i just can't seem to understand it!


My laptop is a Alienware M17X R4, the ports from the card are: Internal screen, HDMI, VGA, DP. My frame buffer is Buri. I understand i need to inject these ports into the frame buffer, i just don't understand how to do it. I have looked everywhere on how to do it, and i have found articles that physically show me how, i just don't get it. So any help would be awesome!!


If you ned any dumps, extra info tell me and i will get back to you ASAP!



Personality: Buri
ConnectorInfo count in decimal: 4
Disk offset in decimal 1489792
0000000    02  00  00  00  00  01  00  00  29  05  01  00  10  00  05  05
0000010    00  04  00  00  04  03  00  00  00  09  02  00  11  02  01  01
0000020    00  04  00  00  04  03  00  00  00  09  03  00  21  03  02  02
0000030    00  08  00  00  04  02  00  00  00  01  04  00  12  04  03  03
        SubsystemVendorID: 0x1028 SubsystemID: 0x057b
        IOBaseAddress: 0x3000
        Filename: C42904A1.118
        BIOS Bootup Message: 
Wimbledon XT A01 MXM GDDR5 300e/150m 0.9V A1                                
PCI ID: 1002:6800
Connector at index 1
        Type [@offset 45958]: LVDS (7)
        Encoder [@offset 45962]: INTERNAL_UNIPHY (0x1e)
        i2cid [@offset 46111]: 0x94, OSX senseid: 0x5
Connector at index 2
        Type [@offset 45968]: DisplayPort (10)
        Encoder [@offset 45972]: INTERNAL_UNIPHY1 (0x20)
        i2cid [@offset 46138]: 0x91, OSX senseid: 0x2
Connector at index 3
        Type [@offset 45978]: HDMI-A (11)
        Encoder [@offset 45982]: INTERNAL_UNIPHY1 (0x20)
        i2cid [@offset 46165]: 0x90, OSX senseid: 0x1
Connector at index 4
        Type [@offset 45988]: HDMI-A (11)
        Encoder [@offset 45992]: INTERNAL_UNIPHY2 (0x21)
        i2cid [@offset 46192]: 0x92, OSX senseid: 0x3
Connector at index 5
        Type [@offset 45998]: VGA (1)
        Encoder [@offset 46002]: INTERNAL_KLDSCP_DAC1 (0x15)
        i2cid [@offset 46219]: 0x97, OSX senseid: 0x8

Share this post

Link to post
Share on other sites

you will need to hexedit the ati7000controller and look for existing hex values, and replace accordingly. rampagedev has a pretty good breakdown:



So we take connector 0000000 and split it up (the first connector)

02 00 00 00

00 01 00 00

29 05 01 00

10 00 05 05


And divide by the last two parts again, by two, giving us the divided Buri personality:

02 00 00 00  <-- Connector type

00 01 00 00 <--ATY control flag

29 05           <-- Features

01 00           <--Unknown

10                 <--Transmitter

00                <-- Encoder

05                 <--Hotplug ID

05                <--Sense ID


Now we start modification based on the data:

02 00 00 00 <--Leave this alone, we need this for LVDS

00 01 00 00 <--We have two options here, 0x0040 or 0x0100 which would translate into 00 01 00 00 or 40 00 00 00 (after byte-swapping, I believe) 

29 05 <--Features...this is where it gets tricky....I would try 09 01 because lvds/backlight (not sure...somebody else double check for this)

01 00 <-- leave aone

10      <-- you have "INTERNAL_UNIPHY"...so I would try 00, 01, or 02 here

00      <-- I would guess leave alone or try 01 or 02

05      <-- would leave alone or change to 00 or 01

05      <-- I would guess this is correct


In addition, you should inject your EDID via clover or DSDT

Will take a lot of trial and error


I have tried these two so far, no success:



Share this post

Link to post
Share on other sites

Ok, I'd like to contribute! I have internal lcd working ok after sleep and wake, otherwise I've banding like this:



So I'll comment what applehacker wrote:


02 00 00 00 <--ok, no comment here


00 01 00 00 <--With 0x0100 (00 01 00 00) have black screen, with 0x0040 (40 00 00 00) it is ok


29 05 <--I've tryed 2905, 0105, 0805, 0101, 0801-does not change enything


01 00 <-- from guide this must be 0000


for this entries you must use redsock_bios_decoder!


10 <-- you have "INTERNAL_UNIPHY"...so I would try 00, 01, or 02 here


00 <-- I would guess leave alone or try 01 or 02


05 <-- would leave alone or change to 00 or 01


05 <-- I would guess this is correct


so in my case the string is:



Let me know!

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.

  • Similar Content

    • By Slice
      As I see many novices in the forum ask "How to make my Radeon working? I have bad resolution, no QE/CI...." and so on. They come to the section and have no find an answer here because all Radeons are different and they don't know where else they read about this.
      I want to explain all steps needed for launching the Radeon family of videocards.
      I will speak about Clover because I maintain this bootloader to know recent hardware and modern OSX. Not sure if you will have the same result with other bootloaders. I am carefully checking the injecting of ATI card and correcting it times to times. I am also accessible for bug reports.
      OSX version.
      Older card require older system, newer cards require new system.
      ATIRadeon9000 is possible to launch under Tiger.
      ATIRadeonMobilityX1400 requires 10.5-10.6. See RadeonHD topic.
      As I see RadeonHD3xxx was successful only in 10.5
      For new AMDRadeonHD7xxx there must be 10.8.3+ system.
      This must be the first question before asking about the card.
      You may know the device-id from Windows->DeviceManger->VideoCard.properties->compatibleIDs
      You may boot into system in safe mode (key -x) and see system profiler
      And you may boot into Clover GUI, press F2 and get preboot.log. Find here something like
      2:709 0:000 PCI (00|01:00.00) : 1002 6758 class=030000 2:709 0:000 Found Radeon model=AMD Radeon HD 6670 Series It means my DeviceID=6758 (these are hex numbers)
      Then you must check that Apple's drivers support your DeviceID. If not then add it!
      For example HD7850 has DeviceID=6819. If we look into ATI7000Controller (AMD7000... in new systems) we find 6818 here but no 6819!
      I show you how to do this with terminal commands. Launch /Application/Utilities/Terminal.app. Type in opened window:
      cp /System/Library/Extensions/ATI7000Controller.kext/Contents/Info.plist ~/Desktop So you get a copy of the Info.plist on Desktop. Edit it with TextEdit. Change 68181002 -> 68191002.
      Don't edit this file directly in the system folder! 
      Then copy back by terminal. Don't use finder to copy kexts! They will have wrong permissions in this case.
      sudo cp ~/Desktop/Info.plist /System/Library/Extensions/ATI7000Controller.kext/Contents/ sudo rm -r -v /System/Library/Caches/com.apple.kext.caches/* Second command make sure next reboot the kext will use your edited info.plist.
      The same operation you must do with a kext AMDRadeonAccelerator or ATIRadeonX2000 or other one. Check all candidates if they contain such list of possible IDs and choose closest to you.
      Since Clover revision 1971+ you may just inject new DeviceID into DSDT instead of correcting kexts. See instruction here.
      GraphicsEnabler or Injector
      OSX needs to know some properties (Model name, Family, etc...) that must be somehow injected at boot time. Yes, also real Macs got DeviceProperties string from firmware.
      1. Set InjectATI=Yes in Clover (same as GE=y in Chameleon).
      2. Use custom string made with gfxutil. For whom who knows.
      3. Write _DSM into DSDT. You should know what to write.
      4. Use some kext like ATY_init.kext or Natit.kext. If you are sure that the kext is for your card namely.
      I want to say that all this methods make the same thing. Differencies in their tuning.
      The Clover do this automatically for most known cards at this moment.
      As you may see to start HD5000-7000 some strange names used: Pithecia, Orangutan, Elodea... What are they?
      They are configs for framebuffer. Predefined configs how connectors are solded for cards used in real Macs. Strange but these configs rear coincide with PC card. Usually gurus make advice "choose a framebuffer that most appropriate for your card". The chances 1:10. In most cases you may find a FB name that gives you main monitor working. Or nothing at all.
      Great respect to bcc9 who gives us a method to correct one of config to be exactly for you. See here.
      My retelling for Clover is here
      Success example in the thread in posts 44-52
      Radeon Mobility
      I tested Clover's methods with two users having Mobility Radeon HD5470 and HD5650M. We found that full memory and QE/CI will be achieved if we set in Clover's config
      even thou no file with bios is provided. This is the key to make Radeon Mobility working!
      Other problem is bad gradients or artifacts. For this case Clover accept the key
      and sometimes you also need to inject CustomEDID.
      See Clover instructions for details.
      And my results.
      Gigabyte Radeon HD6670
      <key>Graphics</key> <dict> <key>GraphicsInjector</key> <true/> <key>InjectEDID</key> <true/> <key>FBName</key> <string>Ipomoea</string> <key>LoadVBios</key> <false/> <key>VideoPorts</key> <integer>3</integer> <key>PatchVBios</key> <true/> </dict> <key>KernelAndKextPatches</key> <dict> <key>KernelCpu</key> <false/> <key>ATIConnectorsController</key> <string>6000</string> <key>ATIConnectorsData</key> <string>000400000403000000010000120401050008000004020000000100001102040310000000100000000001000000000002</string> <key>ATIConnectorsPatch</key> <string>040000000403000000010000100001061000000010000000000100000000000100080000040200000001000012040403</string> VTX Radeon HD5570
      <key>Graphics</key> <dict> <key>PatchVBios</key> <false/> <key>FBName</key> <string>Baboon</string> <key>VideoPorts</key> <string>3</string> <key>GraphicsInjector</key> <string>Yes</string> <key>LoadVBios</key> <string>No</string> </dict> <key>KernelAndKextPatches</key> <dict> <key>Debug</key> <false/> <key>KernelCpu</key> <false/> <key>ATIConnectorsController</key> <string>5000</string> <key>ATIConnectorsData</key> <string>040000001400000000010000010201030008000000020000007100002205020110000000100000000001000000100002</string> <key>AppleRTC</key> <true/> <key>ATIConnectorsPatch</key> <string>040000001400000000010000010001040008000000020000007100002200020510000000100000000001000000000002</string> <key>AsusAICPUPM</key> <false/> <key>KextsToPatch</key> <array> <dict> <key>Name</key> <string>AppleAHCIPort</string> <key>Find</key> <data>RXh0ZXJuYWw=</data> <key>Replace</key> <data>SW50ZXJuYWw=</data> </dict> </array> </dict> See PatchVBios=No
      for this card "yes" leads to black screen. Use with precautions.
      A sample for Radeon R7 240
      UPDATE for ElCapitan.
      It seems has more problems. My HD6670 is not working in ElCapitan OOB unlike Mavericks.
      I had to set FakeID=0x67401002 as correspond to real iMac12,2 and set this model in SMBIOS section.
      It related to GraphicsPM or GraphicsControl.
      Look these kexts to decide what you can do for your configuration.
      HighSierra requires change these kexts by version from Sierra 10.12.6
      for Radeon HD6xxx
      AMDRadeonX3000.kext AMDRadeonX3000GLDriver.bundle IOAccelerator2D.plugin IOAcceleratorFamily2.kext .  for Radeon HD7xxx and up AMDRadeonX4000.kext AMDRadeonX4000GLDriver.bundle IOAccelerator2D.plugin IOAcceleratorFamily2.kext .    Black screen after wake problem resolved by follow method radeon_bios_decode.0.2.zip
    • By DerNuntius
      Finally I finished the installation of 10.14.6 on my Dell E5440. Everything works just fine, but HDMI will not work. Every time I plug it in, it causes a grey screen on my laptop monitor. Also on boot up. I attached my EFI Folder, maybe someone can help me. I searched a bit and read something about Azul Framebuffer Kext.
      Thank you for helping.