Contribute
Register

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

Thank you for your quick response! For me it was already in the middle of the night here in Europe, so I now follow up on this after getting some sleep.

I use Platform ID 0x3E9B0007 which, according to https://www.tonymacx86.com/threads/guide-intel-framebuffer-patching-using-whatevergreen.256490/, is the only ID applicable for Coffee Lake desktops under High Sierra (but also for Mojave it’s the only desktop one with three ports, the other ID’s in that list applicable for desktops have 0 ports).

I’ve just tried with VGA, DVI, HDMI. Same problem as with DP, HDMI, HDMI: none of the ports work. And with both settings, Screen Sharing is not able to connect (I can enter my password on my Mountain Lion machine, but it doesn’t finish trying to connect). With settings allowing the VGA port to work, also Screen Sharing works (but then I don’t need it …).

Before running the debug tool, I have reverted to the config.plist without any framebuffer patching. ZIP file attached.
Some comments:
  • The IOReg output shows the following for Port 0x05 (AppleIntelFramebuffer@0) (VGA port):
    • av-signal-type is <10 00 00 00> (DisplayPort/VGA signal)
    • connector-type is <00 08 00 00> (HDMI)
  • Are you using a VGA-to-HDMI adapter?
  • Are you using any kind of video adapter?
  • What is the make and model of your display monitor?
 
Is it possible to use DP on EGPU to drive a monitor and HDMI on IGPU to drive a TV?
Yes, but you should be aware of several factors:
  • eGPUs require Thunderbolt connections.
  • Using on-board HDMI to drive a TV can lead to color tint issues, boot-to-black issues, scaling issues, etc. Not all TVs play nicely. If you have a very recent Smart TV, for example, it might work better.
 
Some comments:
  • The IOReg output shows the following for Port 0x05 (AppleIntelFramebuffer@0) (VGA port):
    • av-signal-type is <10 00 00 00> (DisplayPort/VGA signal)
    • connector-type is <00 08 00 00> (HDMI)
  • Are you using a VGA-to-HDMI adapter?
  • Are you using any kind of video adapter?
  • What is the make and model of your display monitor?
No, I don’t even own any video adapters. I’m using a plain VGA cable. The monitor connected via VGA is a Dell 1704FPT. The second screen I want to connect to via DVI is a Philips 19S.

I don’t know whether this is related, but System Information reports the Dell being capable of analogue VGA and analogue via DVI-I. But that might just be cosmetic information. In fact it is connected to my old Mountain Lion Hackintosh via DVI-D as well and that is also what the specs of the monitor say.

I saw that in some places DVMT settings in the BIOS are discussed. Mine are “DVMT Pre-Allocated: 128M” and “DVMT Total Gfx Mem: 256M”. Are these o.k.?
 
Hi, hope it's ok to go slightly off topic, though it's still related to this thread.

I was wondering how others reboot their PC, when they make changes to their iGPU configuration, which end up in a black screen on boot?

For a long time, I've used the reset button on my PC when this happens, but this has ended in hard-drive corruption for me, as macOS is still active when I do this.

Just recently, I've started using Karabiner (https://pqrs.org/osx/karabiner/), so I can remap the eject key in macOS to F9. Then, when I get a black screen on boot (from tinkering with my configuration), I can use the keyboard shortcut:
Cmd + Ctrl + F9 to reboot my PC from within macOS (with the Windows key used for Cmd, and F9 for eject).

I wonder how others approach this issue?

Also, I'm happy to report that since the recent 10.14.4 update, my Intel UHD 630 GPU is recognised natively. I no longer have to use a fake device-id in my config.plist (first reported in the macOS 10.14.4 Update thread). (Edits: for clarity)
 
Last edited:
No, I don’t even own any video adapters. I’m using a plain VGA cable. The monitor connected via VGA is a Dell 1704FPT. The second screen I want to connect to via DVI is a Philips 19S.

I don’t know whether this is related, but System Information reports the Dell being capable of analogue VGA and analogue via DVI-I. But that might just be cosmetic information. In fact it is connected to my old Mountain Lion Hackintosh via DVI-D as well and that is also what the specs of the monitor say.

I saw that in some places DVMT settings in the BIOS are discussed. Mine are “DVMT Pre-Allocated: 128M” and “DVMT Total Gfx Mem: 256M”. Are these o.k.?
  • The Dell 1704FPT and Philips 19S do not have HDMI. When you said that none of the ports work when framebuffer settings from Gigabyte H370M D3H are used, does that include the HDMI port?
  • Can you provide another IORegistry dump, but with the following:
    • Apply any framebuffer patch that allows any one of the video ports to work.
    • Connect monitor to the working port.
    • Run IORegistryExplorer and then File --> Save As...
    • This can provide some additional clues.
  • Also, try enabling the iGPU via Clover:
    • Clover Configurator --> Devices --> IntelGFX = 0x3E928086
    • Clover Configurator --> Graphics --> InjectIntel = Check ON
    • Clover Configurator --> Graphics --> ig-platform-id = 0x3E9B0007
 
  • The Dell 1704FPT and Philips 19S do not have HDMI. When you said that none of the ports work when framebuffer settings from Gigabyte H370M D3H are used, does that include the HDMI port?
I had borrowed an HDMI cable from friends to connect my TV to the computer. That way I could check whether the port works or not – so yes, it included the HDMI port when I said that none of the ports work. But they also need the cable themselves, so I gave it back today and can’t test HDMI for now. (I won’t need HDMI myself which is why I don’t want to spend money for a cable.)

  • Can you provide another IORegistry dump, but with the following:
    • Apply any framebuffer patch that allows any one of the video ports to work.
    • Connect monitor to the working port.
    • Run IORegistryExplorer and then File --> Save As...
    • This can provide some additional clues.
I’ve actually played around a bit. I changed the platform ID to 0x3E920000 (I’ve also tried 0x3E920009 with the exact same results) and the device ID to 0x3E92. In the Connectors tab I then changed the settings to:
Index 1 – Bus ID 5 – Type DP – Flags 0x000003C7
Index 2 – Bus ID 2 – Type HDMI – Flags 0x000003C7
Index 3 – Bus ID 6 – Type HDMI – Flags 0x000003C7

After restart Index 2 had turned red. Clicking on it showed “Port: 0x06”. However, changing its Bus ID to 6 or even 1 or 4 (and the one of Index 3 to something else, respectively) made Index 2 turn white again after restart. So by using Bus ID 2 this screen would show up in Hackintool (and as well in System Preferences as second screen) while the screen itself remained black.
See all of the settings here:
396699
396700
396701

As this “half step further” is the farthest I ever got, I’ve used this state to generate a new IORegistry dump. See attached.

  • Also, try enabling the iGPU via Clover:
    • Clover Configurator --> Devices --> IntelGFX = 0x3E928086
    • Clover Configurator --> Graphics --> InjectIntel = Check ON
    • Clover Configurator --> Graphics --> ig-platform-id = 0x3E9B0007
I’ll try that and will report in a new post.
 

Attachments

  • G3.ioreg.zip
    552.3 KB · Views: 190
Last edited:
I had borrowed an HDMI cable from friends to connect my TV to the computer. That way I could check whether the port works or not – so yes, it included the HDMI port when I said that none of the ports work. But they also need the cable themselves, so I gave it back today and can’t test HDMI for now. (I won’t need HDMI myself which is why I don’t want to spend money for a cable.)


I’ve actually played around a bit. I changed the platform ID to 0x3E920000 (I’ve also tried 0x3E920009 with the exact same results) and the device ID to 0x3E92. In the Connectors tab I then changed the settings to:
Index 1 – Bus ID 5 – Type DP – Flags 0x000003C7
Index 2 – Bus ID 2 – Type HDMI – Flags 0x000003C7
Index 3 – Bus ID 6 – Type HDMI – Flags 0x000003C7

After restart Index 2 had turned red. Clicking on it showed “Port: 0x06”. However, changing its Bus ID to 6 or even 1 or 4 (and the one of Index 3 to something else, respectively) made Index 2 turn white again after restart. So by using Bus ID 2 this screen would show up in Hackintool (and as well in System Preferences as second screen) while the screen itself remained black.
See all of the settings here:
View attachment 396699View attachment 396700View attachment 396701
As this “half step further” is the farthest I ever got, I’ve used this state to generate a new IORegistry dump. See attached.


I’ll try that and will report in a new post.
This is definitely progress! For now, don't worry that DVI port is black -- that could be due to the monitor and EDID value.

Instead, just change Index 3 to BusID 0x04. Then see if all 3 rows turn red.

The new IOReg file looks much better:
  • AppleIntelFramebuffer@0: (Index 1, Port 0x05)
    • av-signal-type = <10 00 00 00> (DisplayPort / VGA)
    • connector-type = <00 04> (DisplayPort / VGA)
    • So this matches now!
  • AppleIntelFramebuffer@1: (Index 2, Port 0x06)
    • av-signal-type = <02 00 00 00> (DVI)
    • connector-type = <00 08> (HDMI / DVI)
    • This also matches.
  • AppleIntelFramebuffer@2: (Index 3, Port 0x07)
    • No av-signal-type present because BusID is incorrect
    • So let's set this to BusID 0x04
 
Last edited:
I was wondering how others restart their PC when, after making changes to their iGPU configuration, it ends up in a black screen on boot?

For a long time, I've just used the reset button on my PC when this happens, but the drawback to this is that it often ends in hard-drive corruption, as macOS is still running when the computer is reset.

I've just recently, started using Karabiner (https://pqrs.org/osx/karabiner/) to remap macOS's eject key to F9. Then, when I get a black screen on boot (from tinkering with my iGPU configuration), I use the keyboard shortcut: Cmd+Ctrl+F9 to reboot my PC from within macOS (with the Windows key standing in for Cmd, and F9 for eject).

I wonder how other users approach this issue?
Well, as Screen Sharing doesn’t seem to work when none of the video ports do, the reset button is what I have used up to now also.

I’m actually using an old macally keyboard as with typing I’m very familiar with how its keys respond. It still has a power button which I simply use followed by return to power off the machine. At least that’s what I do on my old Mountain Lion Hackintosh. High Sierra doesn’t respond anymore to the power button, making Apple feel less Apple :) (and I have four of these keyboards!). Using Karabiner I have now at least assigned “eject” to it. Maybe there’s also a way to have it trigger the shut down dialog. That would be great. But at least using cmnd-ctrl-power I can now shut down the machine while working on the iGPU configuration.

Thanks for the tip!


EDIT:
… Maybe there’s also a way to have it trigger the shut down dialog. That would be great. …


Well, there is!
(At least for an external keyboard with power key – I can’t verify for the power key on a laptop as I don’t have one.)

After installing Karabiner Elements start it, click on the tab “Complex Modifications”, click “Add rule” and enable a random one of the example rules there, then disable it again. This will generate the file we have to amend now.
In Finder, press cmnd + shift + . in order to reveal hidden files. Then open your_user_folder/.config/karabiner/karabiner.json with TextEdit. There, look for the line containing "rules": [] (should be somewhere in the beginning of the file). Substitute the two brackets ([]) with the following code:
JSON:
[                    {
                        "description": "Change Power Key to immediately bring up Shutdown Dialog",
                        "manipulators": [
                            {
                                "from": {
                                    "key_code": "power"
                                },
                                "to": [
                                    {
                                        "shell_command": "osascript -e 'tell application \"loginwindow\" to «event aevtrsdn»'"
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    }
                ]
Save and close the file. (You may hide invisible files by again pressing cmnd + shift + . in Finder.)

Start Karabiner Elements from your Applications folder (this will actually start its Preferences). If you click on the tab “Complex Modifications”, you should see the rule “Change Power Key to immediately bring up Shutdown Dialog”. This means that the dialog should now come up when you press the Power Key on your keyboard.

Optionally you may click on the tab “Misc” and within that on the button “Copy the current configuration to the system default configuration”. In theory that will enable you to use Karabiner even before logging in to your user account. But as we have not mapped one key to another but assigned an action to a key, I doubt it will have any effect in this case.

Quit Karabiner Elements Preferences and shutdown your machine the old school way. :)

Credits: https://github.com/tekezo/Karabiner-Elements/issues/721
 
Last edited:
  • Also, try enabling the iGPU via Clover:
    • Clover Configurator --> Devices --> IntelGFX = 0x3E928086
    • Clover Configurator --> Graphics --> InjectIntel = Check ON
    • Clover Configurator --> Graphics --> ig-platform-id = 0x3E9B0007
I’ll try that and will report in a new post.
I’ve just tried it, alternatively also with platform ID 0x3E920000, but neither worked.

This is definitely progress! For now, don't worry that DVI port is black -- that could be due to the monitor and EDID value.

Instead, just change Index 3 to BusID 0x04. Then see if all 3 rows turn red.

The new IOReg file looks much better:
  • AppleIntelFramebuffer@0: (Index 1, Port 0x05)
    • av-signal-type = <10 00 00 00> (DisplayPort / VGA)
    • connector-type = <00 04> (DisplayPort / VGA)
    • So this matches now!
  • AppleIntelFramebuffer@1: (Index 2, Port 0x06)
    • av-signal-type = <02 00 00 00> (DVI)
    • connector-type = <00 08> (HDMI / DVI)
    • This also matches.
  • AppleIntelFramebuffer@2: (Index 3, Port 0x07)
    • No av-signal-type present because BusID is incorrect
    • So let's set this to BusID 0x04
Good to hear this is progress!

I have set Index 3 to Bus ID 4. But I can’t test the HDMI port for now as I have no cable. I’ll see whether I can borrow it again tomorrow night.

In the meantime, could you help me trying to get the monitor connected via DVI to show some picture? I’ll go to bed now but will check if there’s anything to follow up on tomorrow morning.

So far: Many, many thanks!
 
I’ve just tried it, alternatively also with platform ID 0x3E920000, but neither worked.


Good to hear this is progress!

I have set Index 3 to Bus ID 4. But I can’t test the HDMI port for now as I have no cable. I’ll see whether I can borrow it again tomorrow night.

In the meantime, could you help me trying to get the monitor connected via DVI to show some picture? I’ll go to bed now but will check if there’s anything to follow up on tomorrow morning.

So far: Many, many thanks!
Is there any way you could borrow a more recent HDMI/DisplayPort monitor (not a TV, but a computer monitor)? It would be nice if the monitor also has DVI, then you can test both DVI and HDMI.
 
Back
Top