Contribute
Register

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

@CaseySJ ,

Can you please also include the name of Asus Prime H370-Plus along with H370M-Plus in your Post 1 as both have the same connectors patch?
 
Hello.
Most of the contents in this thread is regarding desktops and not laptop, and I am not sure what to do with my LVDS screen. The problem is that "white" is added to the normal screen and I can't barely see anything, so I figured I should do fb patching. But to begin, I need someone to please elaborate on Index 0 and shifting of indices, and perhaps answer my questions that follow: LVDS must have Index 0, no index will be shifed as I must have Index 0 in Con 0/Array Index 0, and Con 1-3 will be left with Indices 1-3? Then is it possible to have 4 built-in and external screens in total?
 
@CaseySJ ,

Can you please also include the name of Asus Prime H370-Plus along with H370M-Plus in your Post 1 as both have the same connectors patch?
Thanks for letting me know. Done.
 
It does not work when apply patches is pressed , everything comes back.
Okay, I see the confusion so I've added this note to Preparation, step #2:

Note: This option displays the currently active framebuffer settings in the Connectors tab. It does not actually apply any changes to your system. But when changes are made as described later in this Guide and the system is rebooted, this option displays those settings instead of the default framebuffer settings. So if you made and applied some changes, rebooted, and did not see those changes in Hackintool, it is because Apply Current Patches was not selected. Also note that whenever you select a new Platform ID from the pop-up menu, the default settings for that platform will appear in Connectors (as it should). To see your previously applied settings, however, just select Apply Current Patches once again.

The only way to apply settings is to save them to config.plist and reboot. The "Apply Current Patches" option is really a "Show Current Patches" option.
 
Last edited:
Hello.
Most of the contents in this thread is regarding desktops and not laptop, and I am not sure what to do with my LVDS screen. The problem is that "white" is added to the normal screen and I can't barely see anything, so I figured I should do fb patching. But to begin, I need someone to please elaborate on Index 0 and shifting of indices, and perhaps answer my questions that follow: LVDS must have Index 0, no index will be shifed as I must have Index 0 in Con 0/Array Index 0, and Con 1-3 will be left with Indices 1-3? Then is it possible to have 4 built-in and external screens in total?
You're right that this Guide is currently desktop-oriented, but in the future it may become more balanced.

To answer your questions:
  1. Yes, LVDS must have Index 0 and it's customary to specify that in the first row (con 0).
  2. The remaining Indexes (1, 2, and 3) should be disabled by specifying Index -1 for the remaining rows. However, if your laptop has an external HDMI port, for example, then it's necessary to determine its Port number and specify an appropriate BusID and Type (as mentioned in the Guide).
  3. Most Intel iGPUs are limited to 3 displays only, so not all Indexes (or Ports) will be active.
  4. Laptops have a built-in display (LVDS) that counts as 1 of the 3 maximum displays, so Index 0 will be used for LVDS and you can specify up to two additional displays by using any 2 of the remaining Indexes.
  5. Desktops have no built-in display, so Index 0 is not used at all. And all 3 of the external ports are available for use on Indexes 1, 2, and 3.
Regarding the "white wash" issue on your LCD, maybe it's due to EDID or SMBIOS issues? Hopefully someone familiar with this problem can jump in and offer some advice...
 
You're right that this Guide is currently desktop-oriented, but in the future it may become more balanced.

To answer your questions:
  1. Yes, LVDS must have Index 0 and it's customary to specify that in the first row (con 0).
  2. The remaining Indexes (1, 2, and 3) should be disabled by specifying Index -1 for the remaining rows. However, if your laptop has an external HDMI port, for example, then it's necessary to determine its Port number and specify an appropriate BusID and Type (as mentioned in the Guide).
  3. Most Intel iGPUs are limited to 3 displays only, so not all Indexes (or Ports) will be active.
  4. Laptops have a built-in display (LVDS) that counts as 1 of the 3 maximum displays, so Index 0 will be used for LVDS and you can specify up to two additional displays by using any 2 of the remaining Indexes.
  5. Desktops have no built-in display, so Index 0 is not used at all. And all 3 of the external ports are available for use on Indexes 1, 2, and 3.

Thank you for your reply. I think I can have up to 3 screens with LVDS and HDMI plus microHDMI, if the latter works at all. Then it'd be wise to start by assigning -1 to Con 3 Index to get all three working and leave out Con 3 that won't have any connections. Or switch with what's left, Con 1 or Con 2. If I just want to get my LVDS working which is what I want, I should assign -1 to Con 1-3 to disable them. Is my understanding correct?
Regarding the "white wash" issue on your LCD, maybe it's due to EDID or SMBIOS issues? Hopefully someone familiar with this problem can jump in and offer some advice...

The strange thing with my screen is that if I have a laptop platform ID 00010000, my screen is white. Hackintool shows I have no working LVDS in the current configuration. With a desktop platform ID 00030010 injected in Graphics/, not Devices/Properties/Pci~, the screen is normal and considered a DP when I click on Patched. Why doesn't it just work already... And I need to inject EDID via clover as macOS doesn't seem to pick up DisplayVendorID-xxxx, and I probably lost track of what I have done or have yet to try. If anyone could direct me to the possible solution, please do :D
 
Thank you for your reply. I think I can have up to 3 screens with LVDS and HDMI plus microHDMI, if the latter works at all. Then it'd be wise to start by assigning -1 to Con 3 Index to get all three working and leave out Con 3 that won't have any connections. Or switch with what's left, Con 1 or Con 2. If I just want to get my LVDS working which is what I want, I should assign -1 to Con 1-3 to disable them. Is my understanding correct?
Yes, correct.

