Contribute
Register

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

Joined
Dec 1, 2012
Messages
71
Motherboard
ASUS ROG Strix F Z390
CPU
i7-9700K
Graphics
6800XT (Powercolor Red Dragon)
Mac
  1. MacBook Pro
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.
 

CaseySJ

Moderator
Joined
Nov 11, 2018
Messages
17,382
Motherboard
Gigabyte Z490 Vision D
CPU
i5-10400
Graphics
RX 580
Mac
  1. MacBook Air
  2. MacBook Pro
  3. Mac Pro
Classic Mac
  1. Quadra
Mobile Phone
  1. iOS
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.
 
Joined
Dec 31, 2013
Messages
776
Motherboard
Huawei Matebook D
CPU
i5-8250U
Graphics
UHD 620
Mobile Phone
  1. iOS
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: 106
  • Screenshot 2019-10-20 at 15.42.10.png
    Screenshot 2019-10-20 at 15.42.10.png
    133.3 KB · Views: 112
  • Screenshot 2019-10-20 at 15.42.24.png
    Screenshot 2019-10-20 at 15.42.24.png
    124 KB · Views: 100
Last edited:
Joined
May 27, 2010
Messages
2,406
Motherboard
Dell Optiplex 9030 All in One
CPU
i5-4690K
Graphics
HD 4600
Mac
  1. Mac mini
Classic Mac
  1. iMac
Mobile Phone
  1. iOS
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: 101
Joined
Aug 26, 2017
Messages
177
Motherboard
Gigabyte Z170X-UD5 TH
CPU
i7-6700K
Graphics
RX 580
Mac
  1. iMac
Classic Mac
  1. iMac
  2. LC
  3. Power Mac
  4. Quadra
@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 ?
 

jaymonkey

Moderator
Joined
Aug 27, 2011
Messages
3,994
Motherboard
GB Z490 Vision G
CPU
i9 10850K OC @ 5.2 GHz
Graphics
Vega 64 LC + HD 630
Mac
  1. MacBook Air
  2. MacBook Pro
  3. Mac Pro
Mobile Phone
  1. iOS
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:

CaseySJ

Moderator
Joined
Nov 11, 2018
Messages
17,382
Motherboard
Gigabyte Z490 Vision D
CPU
i5-10400
Graphics
RX 580
Mac
  1. MacBook Air
  2. MacBook Pro
  3. Mac Pro
Classic Mac
  1. Quadra
Mobile Phone
  1. iOS
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.
 
Joined
Jun 29, 2016
Messages
35
Motherboard
ASUS X99 Sabertooth
CPU
i7-5960X
Graphics
Vega 56
Mac
  1. MacBook Pro
Mobile Phone
  1. iOS
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!
 

CaseySJ

Moderator
Joined
Nov 11, 2018
Messages
17,382
Motherboard
Gigabyte Z490 Vision D
CPU
i5-10400
Graphics
RX 580
Mac
  1. MacBook Air
  2. MacBook Pro
  3. Mac Pro
Classic Mac
  1. Quadra
Mobile Phone
  1. iOS
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
 
Joined
Jun 29, 2016
Messages
35
Motherboard
ASUS X99 Sabertooth
CPU
i7-5960X
Graphics
Vega 56
Mac
  1. MacBook Pro
Mobile Phone
  1. iOS
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:

View attachment 433028


Thanks for the explanation. Currently I am using Lilu and not WhateverGreen. The reason being, I had a black screen during installation of Catalina and deleting WhateverGreen fixed the problem. So I only have Lilu. But should I add WhateverGreen back in there?

And I think I must have deleted the ACPI folder during installation.

Thank you so much for your kind response!
 
Top