Contribute
Register

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

@poles Please try this configuration based on results posted by @ZoooM in which DP and HDMI (first 2 rows) work as shown below. You're the only one around here with DVI-D who can verify the final port.

Row 1: Index 1, BusID 0x05, Type DP
Row 2: Index 2, BusID 0x02, Type HDMI
Row 3: Index 3, BusID 0x04, Type HDMI <-- probably DVI-D here, but 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>
 
FB-Patcher always goes back to default values so our revised settings will not re-appear, but this does not mean that revised settings are not in use. In fact they are in use!

The only BusID remaining to be tested, I think, is 0x01. (Ah, if you had a DisplayPort cable it would reduce the number of trials!)

Case E:
Row 1: BusID 0x01, Type HDMI
Row 2: BusID 0x06, Type HDMI
Row 3: BusID 0x05, Type DP
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>
                AQAAAA==
                </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>
                AAgAAA==
                </data>
                <key>framebuffer-con1-busid</key>
                <data>
                BgAAAA==
                </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>
                BQAAAA==
                </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>
                AAQAAA==
                </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>

Case F:
Row 1: BusID 0x05, Type DP
Row 2: BusID 0x06, Type HDMI
Row 3: BusID 0x01, 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>
                BgAAAA==
                </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>
                AQAAAA==
                </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>

@CaseySJ
We have liftoff! Case E: did the trick. I made the coding change, shut down, swapped my HDMI cable to the "lonely" port, powered up, and voila, I have a connection on row 1. I was able to hot swap between my two HDMI ports. I will leave the HDMI plugged into row 1, as that is the normal HDMI 1.4 port. I now want to test to see if any unattended shut downs occur, as that had been happening prior to when using the HDMI 2.0 port. Even though I don't have a DP capable device, I assume that row 3 is the DP connection.

Is there anything else I need to do with regards to the Intel UHD Graphics 630 capability? One final question, you indicated that when FB Patcher is launched, default values are used. But, I should note that the correct Bus Id values are specified in your configuration as below?
Row 1: BusID 0x01, Type HDMI
Row 2: BusID 0x06, Type HDMI
Row 3: BusID 0x05, Type DP

I want to extend a huge "THANK YOU" for your assistance in helping me better understand the Hackintosh experience.
Here's my successful screen shots.
 

Attachments

  • Row 1 FB Patcher HDMI.png
    Row 1 FB Patcher HDMI.png
    58.7 KB · Views: 203
  • Row 2 FB Patcher HDMI HDR.png
    Row 2 FB Patcher HDMI HDR.png
    59.8 KB · Views: 223
  • Sys Rpt Graphics n Displays.png
    Sys Rpt Graphics n Displays.png
    114.8 KB · Views: 185
  • Displays.png
    Displays.png
    39.2 KB · Views: 196
@CaseySJ - Hi, I was messing about with the code for my UHD 630's framebuffer injection, and noticed that I could delete the pipe & flag keys from its properties (in config.plist), with seemingly no effect on the patch's function.

I'm just wondering if you know whether these keys are needed in some way, or if it's safe to remove them? Thanks again.
 
@CaseySJ
We have liftoff! Case E: did the trick. I made the coding change, shut down, swapped my HDMI cable to the "lonely" port, powered up, and voila, I have a connection on row 1. I was able to hot swap between my two HDMI ports. I will leave the HDMI plugged into row 1, as that is the normal HDMI 1.4 port. I now want to test to see if any unattended shut downs occur, as that had been happening prior to when using the HDMI 2.0 port. Even though I don't have a DP capable device, I assume that row 3 is the DP connection.

Is there anything else I need to do with regards to the Intel UHD Graphics 630 capability? One final question, you indicated that when FB Patcher is launched, default values are used. But, I should note that the correct Bus Id values are specified in your configuration as below?
Row 1: BusID 0x01, Type HDMI
Row 2: BusID 0x06, Type HDMI
Row 3: BusID 0x05, Type DP

I want to extend a huge "THANK YOU" for your assistance in helping me better understand the Hackintosh experience.
Here's my successful screen shots.
Wow! That's great to hear! I've added your configuration to Post #1 of this guide. And I'm beginning to understand the role of "Index" -- I will add a whole new section describing how this works soon.

Your questions answered in order of appearance:
  1. Yes, Row 3 should work with DP and it would be good to someday verify that.
  2. Some folks are seeing color tints and hot-swap problems with single or multi-monitor setups. So while there's nothing else specifically to be done with regards to the Intel UHD 630, it would be good over the next few days to look for any graphics glitches and hot-swap issues.
  3. Yes the BusID and Type fields from Case E are in effect as long as they are present in your config.plist.
 
@CaseySJ - Hi, I was messing about with the code for my UHD 630's framebuffer injection, and noticed that I could delete the pipe & flag keys from its properties (in config.plist), with seemingly no effect on the patch's function.

