Jump to content

HD3000 + other card: solution by EFI string creation

efi double card hd3000

  • Please log in to reply
1 reply to this topic

#1
Shub

Shub

    InsanelyMac Protégé

  • Members
  • Pip
  • 2 posts
  • Gender:Male
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:

Posted Image


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.

Posted Image

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.

Posted Image

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:

Posted Image

Have fun!

Shub

#2
eep357

eep357

    Triple Platinum

  • Supervisors
  • 2,527 posts
  • Gender:Male
  • Location:Dark Side of The Wall
  • Interests:things and stuff
Great job and great post! :thumbsup_anim:





Also tagged with one or more of these keywords: efi, double card, hd3000


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy