Contribute
Register

[GUIDE] General Framebuffer Patching Guide (HDMI Black Screen Problem)

  • If you boot your laptop with the HDMI cable connected to an external monitor, you said that the built-in screen goes black. But do you see normal video output on the external monitor?
    • If so, is there an option in System Preferences —> Displays to mirror the display or enable multiple monitors?
    • Windows laptops usually use Function key F8 to enable single monitor mode, mirrored monitor mode, and multiple monitor mode. Have you tried pressing the appropriate Function key?
  • It would also be useful to download and run IORegistryExplorer and select File —> Save As...to save the IOReg data to a file. Then upload the file. It will provide good insight into what each graphics driver is doing.
    • Because you have an Nvidia GTX 1050, I’m assuming you’re running High Sierra 10.13.6 with Nvidia Web Driver?

  • Correct, when I boot with the HDMI cable connected to an external monitor the built-in display is black (backlight only but no video output) and the external monitor shows output.
    • System Preferences shows both displays, I can also drag windows to the black screen so MacOS doesn't realise the screen is not showing output.
    • Pressing FN + F8 will make the display go from back-light only to completely black
  • Should I upload my IOregistery with both displays connected and working? (Plug in the cable after booted to MacOs).
    • I'm running Mojave with dGPU (GTX1050) disabled in DSDT/SSDT. I did install High Sierra with Nvidia drivers to test but this made no different, I still had the same problem.
For now I put hardware on/off switch on the HDMI cable between the screen and the switch. I boot my laptop, login and then flip the switch to connect the external screen. With this workaround both screens work perfectly...

I'll upload my IOreg this evening.
 
  • Correct, when I boot with the HDMI cable connected to an external monitor the built-in display is black (backlight only but no video output) and the external monitor shows output.
    • System Preferences shows both displays, I can also drag windows to the black screen so MacOS doesn't realise the screen is not showing output.
    • Pressing FN + F8 will make the display go from back-light only to completely black
  • Should I upload my IOregistery with both displays connected and working? (Plug in the cable after booted to MacOs).
    • I'm running Mojave with dGPU (GTX1050) disabled in DSDT/SSDT. I did install High Sierra with Nvidia drivers to test but this made no different, I still had the same problem.
For now I put hardware on/off switch on the HDMI cable between the screen and the switch. I boot my laptop, login and then flip the switch to connect the external screen. With this workaround both screens work perfectly...

I'll upload my IOreg this evening.
So both the built-in LCD and external display work properly if the HDMI cable is plugged in after system has booted up? In other words, hot plugging the HDMI cable enables both internal and external monitors? Hence, you are using an HDMI switch to perform this hot-plug operation without having to physically plug and unplug the cable?

The IOReg file should be provided under both conditions:
  • With only external monitor working.
  • With both monitors working.
 
So both the built-in LCD and external display work properly if the HDMI cable is plugged in after system has booted up? In other words, hot plugging the HDMI cable enables both internal and external monitors? Hence, you are using an HDMI switch to perform this hot-plug operation without having to physically plug and unplug the cable?

Yes that is correct! My explanation might've been a bit confusing.
 
I just successfully applied the settings for the ASUS MAXIMUS VIII HERO and the Intel® Core™ i7-6700K

Here they are:

409890


Port 0x05 (Index 1) is DisplayPort
Port 0x06 (Index 2) is HDMI

Actually the third connector doesn't exist, I tried to disable it with setting the Index to -1, the bus to 0x00, the pipe to 0, the type to dummy and the flags to 0x00000020, but it won't accept the settings. After reboot they're gone. But it works, so I don't care.

EDIT: I take it back. Doesn't work anymore, lmao..... One moment.

EDIT 2: It does work, kinda... The monitor on the motherboard does only work if I connect it after boot. Any ideas?

EDIT 3: Just set the primary display to the PEG in BIOS. Now it looks like it's working..

With primary display set to PEG the monitor connected to the motherboard does work, but I have graphical glitches on every animation.
With primary display set to IGPU the monitor doesn't get any signal :( (but it is detected in system information)
 
Last edited:
Just wanted to add my results, in case it can help someone configure their RIG.
My new experimental build is an
i9 9900K UHD630 that I'm building now.
I struggled a little bit because all I have right now is the iGPU using the connectors from the MOBO, on top of an
ASUS MAXIMUS XI HERO (WIFI)

HDMI did not work when accelerated, only DP, and man did I struggle because all I had when installing was the HDMI, as soon as I patched it, it stopped working and the churn started.

