Contribute
Register

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

Hi everyone,

I need some help to figure out the framebuffer of an HP EliteDesk 800 G4.
It has an i7 8700T with UHD 630
I can get acceleration to work no problem BUT the monitor is totally black. So I can connect to the PC from another Mac and see acceleration is working BUT nothing on the monitor.
This PC has 2 DP and 1 VGA ports.

I followed the guide and modified the Bus ID with all the DP ports available with no luck.
Do you have advices on how I could find a way out?
Thanks a lot!
 
This is a fantastic observation! And it does seem to fit the dots provided by other replies to this thread. These are the original values:

Row 1: Index 2, BusID 0x02, Type HDMI <-- may not be operational and user may have intended DVI-D
Row 2: Index 3, BusID 0x04, Type HDMI
Row 3: Index 1, BusID 0x01, Type DP

  • We can see that Index 1 is DP and BusID = 0x01. But as you stated, DP is flexible -- it can work on BusID 0x01, 0x04, and 0x05. What matters is that it gets Index 1. Row number does not matter. Index seems to specify physical order of the ports.
  • We can see that Index 2 is HDMI and BusID = 0x02. As you again stated, HDMI is very particular. It only works with BusID 0x02 and its Index is 2. Row number does not matter.
  • We can see that Index 3 is also HDMI and BusID = 0x04. This port is actually DVI-D on @poles motherboard, who verified that DVI-D works with this setting.
So I think it's reasonable to test the following 2 simpler configurations to see which works best:

Condition 1:
Row 1: Index 1, BusID 0x05, Type DP
Row 2: Index 2, BusID 0x02, Type HDMI
Row 3: Index 3, BusID 0x04, Type DVI-D

Code:
        <key>Properties</key>
        <dict>
            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>
            <dict>
                <key>AAPL,ig-platform-id</key>
                <data>
                BwCbPg==
                </data>
                <key>device-id</key>
                <data>
                mz4AAA==
                </data>
                <key>enable-hdmi20</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-busid</key>
                <data>
                BQAAAA==
                </data>
                <key>framebuffer-con0-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con0-index</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con0-type</key>
                <data>
                AAQAAA==
                </data>
                <key>framebuffer-con1-busid</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-con1-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con1-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con1-index</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-con1-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con1-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con2-busid</key>
                <data>
                BAAAAA==
                </data>
                <key>framebuffer-con2-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con2-index</key>
                <data>
                AwAAAA==
                </data>
                <key>framebuffer-con2-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con2-type</key>
                <data>
                BAAAAA==
                </data>
                <key>framebuffer-con3-busid</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con3-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con3-flags</key>
                <data>
                IAAAAA==
                </data>
                <key>framebuffer-con3-index</key>
                <data>
                /////w==
                </data>
                <key>framebuffer-con3-pipe</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con3-type</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-patch-enable</key>
                <data>
                AQAAAA==
                </data>
            </dict>
        </dict>

Condition 2:
Row 1: Index 1, BusID 0x05, Type DP
Row 2: Index 2, BusID 0x02, Type HDMI
Row 3: Index 3, BusID 0x04, Type HDMI
Code:
        <key>Properties</key>
        <dict>
            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>
            <dict>
                <key>AAPL,ig-platform-id</key>
                <data>
                BwCbPg==
                </data>
                <key>device-id</key>
                <data>
                mz4AAA==
                </data>
                <key>enable-hdmi20</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-busid</key>
                <data>
                BQAAAA==
                </data>
                <key>framebuffer-con0-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con0-index</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con0-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con0-type</key>
                <data>
                AAQAAA==
                </data>
                <key>framebuffer-con1-busid</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-con1-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con1-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con1-index</key>
                <data>
                AgAAAA==
                </data>
                <key>framebuffer-con1-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con1-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con2-busid</key>
                <data>
                BAAAAA==
                </data>
                <key>framebuffer-con2-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con2-flags</key>
                <data>
                xwMAAA==
                </data>
                <key>framebuffer-con2-index</key>
                <data>
                AwAAAA==
                </data>
                <key>framebuffer-con2-pipe</key>
                <data>
                EgAAAA==
                </data>
                <key>framebuffer-con2-type</key>
                <data>
                AAgAAA==
                </data>
                <key>framebuffer-con3-busid</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con3-enable</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-con3-flags</key>
                <data>
                IAAAAA==
                </data>
                <key>framebuffer-con3-index</key>
                <data>
                /////w==
                </data>
                <key>framebuffer-con3-pipe</key>
                <data>
                AAAAAA==
                </data>
                <key>framebuffer-con3-type</key>
                <data>
                AQAAAA==
                </data>
                <key>framebuffer-patch-enable</key>
                <data>
                AQAAAA==
                </data>
            </dict>
        </dict>


