Contribute
Register

Unified AppleIntelFramebufferCapri for Ivy ProBooks

Status
Not open for further replies.
Joined
Nov 24, 2012
Messages
629
Motherboard
HP Probook 6470b
CPU
Intel Core i5-3320M
Graphics
Intel HD 4000, 1600x900
Mac
  1. 0
Classic Mac
  1. 0
Mobile Phone
  1. 0
In this thread I wanted to collect all the modifications that people did to the AppleIntelFramebufferCapri and the improvements that the mods brought, with the intend to create one AppleIntelFramebufferCapri.kext to meet all needs.

This could be achieved:
  • by understanding what patches every model needs
  • by grouping all the models that need the same patch and assign them a AAPL,ig-platform-id
  • modifying the binary of the matched AAPL,ig-platform-id to suit the needs of the first point
  • having more options (with matching description) to select from MaciASL (AAPL,ig-platform-id)

For the high-res Probook 6470b we use:
Code:
AAPL,ig-platform-id: 01660008
[B]0@ 05 03 00 00 02 00 00 00 30 02 00 00 [/B]//moved from 01660004
1@ 03 04 00 00 00 04 00 00 07 01 00 00 // moved from 2@
2@ 04 06 00 00 00 04 00 00 07 04 00 00 // changed to work with the dock

As the result of the mod we have:
  • a working DisplayPort, dual-display
  • a working DisplayPort on the external dock, giving us the possibility to use 2 external displays (with internal disabled).

Script for patching:
Code:
sudo perl -pi -e 's|\x08\x00\x66\x01\x01\x03\x03\x03\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x20\x10\x07\x00\x00\x10\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xF0\xD9\x05\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x30\x00\x00\x00\x02\x05\x00\x00\x00\x04\x00\x00\x07\x01\x00\x00\x03\x04\x00\x00\x00\x04\x00\x00\x07\x01\x00\x00|\x08\x00\x66\x01\x01\x03\x03\x03\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x20\x10\x07\x00\x00\x10\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xF0\xD9\x05\x00\x00\x00\x00\x00\x05\x03\x00\x00\x02\x00\x00\x00\x30\x02\x00\x00\x03\x04\x00\x00\x00\x04\x00\x00\x07\x01\x00\x00\x04\x06\x00\x00\x00\x04\x00\x00\x07\x04\x00\x00|' ~/Desktop/AppleIntelFramebufferCapri.kext/Contents/MacOS/AppleIntelFramebufferCapri



For the low-res 4x40s they use:
Code:
@0, 05 03 00 00 02 00 00 00 30 00 00 00 // (LVDS)
@1, 02 05 00 00 00 04 00 00 07 04 00 00
@2, 03 04 00 00 00 04 00 00 81 00 00 00
@3, 04 06 00 00 00 [B]08[/B] 00 00 81 00 00 00 // enables HDMI audio

As the result of the mod they have:
  • a working audio through HDMI