Thanks to this thread I was able to figure out what was missing

BUSid = 0x05 was DP on index 1 (original)
BUSid = 0x02 was HDMI on index 2 (was missing)
BUSid = 0x00 was DP on index 3. with BUSID 0x04 (I disabled it)

attached a screenshot of how it is working now.

Thanks to the creators of the thread and the moderators.
 

Attachments

  • Screen Shot 2019-06-05 at 10.19.59 PM.png
    Screen Shot 2019-06-05 at 10.19.59 PM.png
    122.9 KB · Views: 80
  • Screen Shot 2019-06-05 at 10.39.27 PM.png
    Screen Shot 2019-06-05 at 10.39.27 PM.png
    103.3 KB · Views: 82
Hi all, this is an update to my Gigabyte H370 Aorus Gaming 3 WIFI configuration that I posted a few weeks ago. After some further testing, I had a small issue where when macOS Mojave (14.4 and 14.5) loaded, it would be sluggish for about 10-15 seconds after loading the desktop. I noticed this only happened after setting up the connectors patch, so I started doing some testing and confirmed that it was only after the patch was active that the boot issue would occur.

I tried different combinations of connector settings, and finally came across a working setup for this board. This might be worth trying for those of you who may be experiencing the same issue; I remember reading about someone with a similar issue earlier in the thread.

The problem was that I was using index 2 and 3 (ports 6 and 7), as this board only has 2 ports (HDMI and DVI). DVI is on port 6, and HDMI on 7. So I left the first row as index 1, and set connector type to dummy and bus to 0. This was causing the sluggish desktop on boot. I tried setting index one to -1 and all fields to 0, still the same result.

What I finally did that got the system working fine was to set the first row to indext 2 (port 6), which was the DVI. I then set the second row (normally index 2) to indext 3 (port 7), which was HDMI. I then set the third row to index -1, bus to 0, pipe to 0 and type to dummy. The fourth row was already set to -1 and dummy etc.

Here's the new updated patch code that sets the connectors table up as described above, which got rid of the sluggish desktop upon boot. I guess the first working port's index should be on the first row, as any time I had a dummy port on the first row, the system had the sluggish behavior at boot. Even disabling the first index by setting it to -1 didn't help, only after setting the first working port on the first row did the system behave normally again. Perhaps the system does internal checks for displays on all ports?

Hope this helps or sheds some light for those who may have this or similar issues, especially with boards that have 2 ports or less.


Updated connector patch code for Gigabyte H370 Aorus Gaming 3 WIFI (should work for non-WIFI model as well)

<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
<dict>
<key>AAPL,ig-platform-id</key>
<data>BwCbPg==</data>
<key>framebuffer-con0-busid</key>
<data>AgAAAA==</data>
<key>framebuffer-con0-enable</key>
<data>AQAAAA==</data>
<key>framebuffer-con0-index</key>
<data>AgAAAA==</data>
<key>framebuffer-con0-pipe</key>
<data>EgAAAA==</data>
<key>framebuffer-con0-type</key>
<data>AAgAAA==</data>
<key>framebuffer-con1-enable</key>
<data>AQAAAA==</data>
<key>framebuffer-con1-index</key>
<data>AwAAAA==</data>
<key>framebuffer-con1-pipe</key>
<data>EgAAAA==</data>
<key>framebuffer-con1-type</key>
<data>AAgAAA==</data>
<key>framebuffer-con2-busid</key>
<data>AAAAAA==</data>
<key>framebuffer-con2-enable</key>
<data>AQAAAA==</data>
<key>framebuffer-con2-index</key>
<data>/////w==</data>
<key>framebuffer-con2-pipe</key>
<data>AAAAAA==</data>
<key>framebuffer-con2-type</key>
<data>AQAAAA==</data>
<key>framebuffer-patch-enable</key>
<data>AQAAAA==</data>
</dict>
 
Well done CaseySJ for the good write up.

I have some issue pertaining to getting my laptop graphics to work. I have been trying to fix it many times to no avail.
Background:
Thinkpad Yoga S1 laptop
with Haswell intel i7 4510U 8GB RAM with HD4400 Gfx

here is the problem I encountered using Hackintool 2.5.9
Following strictly the instructions here and from headkaza of [Guide] Intel Framebuffer patching using whatevergreen


I encountered the following problem.
The HD4400 can never be loaded successfully at all.
Here is the screen shot of the VRAM that is at 7MB since day one of my High Sierra 10.13.4,

When I used the Hackintool to find the matching Platform ID with the GPU Dev ID, there is never a match between this two parameters. and I can't find HD4400 Device ID in Hackintool, if I use close to HD4400 eg. HD4600 (I get restart without booting to login screen) HD5000 (screen distorted and tearing) so I am unable to use any of the options. which lead me to revert back to the original HD4400 7MB option which is what I got from the installation.

Here is the dump of my info from hackintool
System Info
-----------------------------------------------------------------------
Host Jays-iMac.local
OS macOS High Sierra Version 10.13.4 (Build 17E199)
Kernel Darwin 17.5.0 x86_64
RAM 8.00 GB
Model Identifier iMac14,2
CPU Intel(R) Core(TM) i7-4510U CPU @ 2.00GHz
Intel Generation ???
Platform ID 0x0D220003
Board ID Mac-27ADBB7B4CEE8E61
Serial Number D25LHACKF8JC
Hardware UUID 34A0C5D3-0C58-5960-8D4F-EDED8357BCE5
System ID 01F4D11F-E652-CB11-81A7-C846D8C794DB
ROM C846D8C794DB
Board Serial Number C02140302D5DMT31M
Gq3489ugfi 9B01A5D00A0D610AC6D000EF772FB606A4
Fyp98tpgj 2F6004FB074C7BD0448518D33DE4CDF572
kbjfrfpoJU 127519BBDA0AD88FC6E0FFE350FFB7885E
oycqAZloTNDm 091D24C88990EB9894F8C4C6B6C26C3F9E
abKPld1EcMni 5ADB8F2E07E614F1F270749D444DB84545
-----------------------------------------------------------------------
GPU Info
-----------------------------------------------------------------------
GPU Name Intel HD Graphics 4400
GPU Device ID 0x0A168086
VRAM 0 MB
Quartz Extreme (QE/CI) No
Metal No
VDA Decoder Decoder Failed
-----------------------------------------------------------------------

and Also screenshot of my Hackintool 2.5.9. what should I do now, any kind advise would be very much appreciated.
I have chosen the option of 10.13.6, 10.14 and current version in Framebuffer of Hackintool and "apply current patches" under Patch in Hackintool. Problem persists.

Attached is also my config.plist that is currently giving me HD4400 7MB headache.

Thanks guys and looking forward to any help. Cheers.
 

Attachments

  • Untitled 5.png
    Untitled 5.png
    98.5 KB · Views: 79
  • Untitled 4.png
    Untitled 4.png
    132.9 KB · Views: 120
  • config.plist
    5.7 KB · Views: 111
So both the built-in LCD and external display work properly if the HDMI cable is plugged in after system has booted up? In other words, hot plugging the HDMI cable enables both internal and external monitors? Hence, you are using an HDMI switch to perform this hot-plug operation without having to physically plug and unplug the cable?

The IOReg file should be provided under both conditions:
  • With only external monitor working.
  • With both monitors working.


I made a video to showcase the problem.

I did solve the USB-C kernel panic's by using a platform-ID of HD620 instead of HD630. More info here: ASUS N580VD - Display problems (Kernel panic on USB-C plug-in).

I also tried all different connector options for the built-in display without success. See the attachment for IOreg's.
 

Attachments

  • debug_23182.zip
    3.5 MB · Views: 63
  • Ioreg's.zip
    17 MB · Views: 70
I found the ports and applied the patch, but the monitors are still black. They shows up in system report, Display Arrangement and Hackintool.
 

Attachments

  • ioreg_OSX.zip
    7.4 MB · Views: 92
  • Screen Shot 2019-06-09 at 8.13.25 PM.png
    Screen Shot 2019-06-09 at 8.13.25 PM.png
    77.8 KB · Views: 94
  • Screen Shot 2019-06-09 at 8.18.59 PM.png
    Screen Shot 2019-06-09 at 8.18.59 PM.png
    69.3 KB · Views: 97
  • Screen Shot 2019-06-09 at 8.52.48 PM.png
    Screen Shot 2019-06-09 at 8.52.48 PM.png
    60.6 KB · Views: 102
  • Screen Shot 2019-06-09 at 8.52.52 PM.png
    Screen Shot 2019-06-09 at 8.52.52 PM.png
    61.5 KB · Views: 87
  • config.plist
    6.5 KB · Views: 107
@djx8605, that's very good detective work!
 
Back
Top