- Joined
- Apr 8, 2015
- Messages
- 59
- Motherboard
- OS X 10.10.3
- CPU
- i7-4790K
- Graphics
- GTX970
- Mac
- Classic Mac
- Mobile Phone
Time just seems to fly. It's April now.
Finally I have some time to work on this issue, and I have found a solution to it.
- Brief Background and Issue Description
So after you have applied my fix for the division-by-zero kernel panic (*1), your laptop should have graphics acceleration now.
As a proof, I have seen several Github repos set up for XPS 15 9570, and the repo owners claim that UHD 630 is working properly.
The next thing you might want to do could be testing whether Type-C and HDMI outputs work or not.
While the (DisplayPort/HDMI/others over) Type-C port could easily work when you disable the
The kernel panic happens because of a non-existent FB index and therefore could be easily fixed by specifying the correct index (03 instead of 02) for the HDMI port (*3), but now the system just hangs (and the laptop screen "turns off" (*4)) when the HDMI cable is plugged in.
Side Notes:
1. The previous DPCD link rate fix has nothing to do with this HDMI output issue.
2. I have seen that some people choose to modify the board-id directly without changing the
3. The details of this modification is shown below.
4. The internal screen goes black with backlight on. i.e. The panel power is still on.
- Before you start
1. This is a fix intended for Coffee Lake-based laptop users.
I don't have a CFL desktop build, so I don't know whether the same issue happens.
2. If the HDMI output is directly connected to your discrete graphics card, then this fix is NOT applicable for your laptop.
You could verify this on Windows 10.
I remember I have seen a couple of laptops like ThinkPad X1 Carbon route HDMI to dGPU instead of UHD 630.
>> 2019.06.27
Public testing finished. The pull request has been merged into the main repo. Thank you for participating the test.
WhateverGreen 1.3.0 now contains this fix. Please carefully read the manual before you start.
You probably need to compile the latest WEG by yourself before it is officially released.
Also remember you need to patch the framebuffer data properly, refer to the guide in stage 1 below.
Cheers and wish you good luck!
- FireWolf (Austere.J)
Finally I have some time to work on this issue, and I have found a solution to it.
- Brief Background and Issue Description
So after you have applied my fix for the division-by-zero kernel panic (*1), your laptop should have graphics acceleration now.
As a proof, I have seen several Github repos set up for XPS 15 9570, and the repo owners claim that UHD 630 is working properly.
The next thing you might want to do could be testing whether Type-C and HDMI outputs work or not.
While the (DisplayPort/HDMI/others over) Type-C port could easily work when you disable the
board-id
check via WhateverGreen's agdpmod=vit9696
boot argument (*2), you might then notice that a kernel panic happens right after you plug the HDMI cable.The kernel panic happens because of a non-existent FB index and therefore could be easily fixed by specifying the correct index (03 instead of 02) for the HDMI port (*3), but now the system just hangs (and the laptop screen "turns off" (*4)) when the HDMI cable is plugged in.
Side Notes:
1. The previous DPCD link rate fix has nothing to do with this HDMI output issue.
2. I have seen that some people choose to modify the board-id directly without changing the
ProductName
property accordingly (i.e. MacBookPro15,1 combined with another board-id) in Clover's SMBIOS settings, but I highly discourage you to do that.3. The details of this modification is shown below.
4. The internal screen goes black with backlight on. i.e. The panel power is still on.
- Before you start
1. This is a fix intended for Coffee Lake-based laptop users.
I don't have a CFL desktop build, so I don't know whether the same issue happens.
2. If the HDMI output is directly connected to your discrete graphics card, then this fix is NOT applicable for your laptop.
You could verify this on Windows 10.
I remember I have seen a couple of laptops like ThinkPad X1 Carbon route HDMI to dGPU instead of UHD 630.
>> 2019.06.27
Public testing finished. The pull request has been merged into the main repo. Thank you for participating the test.
WhateverGreen 1.3.0 now contains this fix. Please carefully read the manual before you start.
You probably need to compile the latest WEG by yourself before it is officially released.
Also remember you need to patch the framebuffer data properly, refer to the guide in stage 1 below.
- Guide to fix the problem
0. Remove any existing Clover KextsToPatch entries for fixing the DPCD link rate issue.
1. Properly patch the framebuffer data via WhateverGreen. I am using 3E9B0000 for Dell XPS 15 9570.
Connector 0 (framebuffer-con0-alldata): Leave as is. This is for the builtin display.
Connector 1 (framebuffer-con1-alldata): 01050900 00040000 87010000 (i.e. Bus ID = 0x05; Pipe = 0x09) This is for the Type C port.
Connector 2 (framebuffer-con2-alldata): 03040A00 00080000 87010000 (i.e. Bus ID = 0x04; Pipe = 0x0A) This is for the HDMI port.
1. Download and install my compiled WhateverGreen. (The code is based on the latest 1.2.8.)
2. Rebuild the kext cache via
3. Add the
4. Reboot your computer.
5. When you could see your desktop, plug in the HDMI cable to see whether it works.
Side Notes:
I have run some tests on my laptop (XPS 15 9570) which has a HDMI 2.0 port, and I got the following interesting results.
(I tried with a HDMI 2.0 cable; haven't tried the HDMI 1.4 one yet.)
1. The external display is lit up and works as expected if I plug the cable into the HDMI 1.4 port.
i.e. Laptop [HDMI 2.0] <------ HDMI 2.0 Cable ------> [HDMI 1.4] External Monitor
In this case, HDMI audio output works OOB after
2. The external display could be detected by macOS but has no signal if I plug the cable into the HDMI 2.0 port AFTER the system boots.
i.e. Laptop [HDMI 2.0] <------ HDMI 2.0 Cable ------> [HDMI 2.0] External Monitor AFTER I could see my wallpaper.
3. The external display could be detected by macOS and is lit up if I plug the cable into the HDMI 2.0 port BEFORE the system boots.
i.e. Laptop [HDMI 2.0] <------ HDMI 2.0 Cable ------> [HDMI 2.0] External Monitor BEFORE I press the power button.
In this case, HDMI audio output is completely broken. The codec device could not be detected by the OS, and we couldn't see it in IOREG.
However, we could see that the HDMI adapter (I recall that IGPU does not provide native HDMI 2.0 output, and the OEM has to add an adapter to convert DP 1.2 to HDMI 2.0.) could be properly recognized in System Report >> Graphics Display.
(See the blue rectangle in the sample screen shot below.)
0. Remove any existing Clover KextsToPatch entries for fixing the DPCD link rate issue.
1. Properly patch the framebuffer data via WhateverGreen. I am using 3E9B0000 for Dell XPS 15 9570.
Connector 0 (framebuffer-con0-alldata): Leave as is. This is for the builtin display.
Connector 1 (framebuffer-con1-alldata): 01050900 00040000 87010000 (i.e. Bus ID = 0x05; Pipe = 0x09) This is for the Type C port.
Connector 2 (framebuffer-con2-alldata): 03040A00 00080000 87010000 (i.e. Bus ID = 0x04; Pipe = 0x0A) This is for the HDMI port.
1. Download and install my compiled WhateverGreen. (The code is based on the latest 1.2.8.)
2. Rebuild the kext cache via
sudo kextcache -i /
.3. Add the
-igfxcflhdmi
boot argument.4. Reboot your computer.
5. When you could see your desktop, plug in the HDMI cable to see whether it works.
Side Notes:
I have run some tests on my laptop (XPS 15 9570) which has a HDMI 2.0 port, and I got the following interesting results.
(I tried with a HDMI 2.0 cable; haven't tried the HDMI 1.4 one yet.)
1. The external display is lit up and works as expected if I plug the cable into the HDMI 1.4 port.
i.e. Laptop [HDMI 2.0] <------ HDMI 2.0 Cable ------> [HDMI 1.4] External Monitor
In this case, HDMI audio output works OOB after
hda-gfx = onboard-1
is properly injected to Device (HDEF) and Device (IGPU).2. The external display could be detected by macOS but has no signal if I plug the cable into the HDMI 2.0 port AFTER the system boots.
i.e. Laptop [HDMI 2.0] <------ HDMI 2.0 Cable ------> [HDMI 2.0] External Monitor AFTER I could see my wallpaper.
3. The external display could be detected by macOS and is lit up if I plug the cable into the HDMI 2.0 port BEFORE the system boots.
i.e. Laptop [HDMI 2.0] <------ HDMI 2.0 Cable ------> [HDMI 2.0] External Monitor BEFORE I press the power button.
In this case, HDMI audio output is completely broken. The codec device could not be detected by the OS, and we couldn't see it in IOREG.
However, we could see that the HDMI adapter (I recall that IGPU does not provide native HDMI 2.0 output, and the OEM has to add an adapter to convert DP 1.2 to HDMI 2.0.) could be properly recognized in System Report >> Graphics Display.
(See the blue rectangle in the sample screen shot below.)
The fix (V2) now supports HDMI 2.0 hotplug after the system boots.
Please note that this is still a beta version, as I have not implemented any customizable properties in Clover's config.plist.
The fix assumes that your HDMI 2.0 port will be assigned to FB2 (i.e. Connector 2 corresponds to HDMI 2.0; framebuffer-con2-alldata as above), which is the case on XPS 15 9570.
Please make sure that you have properly patched the connector data. (See 2019.04.10 Public Testing Stage 1 above)
Instructions:
- Download and install the v2 WEG, and then rebuild your cache.
- Add the
Please focus on testing the following things:
- Test HDMI 2.0 (with HDMI 2.0 cable and HDMI 2.0 4K/5K display) hotplug AFTER the system boots.
- Remove the HDMI 2.0 cable and then put the system to sleep.
Wait for a while and then wake up. Plug in the HDMI 2.0 cable to see whether HDMI 2.0 output still works.
Wait for a while and then wake up. Check whether HDMI 2.0 display is lit up after the system wakes up.
(Just to make sure that the new fix does not cause regression.)
The fix is currently at a public testing stage, so if you are experiencing the same issue, you are welcome to try my fix and I would appreciate if you could kindly provide some feedback.
As always, once the fix is confirmed to work for the majority, I will submit a PR to push the fix to the upstream repo.
Please note that this is still a beta version, as I have not implemented any customizable properties in Clover's config.plist.
The fix assumes that your HDMI 2.0 port will be assigned to FB2 (i.e. Connector 2 corresponds to HDMI 2.0; framebuffer-con2-alldata as above), which is the case on XPS 15 9570.
Please make sure that you have properly patched the connector data. (See 2019.04.10 Public Testing Stage 1 above)
Instructions:
- Download and install the v2 WEG, and then rebuild your cache.
- Add the
-igfxcflhdmi -igfxcflhdmi2
boot argument.Please focus on testing the following things:
- Test HDMI 2.0 (with HDMI 2.0 cable and HDMI 2.0 4K/5K display) hotplug AFTER the system boots.
- Test whether you could get 4K @ 60Hz on your external display.
- Test whether HDMI audio is working in this case. Specifically, check the Device HDEF in your IOReg to see whether macOS could properly detect both Analog and Intel HDMI codecs. (i.e. Two
IOHDACodecDevice
under HDEF)- Remove the HDMI 2.0 cable and then put the system to sleep.
Wait for a while and then wake up. Plug in the HDMI 2.0 cable to see whether HDMI 2.0 output still works.
- Test whether HDMI audio still works after the system wakes up.
- Put the system to sleep with HDMI 2.0 cable attached. i.e. Do not remove the cable when the system is sleeping.Wait for a while and then wake up. Check whether HDMI 2.0 display is lit up after the system wakes up.
- Test whether HDMI audio still works after the system wakes up.
- Test HDMI 1.4 (either with HDMI 1.4 cable or HDMI 1.4 display) hotplug AFTER the system boots.(Just to make sure that the new fix does not cause regression.)
The fix is currently at a public testing stage, so if you are experiencing the same issue, you are welcome to try my fix and I would appreciate if you could kindly provide some feedback.
As always, once the fix is confirmed to work for the majority, I will submit a PR to push the fix to the upstream repo.
- FireWolf (Austere.J)
Last edited: