Jump to content
Shub

HD3000 + other card: solution by EFI string creation

2 posts in this topic

Recommended Posts

Hi all!

 

I have an Asus P8Z68-V Pro board with an I5-2500K CPU (HD3000 integrated GPU) and an AMD 7870.

 

The problem:

 

MacOs Mountain Lion does not support my 7870, but does support the HD3000 GPU, and accelerated.

 

I'm using Chimera as bootloader. Chimera can inject EFI string for HD3000, and it works great, but only if you don't have a second UNSUPPORTED graphics card, like me.

 

In my case, even if i set from the bios the HD3000 GPU as default and so on, and attach the DVI cable to the mobo, Chimera finds an AMD GPU and injects the EFI framebuffer infos, which are WRONG from the 7870. The system hangs.

 

On the other side, if I tell Chimera not to inject anything (GraphicsEnabler=No in org.chameleon.Boot.plist), I have no acceleration.

 

My solution is to create an ad hoc EFI string to be put into org.chameleon.Boot.plist and injected by Chimera at boot time.

 

So, I created a plist file, converted it into hex using gfxutil and inserted the hex string into org.chameleon.Boot.plist: it worked!

 

1) use gfxutil to find the PCI path to the HD3000: i used the GFX0 name, it may be different on other pc (IGPU for example)

 

localhost:~ shub$ gfxutil -f GFX0
DevicePath = PciRoot(0x0)/Pci(0x2,0x0)
localhost:~ shub$

 

2) start Property List Editor and create something like this: put the DevicePath, the part after the "=", as below:

 

854f36d1.png

 

 

3) Now we have to add some entries. I copied these ones from my pc booted without the 7870 (physically removed) and with the Chimera injector active (GraphicsEnabler=Yes). I have to mess up a little with data type and string types. If I used the string type, some options were interpreted as data type, so I had to convert each char of the strings into corrisponding hex ASCII value.

 

a67058a1.png

 

You can find some of this values in Chimera source (gma.c).

 

Here they are. name, compatible, model, and hda-gfx are strings (null terminated). compatible are three strings null terminated.

 

  "name"=<646973706c617900>
  "AAPL,os-info"=<30490112121208000001f01f0100000010070000>
  "compatible"=<706369313034332c3834346400706369383038362c31323600706369636c6173732c30333030303000>
  "model"=<496e74656c204844204772617068696373203330303000>
  "hda-gfx"=<6f6e626f6172642d3100>
  "AAPL,tbl-info"=<304402020202000000000202020201010101>
  "AAPL,iokit-ndrv"=<206d99807fffffff>
  "class-code"=0x00030000
  "reg"=<0010000000000000000000000000000000000000101000020000000000000000000000000000400018100042000000000000000000000000000000102010000100000000000000000000000040000000>
  "pcidebug"='0:2:0'
  "built-in"=0x00
  "AAPL,gray-page"=0x00000001
  "AAPL,gray-value"=0x00648cc3
  "device-id"=0x00000126

 

The result in ioreg: as you can see, data turned into strings.

 

21cf1c7b.png

 

4) Anyway, after you created the plist as above, save it like let's say hd3000.plist and create the hex string with this command:

 

localhost:~ shub$ gfxutil -v -i xml -o hex hd3000.plist hd3000.hex

o device-properties <size=678, children=1>
|  
+-o PciRoot(0x0)/Pci(0x2,0x0) <size=666, records=14>
{
  "name"=<646973706c617900>
  "AAPL,os-info"=<30490112121208000001f01f0100000010070000>
  "compatible"=<706369313034332c3834346400706369383038362c31323600706369636c6173732c30333030303000>
  "model"=<496e74656c204844204772617068696373203330303000>
  "hda-gfx"=<6f6e626f6172642d3100>
  "AAPL,tbl-info"=<304402020202000000000202020201010101>
  "AAPL,iokit-ndrv"=<206d99807fffffff>
  "class-code"=<00000300>
  "reg"=<0010000000000000000000000000000000000000101000020000000000000000000000000000400018100042000000000000000000000000000000102010000100000000000000000000000040000000>
  "pcidebug"='0:2:0'
  "built-in"=<00>
  "AAPL,gray-page"=<01000000>
  "AAPL,gray-value"=<c38c6400>
  "device-id"=<26010000>
}
localhost:~ shub$

 