I'm just wondering if you know whether these keys are needed in some way, or if it's safe to remove them? Thanks again.
Good point -- if you leave out any of the fields, then Mojave will use default values. Because we haven't changed the default values for "flags" it means we can safely leave those settings out of our config.plist.

But "pipe" may be necessary. Note that the screenshot for "Patch" in Post #1 has the Hotplug Reboot Fix checkbox turned on. This sets all pipes to 18 instead of using their default values of 9, 10, and 8. Evidence suggests that setting all pipes to the same value may solve a commonly reported problem whereby the system reboots automatically when certain connectors (i.e. HDMI cable) are inserted or removed at runtime.

If your system is stable without the change in pipes, then you may leave the default values intact.
 
Last edited:
@CaseySJ - Hi, many thanks for your explanation - this makes sense to me now. I'll leave the "pipe" keys in for now, so I can use the Hotplug Reboot Fix, while removing the "flags" keys.
 
Last edited:
@CaseySJ Also tried Case 1 it didn't work, after that i found another 2 working configs
View attachment 379234
and
View attachment 379235
Bus Id 0x04 also work for the DP port.

In the end DP port on ASUS doesn't care about Bus Id(0x01,0x04,0x05 all worked), HDMI port only works with Bus Id 0x02, and both need correct Indexes to work - 1 for DP, 2 for HDMI. Doesn't matter in which row you put them just requires correct settings.

Last problem i have with HDMI port is that it doesn't turn on unless i reconnect it after logging in into OS. It does light up in FBPatcher and appears in IOReg but monitor says it doesn't have HDMI input connected until i reconnect it.


Thank You @ZoooM
I have a Asus TUF Z390m-Pro Gaming motherboard and your HDMI index and board ID fixed my issue.... YEEEESSSS!
(I know if I unplug the monitor from the HDMI port it won't come back on, but I can live with that.)
 

Attachments

  • Screen Shot 2019-01-15 at 5.46.41 PM.png
    Screen Shot 2019-01-15 at 5.46.41 PM.png
    140.3 KB · Views: 147
Wow! That's great to hear! I've added your configuration to Post #1 of this guide. And I'm beginning to understand the role of "Index" -- I will add a whole new section describing how this works soon.

Your questions answered in order of appearance:
  1. Yes, Row 3 should work with DP and it would be good to someday verify that.
  2. Some folks are seeing color tints and hot-swap problems with single or multi-monitor setups. So while there's nothing else specifically to be done with regards to the Intel UHD 630, it would be good over the next few days to look for any graphics glitches and hot-swap issues.
  3. Yes the BusID and Type fields from Case E are in effect as long as they are present in your config.plist.
Well, the system still wants to auto reboot with the video output in the HDMI 1.4 port. Prior to achieving acceleration with the frame buffer fix, I had no reboot issues while using port 1. Once I started using the 2.0 port when achieving the UHD 630 fix, the rebooting started. During my build, this was the first occurrence of the reboot. Do you think it is related to the video activation, or due to some other happenstance? I will do some testing to gather some facts. Where should (thread) I post a question? One final question, for whatever reason, my CBM boot screen will launch into Mojave in 3,2,1. I don't recall setting that boot option. Do you know where that is controlled.

Thanks!!!!!
 
Well, the system still wants to auto reboot with the video output in the HDMI 1.4 port. Prior to achieving acceleration with the frame buffer fix, I had no reboot issues while using port 1. Once I started using the 2.0 port when achieving the UHD 630 fix, the rebooting started. During my build, this was the first occurrence of the reboot. Do you think it is related to the video activation, or due to some other happenstance? I will do some testing to gather some facts. Where should (thread) I post a question? One final question, for whatever reason, my CBM boot screen will launch into Mojave in 3,2,1. I don't recall setting that boot option. Do you know where that is controlled.

Thanks!!!!!
The reboot problem you described is relatively common and happens after the graphics fix. One proposed solution is to set all framebuffer pipes to the same value (18), which was actually done in the Case E settings. We're still looking for a solution. I plan to run some tests over the next couple of days to understand this better. In the meantime, it's good to search this forum and other Hackintosh forums for possible answers.

Regarding the 3-second timer in CBM, it's located in the GUI section of Clover Configurator, please see this post:
https://www.tonymacx86.com/threads/...-9700k-amd-rx-580.267551/page-57#post-1887166

To completely bypass CBM and go directly to Apple boot logo, set "Timeout" to 0, uncheck "-1", and set Default Boot Volume to your Mojave drive.

To only change timeout value from 3 seconds to something else, just set the new Timeout value.
 
What happens if you set Row 3 also to HDMI?

Which means:

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

Result: HDMI is working...no pink tint. DVI-D is also working but with pink tint.
 
Back
Top