Contribute
Register

[FIX] Coffee Lake Intel UHD Graphics 630 on macOS Mojave: HDMI 1.4/2.0 Output Issue

Status
Not open for further replies.
Joined
Apr 8, 2015
Messages
59
Motherboard
OS X 10.10.3
CPU
i7-4790K
Graphics
GTX970
Mac
  1. 0
Classic Mac
  1. 0
Mobile Phone
  1. 0
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 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 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.)

398595


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 -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.
Cheers and wish you good luck!

- FireWolf (Austere.J)
 
Last edited:
Well done!

Thanks to @Austere.J and @LuvLetterU and all who make this Clover better!


Updated:
config-1080p.plist is work on xps xps 9570 1080P.
config-4k.plist is work on xps xps 9570 4k.


Use config_install.plist into system and put xps9570-Touchpad kexts to L/E or S/L/E.
Don't forget to Rebuild the kext cache.
Code:
sudo cp -R VoodooI2C.kext /Library/Extensions
sudo cp -R VoodooI2CHID.kext /Library/Extensions
sudo cp -R VoodooPS2Controller.kext /Library/Extensions
sudo kextcache -i /
Thus, you can remove -v and reboot system.
 

Attachments

  • xps9570-Touchpad.zip
    529 KB · Views: 269
  • clover-for-1080-4k-20190414.zip
    10.7 MB · Views: 594
Last edited:
Hi!! I want to try what you say, but I have some questions about WEG patching.

I have to patch your entries in my CLOVER config.plist, in Devices -> properties -> pciroot(0x0)/Pci(0x2, 0x0) right?

398923


I dont know how to patch the framebuffer!! I've ridden some guides but Im not sure.
 
Hey,FireWolf!Thanks for your great job! It's really helpful!My XPS 9570 is closed to flawlessly now.Here is my hardware:

* Machine :Dell XPS 9570
* CPU: Intel i7-8750H
* GPU: UHD630 + 1050Ti
* RAM: 16GB RAM
* Display: 4K Sharp
* SSD: PC401 NVMe SK hynix 512GB SSD
* Audio: Realtek ALC298
* Touchscreen
* WLAN + Bluetooth : DW1830

This solution has been merged to my repository for more public testing.I will send more feedback if I could.

Thanks for your feedback. :clap:

It seems that you are using a HDMI 1.4 cable, and your HDMI audio is working properly.

Are you able to test with a HDMI 2.0 cable? i.e. Connect to an external monitor with a HDMI 2.0 port.
 
config0.plist is work on xps xps i5 I use before without your method.
config.plist isn't work with your method, this config is removed any existing Clover KextsToPatch entries for fixing the DPCD link rate issue.

Not sure what you mean by "not working". Are you referring to HDMI output or the basic graphics acceleration.

I have observed at least three issues in your config.plist.

- You didn't specify the framebuffer id in the device property.

- You didn't enable the framebuffer patch.

- You didn't apply the latest fix for the DPCD buffer issue.

You might want to review the guide for patching framebuffer.
 
Thanks for your feedback. :clap:

It seems that you are using a HDMI 1.4 cable, and your HDMI audio is working properly.

Are you able to test with a HDMI 2.0 cable? i.e. Connect to an external monitor with a HDMI 2.0 port.
I just check my HDMI cable type from my order.The introduction claims it's HDMI 2.0 port.So I think it's HDMI 2.0 cable.
But how can I confirm my HDMI cable is 2.0 or not?
 
Not sure what you mean by "not working". Are you referring to HDMI output or the basic graphics acceleration.

I have observed at least three issues in your config.plist.

- You didn't specify the framebuffer id in the device property.

- You didn't enable the framebuffer patch.

- You didn't apply the latest fix for the DPCD buffer issue.

You might want to review the guide for patching framebuffer.

YES,
I am rookie and just take something I can offer for this problems.


@LuvLetterU had made it.
https://github.com/bavariancake/XPS9570-macOS/issues/9#issuecomment-482918131
 
Just wanted to chime in with some gratitude. Dell xps 9570 i9 1080p - Additional display working with this methodology via both straight up hdmi and via usbc to hdmi cable. Now if I can figure out if a SSDT file to enable thunderbolt hotplug is possible with this hardware, I'll have everything I need working outside of the impossible pipe dream of someone making something for optimus to take advantage of the nvidia GPU. In any case- super awesome community. Cheers!
 
Aha, one unfortunate caveat. The aforementioned was connecting to an hdmi display. I did also try connecting via an oem tb3 to tb2 adapter to an apple cinema display with mini display port to no avail. Will test more tomorrow and let you know if I'm able to get it to connect.
 
Update:
Thanks,Austere.J
I have tested this solution for a few days.
My 4k display is LG 27UK650
I use the connection way as below:
Laptop [HDMI 2.0] <------ HDMI 2.0 Cable ------> [HDMI 2.0] display
At the beginning I can only got 4k@30Hz display via HDMI2.0 <-->HDMI2.0.But I checked the display's manual and it's supported 4K@60Hz only if HDMI ULTRA HD Deep Colour is enabled.I enabled this setting , and I plugged the cable into the HDMI 2.0 port BEFORE the system boots.Display was lit up and got [email protected] also supports hot-plugin and display will be lit up fine.It seems to work normally.But it turns into blackscreen and has no signal again when wakes up from sleeping.The HDMI adapter you mentioned in content seems to be lost.

How can I keep the HDMI adapter working all the time ? It will be very appreciated if you could provide me some suggestions.
 

Attachments

  • plug the cable before booting.png
    plug the cable before booting.png
    1.4 MB · Views: 618
  • sleep and wake .png
    sleep and wake .png
    1.4 MB · Views: 649
Status
Not open for further replies.
Back
Top