5) Now you have the EFI string into hd3000.hex file. To tell Chimera to inject it, open your org.chameleon.Boot.plist and insert something like this:

 

<key>device-properties</key
<string>a602000001000000010000009a0200000e00000002010c00d041030a000000000101060000027fff04000e0000006e0061006d00650000000c000000646973706c6179001e0000004100410050004c002c006f0073002d0069006e0066006f0000001800000030490112121208000001f01f01000000100700001a00000063006f006d00700061007400690062006c00650000002d000000706369313034332c3834346400706369383038362c31323600706369636c6173732c30333030303000100000006d006f00640065006c0000001b000000496e74656c204844204772617068696373203330303000140000006800640061002d0067006600780000000e0000006f6e626f6172642d3100200000004100410050004c002c00740062006c002d0069006e0066006f00000016000000304402020202000000000202020201010101240000004100410050004c002c0069006f006b00690074002d006e0064007200760000000c000000206d99807fffffff1a00000063006c006100730073002d0063006f0064006500000008000000000003000c00000072006500670000005400000000100000000000000000000000000000000000001010000200000000000000000000000000004000181000420000000000000000000000000000001020100001000000000000000000000000400000001600000070006300690064006500620075006700000009000000303a323a30160000006200750069006c0074002d0069006e0000000500000000220000004100410050004c002c0067007200610079002d00700061006700650000000800000001000000240000004100410050004c002c0067007200610079002d00760061006c0075006500000008000000c38c6400180000006400650076006900630065002d006900640000000800000026010000</string>

 

where the neverending string is the hd3000.hex file content. Just ONE line.

 

6) Disable Chimera auto injection (GraphicsEnabler=No in org.chameleon.Boot.plist) and reboot. It SHOULD work.

 

Note:

I think most of the strings in the plist file can be omitted: the most important ones are:

 

AAPL,os-info

AAPL,tbl-info

built-in

class-code

device-id

hda-gfx

model

name

reg

 

If you have problems, try to delete the others, cause they may be specific for my machine.

 

Result:

 

th_2df15f03.png

 

Have fun!

 

Shub

Share this post


Link to post
Share on other sites

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By BALDY_MAN
      Z490 GigabyteMaster.Config plist Template
       
      Hi all I have put together a  config.plist template to help you get started. Setting up your z490 Motherboard
      It is a template for you to copy the settings to your OWN
      Config.plist
      Open it with a plist editor
      And copy the same settings to your OWN Plist
      You will need to add you own motherboard  serail numbers
      I Have  put it so in the template (P.Y.O) Meaning put your own)
      Z490Gigabyte.Master. Config.plistTemperate.zipOpenCore. SanityCheck Screen Shots
      Attached  OpenCore Sanity screen Shots
       
    • By BALDY_MAN
      Hi All.
      Im Happy to share my new EFI file that I put together  18/10/2020. which got me up and running 11.0  Beta(20A5395g) on my hack
      a thanks you to everyone who's work I have use to assemble this EFI File. and the help I have received from this site
      I have used openCore 0.6.3, sound work for me (HDMI) and onboard Ethernet. map the usb ports as you wish.
      the definition to iMac20,2
      hope it helps all who need it
      PS. Please leave a comment if the EFI File is helpful to you
      (No Kexts were Harmed in the making of this EFI)
      THIS EFI. WAS MADE ON A Z490 GIGABYTE MASTER For the Z490 Gigabyte Master ONLY
                                                                                                                     regards
                                                                                                                                         Baldy_man
      GigabyteZ40Master.EFI.(20A539g) .zip
    • By le332313
      Can someone share the dell 5593/5493 EFI ? I try to fit the graphics driver, but it not working please help me thanks
       
×