Jump to content

Intel HD 4600 QE/CI Yosemite


wusa
 Share

482 posts in this topic

Recommended Posts

Hi guys, thanks for all your valuable input in this thread. I managed to get my HD 4600 working after a lot of testing... Gigabyte GA-Z87N-WIFI with Core i7-4790K (desktop HD 4600 0x0412) eventually using DVI connection to monitor (important, as HDMI needs other platform setting) and Clover using:

 

<key>ig-platform-id</key>

<string>0x0d220003</string>
 
However, in all tests done either via HDMI or DVI cable to my Dell U2410 monitor, when the computer sends the signal for the monitor to go to sleep, I get briefly a message on-screen "No signal, monitor will go to standby" but then, it turns on and remains with black image i.e. the monitor is turned on but still no signal is pushed.
 
I don't have this with my old hackintosh using an Nvidia PCI card.
 
Any thoughts are most welcome, I am not able to resolve this. Display is supposed to go to sleep but only does so, instantly, then something else is pushed via the HDMI/DVI cable...
Link to comment
Share on other sites

  • 2 weeks later...

]Intel HD Graphics on Yosemite

OS X supports a range of Intel HD Graphics devices, however not all the variants present in hackintosh devices are supported out of the box.

The following table shows the devices which can be supported in Yosemite and indicates which ones need additional configuration (hence the ones with OOB means they work out of the box and dont need configuration to work):
 

IntelHDGraphicsDevice IDTable.pdf using FakePCIID
 
  • Install FakePCIID according to above instructions

Additionally ensure that either a DSDT injection is done, or insert a fakeid and platform-id through clover.

Clover Example (Only contains keys which need to be changed):

 
Code:
<key>Devices</key>
<dict>
<key>FakeID</key>
<dict>
<key>IntelGFX</key>
<string>0x04128086</string>
...
<key>Graphics</key>
<dict>
<key>Inject</key>
<dict>
<key>Intel</key>
<true/>
</dict>
<key>ig-platform-id</key>
<string>0x0a260006</string>

DSDT Example:

Code:
into method label _DSM parent_adr 0x00020000 remove_entry;
into device name_adr 0x00020000 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
Return (Package()\n
{\n
"device-id", Buffer() { 0x12, 0x04, 0x00, 0x00 },\n
"AAPL,ig-platform-id", Buffer() { 0x06, 0x00, 0x26, 0x0a },\n
"hda-gfx", Buffer() { "onboard-1" },\n
"model", Buffer() { "Intel HD 4600" },\n
})\n
}\n
end;


Intel HD4400 Mobile [8086:0a16] using FakePCIID

 

  • Install FakePCIID according to above instructions
  • Apply the following if experiencing graphic corruption while using ig-platform-id 0xa260006:
    In some cases the display of OS X (particularly the menu bar) is garbled.
    It is possible a 9MB cursor framebuffer patch resolves this problem.

If you are getting graphics corruption/artifacts/glitches with ig-platform-id 0xa260006, but can't use one of the other 32MB framebuffers for some reason, try this patch:

Code:
<dict>
    <key>Name</key>
    <string>AppleIntelFramebufferAzul</string>
    <key>Comment</key>
    <string>0x0a260006 9MB cursor bytes patch</string>
    <key>Find</key>
    <string>0600260a01030303000000020000300100006000</string>
    <key>Replace</key>
    <string>0600260a01030303000000020000300100009000</string>
</dict>

Intel HD4200 Mobile [8086:0a1e] using FakePCIID
 

  • Install FakePCIID according to above instructions
  • Additionally ensure that either a DSDT injection is done, or insert a fakeid and platform-id through clover.

    Clover Example (Only contains keys which need to be changed):
    Code:
    <key>Devices</key>
    <dict>
    <key>FakeID</key>
    <dict>
    <key>IntelGFX</key>
    <string>0x0a168086</string>
    ...
    <key>Graphics</key>
    <dict>
    <key>Inject</key>
    <dict>
    <key>Intel</key>
    <true/>
    </dict>
    <key>ig-platform-id</key>
    <string>0x0a260006</string>
    DSDT Example:
    Code:
    into method label _DSM parent_adr 0x00020000 remove_entry;
    into device name_adr 0x00020000 insert
    begin
    Method (_DSM, 4, NotSerialized)\n
    {\n
    If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
    Return (Package()\n
    {\n
    "device-id", Buffer() { 0x16, 0x0a, 0x00, 0x00 },\n
    "AAPL,ig-platform-id", Buffer() { 0x06, 0x00, 0x26, 0x0a },\n
    "hda-gfx", Buffer() { "onboard-1" },\n
    "model", Buffer() { "Intel HD 4200" },\n
    })\n
    }\n
    end;

Intel HD4400 Desktop [8086:041e] using FakePCIID
 

  • Install FakePCIID according to above instructions
  • Additionally ensure that either a DSDT injection is done, or insert a fakeid and platform-id through clover.

    Clover Example (Only contains keys which need to be changed):
    Code:
    <key>Devices</key>
    <dict>
    <key>FakeID</key>
    <dict>
    <key>IntelGFX</key>
    <string>0x04128086</string>
    ...
    <key>Graphics</key>
    <dict>
    <key>Inject</key>
    <dict>
    <key>Intel</key>
    <true/>
    </dict>
    <key>ig-platform-id</key>
    <string>0x0d220003</string>
    DSDT Example:
    Code:
    into method label _DSM parent_adr 0x00020000 remove_entry;
    into device name_adr 0x00020000 insert
    begin
    Method (_DSM, 4, NotSerialized)\n
    {\n
    If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
    Return (Package()\n
    {\n
    "device-id", Buffer() { 0x12, 0x04, 0x00, 0x00 },\n
    "AAPL,ig-platform-id", Buffer() { 0x03, 0x00, 0x22, 0x0d },\n
    "hda-gfx", Buffer() { "onboard-1" },\n
    "model", Buffer() { "Intel HD 4400" },\n
    })\n
    }\n
    end;
  •  

     

    I did not make this tutorial, but believe it will help greatly.

    *Credits go to Rehabman and the-darkvoid*

Link to comment
Share on other sites

Video Full QE/CI for mobile not desktop ..

https://www.youtube.com/watch?v=ygPE4cdHFl0

so you already had this working on your machine before you made the tutorial? and could you pm me the link for those files please. Usually modifying of the actual kexts to include id's makes it more unstable but id like to give it a try anyway. and anyone else make sure to backup kexts!!

Link to comment
Share on other sites

so you already had this working on your machine before you made the tutorial? and could you pm me the link for those files please. Usually modifying of the actual kexts to include id's makes it more unstable but id like to give it a try anyway. and anyone else make sure to backup kexts!!

oke ..please inbox me or link download i tag in video 

Link to comment
Share on other sites

I encounter many of these HD4600 already ( mainly on MSI laptops and Asus N series ). One way of doing it FakeID and use 0x0a260006, or use 0x0a26000a, along with framebuffer patch to make it work. HD4600 on Asus ROG is so strange I can't find any solution to it ( the LVDS is distorted, EDID injection doesn't seem to fix it at all )

  • Like 1
Link to comment
Share on other sites

I encounter many of these HD4600 already ( mainly on MSI laptops and Asus N series ). One way of doing it FakeID and use 0x0a260006, or use 0x0a26000a, along with framebuffer patch to make it work. HD4600 on Asus ROG is so strange I can't find any solution to it ( the LVDS is distorted, EDID injection doesn't seem to fix it at all )

 

the frame buffer patch is what is the complicated part, how did you mange to do that and with what bootloader?

Link to comment
Share on other sites

I encounter many of these HD4600 already ( mainly on MSI laptops and Asus N series ). One way of doing it FakeID and use 0x0a260006, or use 0x0a26000a, along with framebuffer patch to make it work. HD4600 on Asus ROG is so strange I can't find any solution to it ( the LVDS is distorted, EDID injection doesn't seem to fix it at all )

 

i hope no framebuffer patch is required, but i have a sager/clevo laptop.. the only thing that's complicated is the graphics for me

Link to comment
Share on other sites

Faking the ID through DSDT injection or Clover configuration is not enough.

 

Multiple system components for example the OpenCL libvm compiler read the device ID from the PCI configuration space.

This is where FakePCIID comes in, it allows to intercept these PCI configuration space read actions and return different values.

 

Due to this OS X thinks its dealing with an Intel HD 4600 Desktop (which is natively supported) instead of Intel HD 4600 Mobile.

 

For 10.10.2 framebuffer 0x0a260006 usually works the best, if you are experiencing glitches increase the cursor size bytes.

If glitches are still there ensure the DVMT pre-alloc size in the memory is equal to the framebuffer size of your selected framebuffer.

 

However if you have a QHD+ display (more then 1920x1080) you would need to unlock IOKit.

Link to comment
Share on other sites

For 10.10.2 framebuffer 0x0a260006 usually works the best, 

0x0600260A is appropriate for mobile applications (LVDS, DP, DP)

0x0300220D is recommended for desktop applications (DP, DP, DP) including mobile processors in NUC, BRIX, etc.  Advantages include HD4600/3 monitor support and avoidance of the black screen with an external display on the LVDS connector.

Link to comment
Share on other sites

I encounter many of these HD4600 already ( mainly on MSI laptops and Asus N series ). One way of doing it FakeID and use 0x0a260006, or use 0x0a26000a, along with framebuffer patch to make it work. HD4600 on Asus ROG is so strange I can't find any solution to it ( the LVDS is distorted, EDID injection doesn't seem to fix it at all )

A BIG thank you for the info on 0x0a26000a! I have been struggling to get the dashboard ripples in the 3 weeks since I've had this laptop and saw many references to 0x0a260006 and 0x0a260005, the 0x0a260005 doesn't work for me and the 0x0a260006 does work but with no QE/CI effects.

I am using an HP Envy 15t k000, if that helps anyone if they read this.

 

Using Clover -

FakeID  (0x04168086)

Inject EDID (checked)

Inject Intel (checked)

ig-platform-id (0x0a26000a)

Link to comment
Share on other sites

Faking the ID through DSDT injection or Clover configuration is not enough.

 

Multiple system components for example the OpenCL libvm compiler read the device ID from the PCI configuration space.

This is where FakePCIID comes in, it allows to intercept these PCI configuration space read actions and return different values.

 

Due to this OS X thinks its dealing with an Intel HD 4600 Desktop (which is natively supported) instead of Intel HD 4600 Mobile.

 

For 10.10.2 framebuffer 0x0a260006 usually works the best, if you are experiencing glitches increase the cursor size bytes.

If glitches are still there ensure the DVMT pre-alloc size in the memory is equal to the framebuffer size of your selected framebuffer.

 

However if you have a QHD+ display (more then 1920x1080) you would need to unlock IOKit.

yes i have a a QHD display, how does one do this unlocking of IOkit? and yeah thats why i posted the tutorial on how to use fake pcid with the intel inject in dsdt or clover, but then the framebuffer patch isnt required when you have the FakePCID.

A BIG thank you for the info on 0x0a26000a! I have been struggling to get the dashboard ripples in the 3 weeks since I've had this laptop and saw many references to 0x0a260006 and 0x0a260005, the 0x0a260005 doesn't work for me and the 0x0a260006 does work but with no QE/CI effects.

I am using an HP Envy 15t k000, if that helps anyone if they read this.

 

Using Clover -

FakeID  (0x04168086)

Inject EDID (checked)

Inject Intel (checked)

ig-platform-id (0x0a26000a)

no qe/cl?? try the FakePCID kext.

Link to comment
Share on other sites

yes i have a a QHD display, how does one do this unlocking of IOkit? and yeah thats why i posted the tutorial on how to use fake pcid with the intel inject in dsdt or clover, but then the framebuffer patch isnt required when you have the FakePCID.

Search on google for "Dell XPS 9530 yosemite guide"

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

Hi everybody I post here config.plist

Intel HD 4600 No ig platform id and its work !

 

CPU  i7 4770k  -  Clover  r3185   QE/CI  works USB install and 

Postinstallation.

I 've juste teste the plist  :D  

 

Please test and report back !

Link to comment
Share on other sites

  • 2 weeks later...

I have been struggling with the installation of Intel HD 4600 for Mobile.

 

I use Chameleon Bootloader v.2.3 r.2578.

 

This is my org.chameleon.boot.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CSTUsingSystemIO</key>
	<string>Yes</string>
	<key>DSDT</key>
	<string>/Extra/dsdt.aml</string>
	<key>EnableC2State</key>
	<string>Yes</string>
	<key>EnableC3State</key>
	<string>Yes</string>
	<key>EnableC4State</key>
	<string>Yes</string>
	<key>Graphics Mode</key>
	<string>1920x1080x32</string>
	<key>IGPEnabler</key>
	<string>Yes</string>
	<key>InjectIntel-ig</key>
	<string>0x0a260006</string>
	<key>Kernel Flags</key>
	<string>kext-dev-mode=1 -xcpm ahcidisk=1 debug=8 darkwake=0 dart=0</string>
	<key>Legacy Logo</key>
	<string>Yes</string>
	<key>PciRoot</key>
	<string>0</string>
	<key>SMBIOS</key>
	<string>/Extra/smbios.plist</string>
	<key>SkipNvidiaGfx</key>
	<string>Yes</string>
	<key>SystemType</key>
	<string>2</string>
</dict>
</plist>

I would then boot using: 

 

-f -v GraphicsEnabler=Yes IntelAzulFB=12

 

These are resulting photos of the next boot:

 

http://img.hardtofind.hostyd.net/image.php?di=WAWD

 

It stops loading at this point:

 

http://img.hardtofind.hostyd.net/image.php?di=4DQ5

 

It then restarts.

 

If I omit the -f, it will boot to desktop, but no .kext is loaded and this is my about MAC:

 

http://img.hardtofind.hostyd.net/image.php?di=R0VS

 

 

So, now what?  :) 

 

Should I continue not using the flag -f and try IntelAzulFB=0-15? Or, something else?

 

NOTE: I want to use Chameleon and NOT clover.

 

Thanks guys,

 

-Jugz

Link to comment
Share on other sites

As far as I'm concerned, the Chameleon IntelAzulFB option is irrelevant/non-applicable with Yosemite. It was certainly required with previous OS X versions and could be replaced by a DSDT injection of the appropriate ig-platform-id. For instance:

            Method (_DSM, 4, NotSerialized)
            {
                Store (Package (0x06)
                {
                    "device-id",
                    Buffer (0x04)
                    {
                        0x16, 0x04, 0x00, 0x00
                    },
                    "AAPL,ig-platform-id",
                    Buffer (0x04)
                    {
                        0x06, 0x00, 0x26, 0x0a // FB #12, replaces default FB #7 0x00 0x00 0x26 0x0c
                    },
                    "hda-gfx",
                    Buffer (0x0A)
                    {
                        "onboard-1"
                    }
                }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }

In your case, boot option IntelAzulFB=12 is a simple unnecessary duplicate of boot plist entry InjectIntel-ig=0x0a260006.

 

In Yosemite, you have to patch (plist + binary) the Azul framebuffer + HD5000 kexts. You can then retain the original mobile Intel HD 4600 device id 0x0416 instead of faking Desktop Intel HD 4600 0x0412.

 

I'm personally using Chameleon on my Dell E6440 fitted with HD 4600 GPU. You can read details about the IGPU support process here.

 

You also have a cache issue, hence hanging when booting without (using -f flag) but no QE/CI when you boot with. I have the same issue when attempting to boot without cache. To rebuild your cache, use the following Terminal commands:

sudo touch /System/Library/Extensions

sudo kextcache -Boot -U /

This reply has been immensely helpful.

 

 

Thank you very much Herve!

Link to comment
Share on other sites

  • 2 months later...

Hello,

 

 

First of all sorry for my bad English, i hope you can understand my Problem.

 

I installed Yosemite 10.10.01 on my Lenovo G510 Notebook (Intel i7-4700MQ)

 

so it has the 4600 8086:0416.

 

when i enable GraphicsEnabler on Chameleon Wizard, it recognize the Intel HD 4600 3MB.

 

i tried also to inject azul FB 10-15, but nothing worked.

 

Thean i found  the Tutorial at Page 17 in this Thread from Pike R Alpha, but this also dont work.. 

 

Maybe i only have the wrong settings in Chameleon Wizard, it would be great if someone can help me.

 

Thank you.

Link to comment
Share on other sites

  • 2 weeks later...

Hello guys, first of all I want to say a big THANKS to all of you devs and hackers who are making our lives so much better every day ! Too many names come to mind Netkas, RehabMan, Toleda... And anyone actively searching for solutions to get mac running on pc ... You guys are INSANELY GREAT  :)

 

I have a new build running almost perfectly:

  • i7 4790k on GA-z97x-UD3H with latest bios F8
  • Using integrated HD 4600
  • Connected to HDMI to Asus VX239W
  • SMBios is iMac 15,1
Framebuffer looks like Azul native and QE/CI appear to be working fine, no flickering, chess game ok etc.. all good, just a very annoying of 10 sec of FUZZY analog signal before login screen...  :no:

 

It has not changed from the very beginning of my install, same with Clover, Chameleon, DSDT-free or even patched DSDT.

 

Now I'm not using any injectors just a more or less clean DSDT, and am injecting directly this:

Device (GFX0)
                {
                    Name (_ADR, 0x00020000)  // _ADR: Address
                    Method (_DSM, 4, NotSerialized)
                    {
                        If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }
                        Return (Package()
                        {
                            "AAPL,ig-platform-id", Buffer() { 0x03, 0x00, 0x22, 0x0D },
                            "hda-gfx", Buffer() { "onboard-1" },
                            "device-id", Buffer() { 0x12, 0x04, 0x00, 0x00 },
                        })
                    }
                }
 

On the boot log, I can see something interesting, it's trying to match the display or something... Please take a look:

 

31/05/15 12:01:34,205 WindowServer[135]: Found 21 modes for display 0x00000000 [21, 0]
31/05/15 12:01:34,207 WindowServer[135]: Found 1 modes for display 0x00000000 [1, 0]
31/05/15 12:01:34,209 WindowServer[135]: Found 1 modes for display 0x00000000 [1, 0]
31/05/15 12:01:34,209 WindowServer[135]: mux_initialize: Couldn't find any matches
31/05/15 12:01:34,212 WindowServer[135]: Found 21 modes for display 0x00000000 [21, 0]
31/05/15 12:01:34,219 WindowServer[135]: Found 1 modes for display 0x00000000 [1, 0]
31/05/15 12:01:34,220 WindowServer[135]: Found 1 modes for display 0x00000000 [1, 0]
31/05/15 12:01:34,283 WindowServer[135]: WSMachineUsesNewStyleMirroring: true
31/05/15 12:01:34,316 WindowServer[135]: Display 0x1a48a060: GL mask 0x1; bounds (0, 0)[1920 x 1080], 21 modes available
Main, Active, on-line, enabled, boot, Vendor 469, Model 23e1, S/N 5821, Unit 0, Rotation 0
UUID 0xed66da45394f2facad90d3e148bb16b9
31/05/15 12:01:34,316 WindowServer[135]: Display 0x003f003f: GL mask 0x8; bounds (0, 0)[4096 x 2160], 2 modes available
off-line, enabled, Vendor ffffffff, Model ffffffff, S/N ffffffff, Unit 3, Rotation 0
UUID 0xffffffffffffffffffffffffffffffff
31/05/15 12:01:34,316 WindowServer[135]: Display 0x003f003e: GL mask 0x4; bounds (0, 0)[0 x 0], 1 modes available
off-line, enabled, Vendor ffffffff, Model ffffffff, S/N ffffffff, Unit 2, Rotation 0
UUID 0xffffffffffffffffffffffffffffffff
31/05/15 12:01:34,316 WindowServer[135]: Display 0x003f003d: GL mask 0x2; bounds (0, 0)[0 x 0], 1 modes available
off-line, enabled, Vendor ffffffff, Model ffffffff, S/N ffffffff, Unit 1, Rotation 0
UUID 0xffffffffffffffffffffffffffffffff
31/05/15 12:01:34,322 WindowServer[135]: Set a breakpoint at CGSLogError to catch errors as they are logged.
31/05/15 12:01:34,322 WindowServer[135]: WSSetWindowTransform: Singular matrix
31/05/15 12:01:34,322 WindowServer[135]: WSSetWindowTransform: Singular matrix
31/05/15 12:01:34,324 WindowServer[135]: Display 0x1a48a060: GL mask 0x1; bounds (0, 0)[1920 x 1080], 21 modes available
Main, Active, on-line, enabled, boot, Vendor 469, Model 23e1, S/N 5821, Unit 0, Rotation 0
UUID 0xed66da45394f2facad90d3e148bb16b9
31/05/15 12:01:34,324 WindowServer[135]: Display 0x003f003f: GL mask 0x8; bounds (2944, 0)[1 x 1], 2 modes available
off-line, enabled, Vendor ffffffff, Model ffffffff, S/N ffffffff, Unit 3, Rotation 0
UUID 0xffffffffffffffffffffffffffffffff
31/05/15 12:01:34,324 WindowServer[135]: Display 0x003f003e: GL mask 0x4; bounds (2945, 0)[1 x 1], 1 modes available
off-line, enabled, Vendor ffffffff, Model ffffffff, S/N ffffffff, Unit 2, Rotation 0
UUID 0xffffffffffffffffffffffffffffffff
31/05/15 12:01:34,324 WindowServer[135]: Display 0x003f003d: GL mask 0x2; bounds (2946, 0)[1 x 1], 1 modes available
off-line, enabled, Vendor ffffffff, Model ffffffff, S/N ffffffff, Unit 1, Rotation 0
UUID 0xffffffffffffffffffffffffffffffff
31/05/15 12:01:34,324 WindowServer[135]: CGXPerformInitialDisplayConfiguration
31/05/15 12:01:34,324 WindowServer[135]:   Display 0x1a48a060: Unit 0; Vendor 0x469 Model 0x23e1 S/N 22561 Dimensions 20.04 x 11.26; online enabled, Bounds (0,0)[1920 x 1080], Rotation 0, Resolution 1
31/05/15 12:01:34,324 WindowServer[135]:   Display 0x003f003f: Unit 3; Vendor 0xffffffff Model 0xffffffff S/N -1 Dimensions 0.00 x 0.00; offline enabled, Bounds (2944,0)[1 x 1], Rotation 0, Resolution 1
31/05/15 12:01:34,324 WindowServer[135]:   Display 0x003f003e: Unit 2; Vendor 0xffffffff Model 0xffffffff S/N -1 Dimensions 0.00 x 0.00; offline enabled, Bounds (2945,0)[1 x 1], Rotation 0, Resolution 1
31/05/15 12:01:34,324 WindowServer[135]:   Display 0x003f003d: Unit 1; Vendor 0xffffffff Model 0xffffffff S/N -1 Dimensions 0.00 x 0.00; offline enabled, Bounds (2946,0)[1 x 1], Rotation 0, Resolution 1

Could suggest a fix for this ?

 

Attached is my patched DSDT.dsl, original DSDT.aml, and IO Registry output from IOJones... If you need anything else, don't hesitate !!!

Files.zip

post-261614-0-50915400-1433099655_thumb.jpg

Link to comment
Share on other sites

 Share

×
×
  • Create New...