Script for patching:
Code:
[COLOR=#000000]sudo perl -pi -e 's|\x04\x06\x00\x00\x00\x04\x00\x00\x81|\x04\x06\x00\x00\x00\x08\x00\x00\x81|' ~/Desktop/AppleIntelFramebufferCapri.kext/Contents/MacOS/AppleIntelFramebufferCapri[/COLOR]





For the high-res Probook 4x40s we use:
Code:
AAPL,ig-platform-id: 01660009 [BETA, might me merged with HD 6x70b] 
[B]0@ 05 03 00 00 02 00 00 00 30 02 00 00 [/B]//moved from 01660004
1@ 03 04 00 00 00 04 00 00 07 01 00 00 // moved from 2@
2@ 04 06 00 00 00 [B]08[/B] 00 00 [B]06 00[/B] 00 00 // change for HDMI audio

As the result of the mod they have:
  • a working audio through HDMI

Script for patching:
Code:
sudo perl -pi -e 's|\x09\x00\x66\x01\x01\x03\x03\x03\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x20\x10\x07\x00\x00\x10\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xF0\xD9\x05\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x30\x00\x00\x00\x02\x05\x00\x00\x00\x04\x00\x00\x07\x01\x00\x00\x03\x04\x00\x00\x00\x04\x00\x00\x07\x01\x00\x00|\x09\x00\x66\x01\x01\x03\x03\x03\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x20\x10\x07\x00\x00\x10\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xF0\xD9\x05\x00\x00\x00\x00\x00\x05\x03\x00\x00\x02\x00\x00\x00\x30\x02\x00\x00\x03\x04\x00\x00\x00\x04\x00\x00\x07\x01\x00\x00\x04\x06\x00\x00\x00\x08\x00\x00\x06\x00\x00\x00|'  ~/Desktop/AppleIntelFramebufferCapri.kext/Contents/MacOS/AppleIntelFramebufferCapri



A little bonus discovery:
It seems that with a simple patch we can change the allocated VRAM:
53615d1366190331-unified-appleintelframebuffercapri-ivy-probooks-hex_guide.png

[BETA]Script to change the memory allocation regardless of the AAPL,ig-platform-id you are using (it changes them all):
Code:
sudo perl -pi -e 's|\x00.{1}\x10\x07\x00\x00\x10\x07|\x00\x[COLOR=#ff0000][B]??[/B][/COLOR]\x10\x07\x00\x00\x10\x07|g' ~/Desktop/AppleIntelFramebufferCapri.kext/Contents/MacOS/AppleIntelFramebufferCapri
Change the red ?? with the red number bellow to set the desired amount of VRAM:
10 = 256MB of RAM
18
= 384MB of RAM
20 = 512MB of RAM
30 = 768MB of RAM
40 = 1024MB of RAM
80 = 2048MB of RAM

Copy your current AppleIntelFramebufferCapri to desktop, for faster experimenting:
Code:
sudo cp -r /System/Library/Extensions/AppleIntelFramebufferCapri.kext ~/Desktop/




Specially needed are the testers with low resolution 6x70b and high resolution 4x40s displays and HDMI/DisplayPort external monitors/TVs.

When all is done, the "unified" AppleIntelFramebufferCapri could be used in the PBI, thoughts?
 
In this thread I wanted to collect all the modifications that people did to the AppleIntelFramebufferCapri and the improvements that the mods brought, with the intend to create one AppleIntelFramebufferCapri.kext to meet all needs.

This could be achieved:
  • by understanding what patches every model needs
  • by grouping all the models that need the same patch and assign them a AAPL,ig-platform-id
  • modifying the binary of the matched AAPL,ig-platform-id to suit the needs of the first point
  • having more options (with matching description) to select from MaciASL (AAPL,ig-platform-id)

We with the 1600x900 Probook 6470b use:
Code:
AAPL,ig-platform-id: 01660008
0@ 05 03 00 00 02 00 00 00 30 02 00 00
1@ 03 04 00 00 00 04 00 00 07 01 00 00 
2@ 04 06 00 00 00 04 00 00 07 04 00 00
@shpokas01 please correct me if i did a mistake, i was "reverse engineering" what you did, which is a bit tedious and can easily lead to mistakes.

As the result of the mod we have:
  • a working DisplayPort, dual-display
  • a working DisplayPort on the external dock, giving us the possibility to use 2 external displays (with internal disabled).

Specially needed are the testers with low resolution 6x70b and high resolution 4x40s displays and HDMI/DisplayPort external monitors/TVs.

When all is done, the "unified" AppleIntelFramebufferCapri could be used in the PBI, thoughts?

And we could accommodate such options in the ProBook Installer DSDT patcher section...

I'll be watching to see what y'all come up with...
 
Who done the AppleIntelFramebufferCapri in the PBI and what exact mods are applied and for what purpose?

PS: can someone upload a vanilla AppleIntelFramebufferCapri from 10.8.3, thx.
 
Who done the AppleIntelFramebufferCapri in the PBI and what exact mods are applied and for what purpose?

PS: can someone upload a vanilla AppleIntelFramebufferCapri from 10.8.3, thx.

Here is your vanilla 10.8.3 AppleIntelFramebufferCapri.kext (this is from my 4530s, which of course should have unpatched capri):
 

Attachments

  • AppleIntelFramebufferCapri.kext.zip
    194.5 KB · Views: 236

Ok, so all this does is change the @3 port to hdmi as connector type.
Original AAPL,ig-platform-id: 01660003
Code:
@0, 05 03 00 00 02 00 00 00 30 00 00 00 // (LVDS)
@1, 02 05 00 00 00 04 00 00 07 04 00 00
@2, 03 04 00 00 00 04 00 00 81 00 00 00
@3, 04 06 00 00 00 04 00 00 81 00 00 00
Change connector type to HDMI on @3:
Code:
@0, 05 03 00 00 02 00 00 00 30 00 00 00 // (LVDS)
@1, 02 05 00 00 00 04 00 00 07 04 00 00
@2, 03 04 00 00 00 04 00 00 81 00 00 00
@3, 04 06 00 00 00 [B]08[/B] 00 00 81 00 00 00 // enables HDMI audio

So to make a kext compatible with the 4x40s low-res and the 6x70b high-res all i have to do is change a number, or run the script on the kext we use, that's really simple.

So now we only need some volunteers with a low-res 6x70b and high-res 4x40s... Put your hand up.
 
We with the 1600x900 Probook 6470b use:
Code:
AAPL,ig-platform-id: 01660008
0@ 05 03 00 00 02 00 00 00 30 02 00 00
1@ 03 04 00 00 00 04 00 00 07 01 00 00 
2@ 04 06 00 00 00 04 00 00 07 04 00 00
@shpokas01 please correct me if i did a mistake, i was "reverse engineering" what you did, which is a bit tedious and can easily lead to mistakes.

yes, this is correct.
as you see, 0@ is for LVDS, 1@ for DP (in the dock) and 2@ for HDMI (DP in the ProBook body).
however, I am not saying that this the only or even the best hack.
this was just a blind poking in the darkness.

I, for instance, have no idea what's the difference between
03 04 00 00 00 04 00 00 07 00 00 00
and
03 04 00 00 00 04 00 00 07 01 00 00
and
03 04 00 00 00 04 00 00 07 04 00 00

I even asked here, but no one bothered to answer.
 
yes, this is correct.
as you see, 0@ is for LVDS, 1@ for DP (in the dock) and 2@ for HDMI (DP in the ProBook body).
however, I am not saying that this the only or even the best hack.
this was just a blind poking in the darkness.

I, for instance, have no idea what's the difference between
03 04 00 00 00 04 00 00 07 00 00 00
and
03 04 00 00 00 04 00 00 07 01 00 00
and
03 04 00 00 00 04 00 00 07 04 00 00

I even asked here, but no one bothered to answer.

Do you have any good explanation why we use HDMI?
I will see if i can find something more about what those bits mean.

I use your hack because i saw no difference with mine on my PC, in other words it works and you are the only one with the dock so all i can do is take your word, if it works for you it has to be good enough.
 
yes, this is correct.
as you see, 0@ is for LVDS, 1@ for DP (in the dock) and 2@ for HDMI (DP in the ProBook body).
I have done a bit of reading and hex digging and what it seems to define the connection type is the red part:
2@ 04 06 00 00 00 04 00 00 07 04 00 00
where:
  • 00 04 = DP
  • 00 08 = HDMI
  • 02 00 = my guess would be, some kind of internal connection (LVDS).
  • 04 is just a port number not a connector definition
  • 06, i am wondering what that does exactly

Another question i have with the current LVDS definition we use:
0@ 05 03 00 00 02 00 00 00 30 02 00 00
Could that be somehow related to dual-link?

PS: those are mostly speculation, not much is certain.
 
Status
Not open for further replies.
Back
Top