Alas, this is a commonly reported "hot-plug" problem with HDMI. Hopefully we'll find a solution for this soon.

You are an absolute legend! I recently upgraded my mobo / CPU from an MSI Z77 + 3570K to a ASUS ROG Strix-F Z390 + 9700K. I have a 980Ti but it was becoming a pain in the ass to get the web drivers working after switching motherboards, so I upgraded to Mojave and was trying to get dual displays working with the UHD 630 but had the black screen issue through HDMI.

After multiple trial and error attempts, I saw this post later in the thread. The 'Condition 2' solution worked perfectly - I switched index 1 (DP) to 0x05, and then the HDMI port at index 2 to 0x02. The DP was originally set to 0x02 and this is probably why when I plugged in HDMI while the DP was also plugged in, the second monitor wouldn't light up at all. I also used the WhateverGreen boot argument agdpmod=vit9696 as I'd seen this elsewhere to help with multiple monitors.
 
Hi everyone,

I need some help to figure out the framebuffer of an HP EliteDesk 800 G4.
It has an i7 8700T with UHD 630
I can get acceleration to work no problem BUT the monitor is totally black. So I can connect to the PC from another Mac and see acceleration is working BUT nothing on the monitor.
This PC has 2 DP and 1 VGA ports.

I followed the guide and modified the Bus ID with all the DP ports available with no luck.
Do you have advices on how I could find a way out?
Thanks a lot!
Hello @zzmadd,

Apologies for the delay. Are you still struggling with this? If so, let's start by reviewing what you have already tried:
  • Which version of macOS are you running? Mojave 10.14.6?
  • What is the make/model of the monitor you are using?
  • Are you connecting your monitor via straight DP-to-DP cable (no adapters)?
  • What Platform ID are you using?
  • Please post your config.plist with serial numbers removed from SMBIOS.
 
Hello @zzmadd,

Apologies for the delay. Are you still struggling with this? If so, let's start by reviewing what you have already tried:
  • Which version of macOS are you running? Mojave 10.14.6?
  • What is the make/model of the monitor you are using?
  • Are you connecting your monitor via straight DP-to-DP cable (no adapters)?
  • What Platform ID are you using?
  • Please post your config.plist with serial numbers removed from SMBIOS.
Hi @CaseySJ

thanks for your reply.

First my tinkering around I was able to have both DP ports working.
They work but whenever I unplug the cable from one of the two ports, when I plug it in again I get no image.
Basically I have to boot up the system with the cable inserted.
I also attach Hackintool Connectors screenshoots.

Which version of macOS are you running? Mojave 10.14.6?
Mojave 10.14.6

What is the make/model of the monitor you are using
LG Ultrawide 29UM65-W

Are you connecting your monitor via straight DP-to-DP cable (no adapters)
I use a DP to HDMI adapter

What Platform ID are you using?
07009B3E

Please post your config.plist with serial numbers removed from SMBIOS
Config posted.

Thanks for your help.
L.
 

Attachments

  • config.plist.zip
    3.3 KB · Views: 135
  • Screenshot 2019-10-20 at 15.42.10.png
    Screenshot 2019-10-20 at 15.42.10.png
    133.3 KB · Views: 148
  • Screenshot 2019-10-20 at 15.42.24.png
    Screenshot 2019-10-20 at 15.42.24.png
    124 KB · Views: 126
Last edited:
Thanks so much for this thread. It gave me the break through I needed to get DP out and HDMI out working on my Dell Optiplex 9030 All in One, Haswell system.

In this configuration system is stable and will hot plug between connectors fine.

Platform ID 0x0D220003

Index 1, Bus ID 5 DP out, Index 2 Bus ID 4 is the built in display ( leaving type as DP works ), Index 3 Bus ID 6 HDMI out.
 

Attachments

  • GPU properties Optiplex 9030.png
    GPU properties Optiplex 9030.png
    114 KB · Views: 128
@jaymonkey
@headkaze


I have an issue where sometimes my Vega64 DP output will go dark and I screen sharing stops working. N
I have a single monitor connected to reference Vega64 via DisplayPort running at 4K@60. 9700K with Z390 AORUS extreme

I have tried adding Framebuffer settings to config.plist to force the correct configuration, but nothing works to enable acceleration.

i use on catalina with VEGA 64

I think this is the correct headless Framebuffer config, using platform-id 3E980003 and device 983E0000 but maybe I am wrong? SMBIOS is iMac19,1

<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
<dict>
<key>AAPL,ig-platform-id</key>
<data>
AD6YAAM=
</data>
<key>device-id</key>
<data>
mD4AAA==
</data>
<key>framebuffer-patch-enable</key>
<data>
AQAAAA==
</data>
<key>framebuffer-unifiedmem</key>
<data>
AAAAgA==
</data>
</dict>


what could be the information ?
This version implements the following connector settings:

  • Index 1: BusID 0x01, Type HDMI
  • Index 2: BusID 0x05, Type HDMI (physically DVI-D)
  • Index 3: BusID 0x06, Type DP
is this correct ?
 
I have an issue where sometimes my Vega64 DP output will go dark and I screen sharing stops working. I have a single monitor connected to reference Vega64 via DisplayPort running at 4K@60. 9700K with ASRock Z390 ITX/AC.


@maclinuxg4,

Not sure what is going on with your Vega 64 .... I have Vega 64 connected to two Monitors 1 x DP, 1 X HDMI and don't have any issues. I just let WEG do its thing for the Vega and let it set a generic AMD framebuffer.

Without any config added, just default WEG, videoproc shows the accelerated decoding enabled, but intel power gadget. does not show any GFX activity.


Check that your IGPU model name starts with "Intel", I found on my i7 4790K system that if the "Model" property string did not start with "Intel" then there was no IGPU trace with Intel Power Gadget. See this post for more info :-



I think this is the correct headless Framebuffer config, using platform-id 3E980003 and device 983E0000 but maybe I am wrong? SMBIOS is iMac19,1

  • Headless PlatformID 0x3E980003 is correct for 9th Gen Coffee Lake IGPU (UHD 630)
  • Device ID 0x983E0000 is also correct.
  • SMBIOS iMac19,1 is recommended for 9700K CPU
This version implements the following connector settings:

  • Index 1: BusID 0x01, Type HDMI
  • Index 2: BusID 0x05, Type HDMI (physically DVI-D)
  • Index 3: BusID 0x06, Type DP


When using a Headless PlatfromID all Connectors should have the following parameters :-
  • index = -1
  • bus id = 0x00
  • pipe = 0
  • type = dummy
Which would suggest that your config is not correct ...
Take a close look at your patch values :-

Code:
<key>AAPL,ig-platform-id</key>
<data>
AD6YAAM=
</data>


You have set AAPL,ig-platform-id to the Base 64 value of AD6YAAM= which converts to 00 3E 98 00 03 in hex (use Hackintool Calculator function) so you have added a leading zero byte and not reversed the byte order thus resulting in an invalid PlatformID which will cause WEG to inject the default one for UHD 630 IGPU which is why your connector info is not correct for a Headless PlatformID.

The correct AAPL,ig-platform-id patch should read :-

Code:
<key>AAPL,ig-platform-id</key>
<data>
AwCYPg==
</data>


Which converts to 03 00 98 3E (0x3E980003 in reverse byte order).

I would think once you have configured your IGPU correctly your system will be more stable.

Cheers
Jay
 
Last edited:
Thanks so much for this thread. It gave me the break through I needed to get DP out and HDMI out working on my Dell Optiplex 9030 All in One, Haswell system.

In this configuration system is stable and will hot plug between connectors fine.

Platform ID 0x0D220003

Index 1, Bus ID 5 DP out, Index 2 Bus ID 4 is the built in display ( leaving type as DP works ), Index 3 Bus ID 6 HDMI out.
Thanks! This is very helpful and has been added to Compilation in Post #1. I'll add the XML structure soon.
 
Hey guys I am on Catalina and I have Radeon Vega 56 trying to designate my FB name in clover as Iriri or Kamarang but it is not showing. I downloaded SSDT-Inject FB Name For Vega 56 to add them in /EFI/Clover/ACPI/Patched, but I don't have these folder.

I tried searching forum for hours and I can't do it on my own. Somebody help me!
 
Hey guys I am on Catalina and I have Radeon Vega 56 trying to designate my FB name in clover as Iriri or Kamarang but it is not showing. I downloaded SSDT-Inject FB Name For Vega 56 to add them in /EFI/Clover/ACPI/Patched, but I don't have these folder.

I tried searching forum for hours and I can't do it on my own. Somebody help me!
Catalina has built-in support for Vega 56 so it should not be necessary to select a frame buffer in Clover. Are you using Lilu and WhateverGreen?

The /EFI/CLOVER/ACPI/Patched folder exists in the EFI partition of your Catalina SSD. First you have to mount the EFI partition. This can be done from Clover Configurator --> Mount EFI as shown:

Screen Shot 2019-10-27 at 1.18.52 PM.png
 
Back
Top