For a system with internal screen only:

Con0 = Index 0 = LVDS
Con1 = Index -1
Con2 = Index -1
Con3 = Index -1

For a system with internal screen and an HDMI external port:
  • First determine the Port number for HDMI: 0x05, 0x06, or 0x07.
  • Knowing the Port number will determine its Index. If HDMI is on Port 0x06, then Index = 2.
  • Set the BusID of Index 2 (in this example) to 0x04 or any permitted HDMI value.
  • Set the Type of Index 2 (again, just for this example) to HDMI.
  • Leave the other connectors as Index = -1.
  • So this example will look like this:
Con0 = Index 0. BusID = (whatever you have now), Type = LVDS
Con1 = Index 2. BusID = 0x04, Type =HDMI
Con2 = Index -1
Con3 = Index -1

For a system with internal screen and 2 external ports, repeat the above for each external port (i.e. determine Port number of each external port and set the corresponding Index to the appropriate BusID and Type.).

The strange thing with my screen is that if I have a laptop platform ID 00010000, my screen is white. Hackintool shows I have no working LVDS in the current configuration. With a desktop platform ID 00030010 injected in Graphics/, not Devices/Properties/Pci~, the screen is normal and considered a DP when I click on Patched. Why doesn't it just work already... And I need to inject EDID via clover as macOS doesn't seem to pick up DisplayVendorID-xxxx, and I probably lost track of what I have done or have yet to try. If anyone could direct me to the possible solution, please do :D
If the Desktop Platform ID produces a working image on the internal screen then what is the Port number assigned to that in Hackintool? Be sure to select "Patch --> Apply Current Patches" from the Hackintool's top menu bar to view the proper Connector settings. A screenshot of the Connectors page would help.
 
@CaseySJ , Thank you for your kind explanation.
For a system with internal screen and an HDMI external port:
  • First determine the Port number for HDMI: 0x05, 0x06, or 0x07.
  • Knowing the Port number will determine its Index. If HDMI is on Port 0x06, then Index = 2.
  • Set the BusID of Index 2 (in this example) to 0x04 or any permitted HDMI value.
  • Set the Type of Index 2 (again, just for this example) to HDMI.
  • Leave the other connectors as Index = -1.
  • So this example will look like this:
Con0 = Index 0. BusID = (whatever you have now), Type = LVDS
Con1 = Index 2. BusID = 0x04, Type =HDMI
Con2 = Index -1
Con3 = Index -1
If my HDMI is on Port 6, I should have matching BusID, Index, and Type: BusID 0x04, Index 2, Type HDMI. But only two ports are to be used and LVDS/Con0 can be ignored. Con2 and Con3 are to be disabled, so Con1 can have Index 2. Basically repeated what you have said. But is it possible to match Con and Index:
Con0 = Index 0. BusID = (whatever you have now), Type = LVDS
Con1 = Index -1
Con2 = Index 2 BusID = 0x04, Type =HDMI
Con3 = Index -1

I am asking the same question again,
-1 to Con 3 Index to get all three working and leave out Con 3 that won't have any connections. Or switch with what's left, Con 1 or Con 2
but to be sure...because for me this framebuffer patching is difficult to understand...
If the Desktop Platform ID produces a working image on the internal screen then what is the Port number assigned to that in Hackintool? Be sure to select "Patch --> Apply Current Patches" from the Hackintool's top menu bar to view the proper Connector settings. A screenshot of the Connectors page would help.
The port number is 5. If I select "Patch --> Apply Current Patches" Con 1 lights up in red and is shown to be DP. Con 0 LVDS is blank. If I don't select current patches, Con 0 shows LVDS is activated as external in Port 5 if that means anything. I will double check and take a screen shot and apply a couple things that I have in mind. Thanks.
 
@CaseySJ , Thank you for your kind explanation.

If my HDMI is on Port 6, I should have matching BusID, Index, and Type: BusID 0x04, Index 2, Type HDMI. But only two ports are to be used and LVDS/Con0 can be ignored. Con2 and Con3 are to be disabled, so Con1 can have Index 2. Basically repeated what you have said. But is it possible to match Con and Index:
Con0 = Index 0. BusID = (whatever you have now), Type = LVDS
Con1 = Index -1
Con2 = Index 2 BusID = 0x04, Type =HDMI
Con3 = Index -1

I am asking the same question again,

but to be sure...because for me this framebuffer patching is difficult to understand...

The port number is 5. If I select "Patch --> Apply Current Patches" Con 1 lights up in red and is shown to be DP. Con 0 LVDS is blank. If I don't select current patches, Con 0 shows LVDS is activated as external in Port 5 if that means anything. I will double check and take a screen shot and apply a couple things that I have in mind. Thanks.
Connector numbers (con0, con1, con2, con3) don't really matter! Any con can be assigned to any Index, so we should think in terms of Indexes only! I know this is tricky...

So please try these two options (and take screenshot if any row turns red):

Option 1:
Index 1, BusID 0x02, Type DP
Index 2, BusID 0x04, Type HDMI
Index 3, BusID 0x00, Type DUMMY
Index -1, BusID 0x00, Type DUMMY


Option 2:
Index 1, BusID 0x02, Type DP
Index 2, BusID 0x04, Type HDMI
Index -1, BusID 0x00, Type DUMMY
Index -1, BusID 0x00, Type DUMMY
 
Back
Top