Jump to content

Intel HD4000, Haswell and Broadwell Inject AAPL,ig-platform-id


ErmaC
 Share

135 posts in this topic

Recommended Posts

Chameleon and Enoch

Intel gma Injector



During last week I redesign part of the Intel Injector (gam.c/gma.h)
due to the new hardware (Haswell)
still need some few TEST and TESTER and than those changes are ready to be committed into Chameleon main trunk code.

FIRST OF ALL
I rename the key flag (thx Micky1979 and bcc9 (also read his topic here: http://www.insanelym...ng-displayport/)):



- For Ivy Bridge the old keyflag HD4K-ig is now deprecated the new name is IntelCapriFB (match with Apple kext name for that hardware)
ex: IntelCapriFB=a_value from 0 to 11


 0 = 00006601
 1 = 01006601
 2 = 02006601
 3 = 03006601
 4 = 04006601
 5 = 05006201
 6 = 06006201
 7 = 07006201
 8 = 08006601
 9 = 09006601
10 = 0a006601
11 = 0b006601



- For the Haswell the recently introduced key flag HD5K-ig is also deprecated and the new name is IntelAzulFB (Same things... match with Apple kext)
ex: IntelAzulFB=a_value from 0 to 16


 0 = 00000604
 1 = 0000060c
 2 = 00001604
 3 = 0000160a
 4 = 0000160c
 5 = 00002604
 6 = 0000260a
 7 = 0000260c
 8 = 0000260d
 9 = 02001604
10 = 0300220d
11 = 0500260a
12 = 0600260a
13 = 0700260d
14 = 0800260a
15 = 08002e0a
16 = 04001204



- For the Broadwell the key name is IntelBdwFB (Same things... match with Apple kext)
ex: IntelBdwFB=a_value from 0 to 18


 0 = 00000616
 1 = 00000e16
 2 = 00001616
 3 = 00001e16
 4 = 00002616
 5 = 00002b16
 6 = 00002216
 7 = 01000e16
 8 = 01001e16
 9 = 02000616
10 = 02001616
11 = 02002616
12 = 02002216
13 = 02002b16
14 = 03001216
15 = 04002b16
16 = 04002616
17 = 05002616
18 = 06002616



I also introduced the ability to inject a custom AAPL,ig-platform-id for those kind of gfx (Ivy, Haswell and Broadwell) the keyflag is InjectIntel-ig
ex: InjectIntel-ig=09006601 (a flipped 01660009)

The priority is:
1° InjectIntel-ig
2° IntelXxxxFB
3° the default setting (based on BIOS memory for Ivy, and default ig for Haswell and Broadwell)

Example of data into org.chameleon.Boot.plist

	<key>InjectIntel-ig</key>
	<string>09006601</string>
	<key>IntelCapriFB</key>
	<string>9</string>
	<key>IntelAzulFB</key>
	<string>9</string>
	<key>IntelBdwFB</key>
	<string>9</string>



ErmaC

Click here to view the article
  • Like 12
Link to comment
Share on other sites

Works fine for my desktop with values 5 and 10.

 

With value 5:

 

id5b.png

 

With value 10:

 

id10.png

My board works fine even without patched DSDT, but patching is required in order to use the HDMI audio and here's the patch I use:

 

 

into method label _DSM parent_adr 0x001B0000 remove_entry;
into device name_adr 0x001B0000 insert
begin
\n
Method (_DSM, 4, NotSerialized)\n
{\n
Store (Package (0x06)\n
{\n
 "hda-gfx",\n
 Buffer (0x0A)\n
 {\n
	 "onboard-1"\n
 },\n
\n
 "layout-id",\n
 Buffer (0x04)\n
 {\n
	 0x03, 0x00, 0x00, 0x00\n
 },\n
\n
 "PinConfigurations", \n
 Buffer (Zero) {}\n
}, Local0)\n
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
Return (Local0)\n
}\n
end;
into method label _DSM parent_adr 0x00020000 remove_entry;
into device name_adr 0x00020000 insert
begin
Method (_DSM, 4, NotSerialized)\n
	 {\n
		 Store (Package (0x02)\n
			 {\n
				 "hda-gfx",\n
				 Buffer (0x0A)\n
				 {\n
					 "onboard-1"\n
				 }\n
			 }, Local0)\n
		 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
		 Return (Local0)\n
	 }\n
\n
end;
into method label DTGP remove_entry;
into definitionblock code_regex . insert
begin
Method (DTGP, 5, NotSerialized)\n
{\n
If (LEqual (Arg0, Buffer (0x10)\n
	 {\n
		 /* 0000 */ 0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, \n
		 /* 0008 */ 0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B\n
	 }))\n
{\n
 If (LEqual (Arg1, One))\n
 {\n
	 If (LEqual (Arg2, Zero))\n
	 {\n
		 Store (Buffer (One)\n
			 {\n
				 0x03\n
			 }, Arg4)\n
		 Return (One)\n
	 }\n
	 If (LEqual (Arg2, One))\n
	 {\n
		 Return (One)\n
	 }\n
 }\n
}\n
Store (Buffer (One)\n
 {\n
	 0x00\n
 }, Arg4)\n
Return (Zero)\n
}
end;

 

 

As you can see, there is no injection for AAPL,ig-platform-id at all.

bdmesg.txt

  • Like 1
Link to comment
Share on other sites

Is this in the Trunk build as well?

 

no only Enoch.

 

  1. This feature was already implemented in my branch of Chameleon (Enoch).
    @ this link the latest compiled Enoch binaries: Enoch 2191 (Binaries)
    Install it.

...

  • The source code will be committed/released when I have accumulated feedback

Works fine for my desktop with values 5 and 10.

 

Thank's.

===== Intel DEVICE INFO ====

Class code: [0300]

Intel HD Graphics 4000 [8086:0162] (rev 09)

Subsystem: [1458:d000]

:: PciRoot(0x0)/Pci(0x2,0x0)

AAPL,ig-platform-id was set in org.chameleon.Boot.plist with value 5

===== END Intel DEVICE INFO ====

 

My board works fine even without patched DSDT, but patching is required in order to use the HDMI audio and here's the patch I use:

As you can see, there is no injection for AAPL,ig-platform-id at all.

PS: I wrote a special module for the AppleHDA.Kext with it you can live w/o layout-id in DSDT ;)

take a look in the i386/module folder and move the HDAEnabler.dylib into /Extra/modules

and set the key

 <key>HDEFLayoutID</key>
<string>03000000</string>

 

Fabio

  • Like 2
Link to comment
Share on other sites

Testing on Samsung Series 5 Ultrabook which has no support to HD4000 and any EFI or DSDT modification doesn't work in progress... i will give results when i am done!

 

//Edit

Oughh seems to be not working, my samsung shows in chameleon 63MB not 64MB and i think this is the problem. :( only HDMI works with acceleration, not working internal.

 

Thx in advance!

Link to comment
Share on other sites

Testing on Samsung Series 5 Ultrabook which has no support to HD4000 and any EFI or DSDT modification doesn't work in progress... i will give results when i am done!

//Edit

Oughh seems to be not working, my samsung shows in chameleon 63MB not 64MB and i think this is the problem. :( only HDMI works with acceleration, not working internal.

 

Provide useful info!

Have you try all the HD4K-ig value???

bdmesg, your gfx id?, you set the HD4000 ram in your BIOS?

 

ErmaC

Link to comment
Share on other sites

Provide useful info!

Have you try all the HD4K-ig value???

bdmesg, your gfx id?, you set the HD4000 ram in your BIOS?

 

ErmaC

 

Provided all of ID, i have no setting in bios to set it's RAM.

Still working, if i get HDMI i will msg bsmesg...

 

//Edit

Clean Install without any other kexts and installed bootloader from zipfile i've got error for HD4000 kext

Can't load kext com.apple.driver.AppleIntelHD4000Graphics - failed to resolve library dependencies
Kext com.apple.driver.AppleIntelHD4000Graphics failed to load (0xdc00800e).
Failed to load kext com.apple.driver.AppleIntelHD4000Graphics (error 0xdc00800e).

 

HDMI has artifacts, and i can't view anth... :/

I have only 2 Ports -> HDMI and Internal

Link to comment
Share on other sites

HDMI has artifacts, and i can't view anth... :/

I have only 2 Ports -> HDMI and Internal

Question. Have you previously get you HD4000 work in some way? like DSDT Injection or EFI stings or some kind of patched Kext?

- Can you provide your DSDT?(if you use one)

- The bdmesg?

 

Is very hard propose any kind of possible solution w/o info.

 

ErmaC

Link to comment
Share on other sites

Question. Have you previously get you HD4000 work in some way? like DSDT Injection or EFI stings or some kind of patched Kext?

- Can you provide your DSDT?(if you use one)

- The bdmesg?

 

Is very hard propose any kind of possible solution w/o info.

 

ErmaC

 

Nope, my HD4000 can't work with all methods.

This method is also not working and this is interesting thing.

 

My bdmesg fragment:

Parse Edid: edid_checksum error error
Best mode: 1024x768x32
getResolution: 1024x768x32

 

So i think, my HD4000 will never work with OSX.

Link to comment
Share on other sites

So i think, my HD4000 will never work with OSX.

Never say never...

<_ you can always get info from windows... src="%7B___base_url___%7D/uploads/emoticons/default_whistle.gif" alt=":whistle:">

Link to comment
Share on other sites

I am not using windows ;)

So, HD4K-ig=3

Only HDMI working as well with QE/CI - nothing else.

Try to provide the IOReg.

As we can see the Injection work, now you need a Patched kext to personalize you conf, and this is not a "issue" related with the bootloader.

Our friend Micky1979 maybe can help you with a patched Kext, be patient.

 

ErmaC

  • Like 1
Link to comment
Share on other sites

PS: I wrote a special module for the AppleHDA.Kext with it you can live w/o layout-id in DSDT ;)

take a look in the i386/module folder and move the HDAEnabler.dylib into /Extra/modules

and set the key

 <key>HDEFLayoutID</key>
<string>03000000</string>

 

Fabio

 

I've tested it tonight and it seems I don't need my patched DSDT anymore, it works perfectly. Thanks!

Link to comment
Share on other sites

Guys, you can add all kind of Port to the kext Capri:

 

http://www.insanelymac.com/forum/topic/284755-video-hdmi-con-audio-su-intel-hd4000-mobile/

 

 

now it is only in Italian, but soon comes the English version.

However, there is button for Google tranlsator

 

....Automatic patch will arrive soon with Pandora

 

Micky

  • Like 1
Link to comment
Share on other sites

Nope, my HD4000 can't work with all methods.

This method is also not working and this is interesting thing.

 

My bdmesg fragment:

Parse Edid: edid_checksum error error
Best mode: 1024x768x32
getResolution: 1024x768x32

 

So i think, my HD4000 will never work with OSX.

Maybe you need to replace your MEI ID into AppleIntelSNBGraphicsFB.kext and AppleIntelFranebufferCapri.kext??
Can't load kext com.apple.driver.AppleIntelHD4000Graphics - failed to resolve library dependencies

Kext com.apple.driver.AppleIntelHD4000Graphics failed to load (0xdc00800e).

Failed to load kext com.apple.driver.AppleIntelHD4000Graphics (error 0xdc00800e).

 

SNB.pngCapri.png

 

According to your ioreg, this was the problem!

 

Do as I told you:

 

for Intel HD4000 on series 6 motherborads, (but also for Intel HD3000 in a new series 7 Motherboards)

 

copy/paste in Terminal.app:

 

 

 

sudo -s (type your password)

 

then

 

sed -i "" 's/0x1E3A8086/0x1C3A8086/' /System/Library/Extensions/AppleIntelFramebufferCapri.kext/Contents/Info.plist

 

then

 

sed -i "" 's/0x1C3A8086/0x1E3A8086/' /System/Library/Extensions/AppleIntelSNBGraphicsFB.kext/Contents/Info.plist

 

 

then repair permission and rebuild the cache.

 

Reboot continuing with Enoch ig-plaform test

 

 

Micky

  • Like 2
Link to comment
Share on other sites

 

 


Maybe you need to add your MEI ID into AppleIntelSNBGraphicsFB.kext??

Open AppleIntelSNBGraphicsFB.kext/Contents/info.plist



try to change under AppleIntelMEIDriver array, 0x1C3A8086 to the real you have ...like 0x1E3A8086 for example..

This does not always happen, but it can be a reason!
Try!


EDIT






According to your ioreg, this was the problem!

Do as I told you:

replace 0x1C3A8086 with 0x1E3A8086 in AppleIntelSNBGraphicsFB.kext/Contents/Resource/info.plist

repair permissions and rebuild the cache and then reboot.
Continue to trying various ig-platform-id available in Enoch!


Micky





No changes, in boot i have error with loading AppleIntelSNBGraphicsFB.kext with dependencies after change to 0x1E3A8086
And there is no path: AppleIntelSNBGraphicsFB.kext/Contents/Resource/info.plist
There is only: AppleIntelSNBGraphicsFB.kext/Contents/Info.plist

Tried also with Capri modifications, still HDMI only working with accel... :/
Link to comment
Share on other sites

Ive been following this thread (and reading links to other HD 4000 content) and you all are doing a great job!

 

But I have a problem....If I use EFI string injection into o.c.B.p (01660004 // Mobile 1 Port, LVDS (Display Notebook)) internal display is perfect w/ QE/CI but I dont have signal on the HDMI port. If i use EFI string injection into o.c.B.p (01660003 // Mobile 4 Ports, 1 LVDS (Display Notebook), 1 HDMI e 2 Display Port) internal display is on but it seems like the resolution is too low as I can only see half of the screen and it also has 'grainy' lines streaking through it. HDMI signal is perfect with this string, however.

 

Im trying to find a possible way to mix the two strings in order to enable correct LVDS and HDMI together. Is this possible?

post-1151625-0-75368400-1368122004_thumb.jpg

Link to comment
Share on other sites

Ive been following this thread (and reading links to other HD 4000 content) and you all are doing a great job!

 

But I have a problem....If I use EFI string injection into o.c.B.p (01660004 // Mobile 1 Port, LVDS (Display Notebook)) internal display is perfect w/ QE/CI but I dont have signal on the HDMI port. If i use EFI string injection into o.c.B.p (01660003 // Mobile 4 Ports, 1 LVDS (Display Notebook), 1 HDMI e 2 Display Port) internal display is on but it seems like the resolution is too low as I can only see half of the screen and it also has 'grainy' lines streaking through it. HDMI signal is perfect with this string, however.

 

Im trying to find a possible way to mix the two strings in order to enable correct LVDS and HDMI together. Is this possible?

Hi,

try add this string in ocbp:

 

 

Graphics Mode

1920x1080x32

 

Obviously with the values of your monitor resolution

 

Sorry for my english

Link to comment
Share on other sites

Ive been following this thread (and reading links to other HD 4000 content) and you all are doing a great job!

 

But I have a problem....If I use EFI string injection into o.c.B.p (01660004 // Mobile 1 Port, LVDS (Display Notebook)) internal display is perfect w/ QE/CI but I dont have signal on the HDMI port. If i use EFI string injection into o.c.B.p (01660003 // Mobile 4 Ports, 1 LVDS (Display Notebook), 1 HDMI e 2 Display Port) internal display is on but it seems like the resolution is too low as I can only see half of the screen and it also has 'grainy' lines streaking through it. HDMI signal is perfect with this string, however.

 

Im trying to find a possible way to mix the two strings in order to enable correct LVDS and HDMI together. Is this possible?

You have not read all the posts: http://www.insanelym...-hd4000-mobile/

....... and you are OFF TOPIC

 

Efi string does not work wonders if your PC is made to use a specific port.

 

you can play with binary kext Capri, and add HDMI where you seem more fair. I'm sorry only in Italian for the moment.

 

However, this is no place to talk about EFI string. At least try Keys of Enoch and say what happens!

 

Micky

Link to comment
Share on other sites

Also there is the possibility to use the HDAEnable.dylib to Inject AUDIO layout-id value (hexadecimal)

Note: I wrote this module more than 6 months ago (Still a work in progress) but is functionally, soon I upload a new version (more easy with decimal value).

Note 2: (May 10 2013) Updated the HDAEnabler module, now accept only decimal value instead of hexadecimal value in o.c.B.p.

 

Before update to the latest version, where I can find a list of the posible decimal values?

 

Edit: and some general feedback - I'm using this solution since my first post in this thread (Enoch 2191, FileNVRAM 1.1.3 and HDAEnabler.dylib), no issues so far, both the graphics and the sound (including HDMI audio) works like they should.

Link to comment
Share on other sites

simple, in the same way as you did in DSDT:

 

layout 12 = 0x0C, 0x00, 0x00, 0x00 (byte flipped)

 

in Enoch "was"

HDEFLayoutID

0C000000

 

But in new release is now in decimal, so simply:

 

HDEFLayoutID

12

 

or

 

HDEFLayoutID

887

 

etc, depends on how you call (or define) for the layoutXX.xml(.zlib), which works for you!

 

Micky

  • Like 1
Link to comment
Share on other sites

 Share

×
×
  • Create New...