ErmaC Posted April 30, 2013 Share Posted April 30, 2013 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 ALLI 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-igex: InjectIntel-ig=09006601 (a flipped 01660009)The priority is:1° InjectIntel-ig2° IntelXxxxFB3° 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> ErmaCClick here to view the article 12 Link to comment Share on other sites More sharing options...
ErmaC Posted April 30, 2013 Author Share Posted April 30, 2013 Reserved. Link to comment Share on other sites More sharing options...
Philip Petev Posted April 30, 2013 Share Posted April 30, 2013 Works fine for my desktop with values 5 and 10. With value 5: With value 10: 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 1 Link to comment Share on other sites More sharing options...
ErmaC Posted April 30, 2013 Author Share Posted April 30, 2013 Works fine for my desktop with values 5 and 10. PLS provide more info... Screen-shoot, (also removed DSDT's entries for HD4000?), IOReg, bdmesg... ErmaC Link to comment Share on other sites More sharing options...
Rampage Dev Posted April 30, 2013 Share Posted April 30, 2013 Is this in the Trunk build as well? Link to comment Share on other sites More sharing options...
ErmaC Posted April 30, 2013 Author Share Posted April 30, 2013 Is this in the Trunk build as well? no only Enoch. 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 2 Link to comment Share on other sites More sharing options...
kamillo1888 Posted April 30, 2013 Share Posted April 30, 2013 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 More sharing options...
ErmaC Posted April 30, 2013 Author Share Posted April 30, 2013 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 More sharing options...
kamillo1888 Posted April 30, 2013 Share Posted April 30, 2013 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 More sharing options...
ErmaC Posted April 30, 2013 Author Share Posted April 30, 2013 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 More sharing options...
kamillo1888 Posted April 30, 2013 Share Posted April 30, 2013 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 More sharing options...
ErmaC Posted April 30, 2013 Author Share Posted April 30, 2013 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 More sharing options...
kamillo1888 Posted May 1, 2013 Share Posted May 1, 2013 Never say never... You can always get info from Windows... I am not using windows So, HD4K-ig=3 Only HDMI working as well with QE/CI - nothing else. Link to comment Share on other sites More sharing options...
ErmaC Posted May 1, 2013 Author Share Posted May 1, 2013 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 1 Link to comment Share on other sites More sharing options...
kamillo1888 Posted May 1, 2013 Share Posted May 1, 2013 bdmesg https://www.dropbox.com/s/b1ffi29z2riik88/bdmesg ioreg https://www.dropbox.com/s/5vq51e891zkxezs/ioreg.ioreg if someone can help i will be very appreciate In HDMI system recognized my screen as Intel HD4000 with 512MB RAM. Used HD4K-ig=3 Link to comment Share on other sites More sharing options...
Philip Petev Posted May 1, 2013 Share Posted May 1, 2013 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 More sharing options...
Micky1979 Posted May 1, 2013 Share Posted May 1, 2013 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 1 Link to comment Share on other sites More sharing options...
Micky1979 Posted May 1, 2013 Share Posted May 1, 2013 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 dependenciesKext com.apple.driver.AppleIntelHD4000Graphics failed to load (0xdc00800e). Failed to load kext com.apple.driver.AppleIntelHD4000Graphics (error 0xdc00800e). 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 2 Link to comment Share on other sites More sharing options...
kamillo1888 Posted May 1, 2013 Share Posted May 1, 2013 Maybe you need to add your MEI ID into AppleIntelSNBGraphicsFB.kext??Open AppleIntelSNBGraphicsFB.kext/Contents/info.plisttry 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!EDITAccording to your ioreg, this was the problem!Do as I told you:replace 0x1C3A8086 with 0x1E3A8086 in AppleIntelSNBGraphicsFB.kext/Contents/Resource/info.plistrepair 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 More sharing options...
kamillo1888 Posted May 1, 2013 Share Posted May 1, 2013 https://www.dropbox.com/s/brdk49wcqjya436/ioreg1.ioreg And this is my ioreg after Capri modification. Link to comment Share on other sites More sharing options...
docquinton Posted May 9, 2013 Share Posted May 9, 2013 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? Link to comment Share on other sites More sharing options...
carbo178 Posted May 9, 2013 Share Posted May 9, 2013 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 More sharing options...
Micky1979 Posted May 9, 2013 Share Posted May 9, 2013 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 More sharing options...
Philip Petev Posted May 13, 2013 Share Posted May 13, 2013 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 More sharing options...
Micky1979 Posted May 13, 2013 Share Posted May 13, 2013 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 1 Link to comment Share on other sites More sharing options...
Recommended Posts