Contribute
Register

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


Thanks for your patient. I have tried your advices but no luck here. Once press a key the LED on the cases turns on but the monitor goes black screen. I think this problem is due to the video card. I uploaded my efi folder and some screenshot to make the things clear.
Screen Shot 2019-01-30 at 7.55.56 PM.png
 

Attachments

  • EFI.zip
    20.9 MB · Views: 85
Thanks for your patient. I have tried your advices but no luck here. Once press a key the LED on the cases turns on but the monitor goes black screen. I think this problem is due to the video card. I uploaded my efi folder and some screenshot to make the things clear.View attachment 383676

I've made several changes to your EFI:
  • Disabled USB port limit patches because you have a custom USB SSDT.
  • Fixed some errors in the USB SSDT (ports HS01 to HS08 changed to type 0x03 because they are dual USB 2.0 and 3.0 ports).
  • Added AppleALC and removed entries in config.plist for AppleHDA. Your motherboard has ALC1220 which is supported by AppleALC 1.3.4.
  • Added USBInjectAll and XHCI-Unsupported to CLOVER/kexts/Other.
However, please post a screenshot of your /Library/Extensions (/L/E) folder. Additional changes may be needed. For example:
  • AppleHDA should be removed
  • NullCPUPowerManagement should be removed
Kernel cache much be rebuilt after making any change to /L/E folder. You can run KextUtility rebuild caches and repair permissions.
 

Attachments

  • EFI-xaviewniu.zip
    21.8 MB · Views: 78
Hi from me! @CaseySJ great great guide!!!! By looking into WhateverGreen/kern_fb.hpp which is what Hackingtool shows as a brief overlay:

Code:
/* Watch out, this is really messy (see AppleIntelFramebufferController::MapFBToPort).
* I am not fully sure why this exists, and recommend setting index to array index (i.e. the sequential number from 0).
*
* The only accepted values are 0, 1, 2, 3, and -1 (0xFF). When index is equal to array index the logic is simple:
* Port with index    0    is always considered built-in (of LVDS type) regardless of any other values.
* Ports with indexes 1~3  are checked against type, HDMI will allow the use of digital audio, otherwise DP is assumed.
* Port with index    0xFF is ignored and skipped.
*
* When index != array index port type will be read from connector[index].type.
* Say, we have 2 active ports:
* 0 - [1]     busId 4 type LVDS
* 1 - [2]     busId 5 type DP
* 2 - [3]     busId 6 type HDMI
* 3 - [-1]    busId 0 type Dummy
* This will result in 2 framebuffers which types will be shifted:
* 0 - busId 4 type DP
* 1 - busId 5 type HDMI
* In fact BusId values are also read as connector[index].busId, but are later mapped back via
* AppleIntelFramebufferController::getGMBusIDfromPort by looking up a connector with the specified index.
* The lookup will stop as soon as a special marker connector (-1) is found. To illustrate, if we have 2 active ports:
* 0 - [1]     busId 4 type LVDS
* 1 - [2]     busId 5 type DP
* 2 - [-1]    busId 6 type HDMI
* 3 - [-1]    busId 0 type Dummy
* The result will be 2 framebuffers which types and the second busId will be shifted:
* 0 - busId 4 type DP
* 1 - busId 6 type HDMI
* It is also used for port-number calculation.
* - LVDS displays (more precisely, displays with CNConnectorAlwaysConnected flag set) get port-number 0.
* - Other displays go through index - port-number mapping: 1 - 5, 2 - 6, 3 - 7, or fallback to 0.
*/

So what is the 'best practise'? Should I set con0 index to 0 ? My computer is an HP with 2 DPs (max 2 monitors)

Thanks!
 
@sakoula

After a great deal of experimentation I concluded that the information presented in that overlay or tooltip is no longer applicable, at least not in macOS 10.13 and 10.14.

So if you only follow the Guide (i.e. disregard the overlay) you should be able to determine the proper configuration for your HP computer.

As mentioned in the Guide, connector numbers do not matter. You can assign any Index to any connector. Indexes are important because Index numbers are not arbitrary. Index 0 always refers to Port 5. Index 1 to Port 6, and Index 2 to Port 7.

Once you determine which Port(s) are highlighted in red when you connect your DisplayPort monitor, you can assign the corresponding Index to any connector (i.e. to any of the first 3 row in the table).
 
I've made several changes to your EFI:
  • Disabled USB port limit patches because you have a custom USB SSDT.
  • Fixed some errors in the USB SSDT (ports HS01 to HS08 changed to type 0x03 because they are dual USB 2.0 and 3.0 ports).
  • Added AppleALC and removed entries in config.plist for AppleHDA. Your motherboard has ALC1220 which is supported by AppleALC 1.3.4.
  • Added USBInjectAll and XHCI-Unsupported to CLOVER/kexts/Other.
However, please post a screenshot of your /Library/Extensions (/L/E) folder. Additional changes may be needed. For example:
  • AppleHDA should be removed
  • NullCPUPowerManagement should be removed
Kernel cache much be rebuilt after making any change to /L/E folder. You can run KextUtility rebuild caches and repair permissions.

Thanks for your reply (as usual), I found you added some kexts that has already existed in my /L/E folder. So whether should I delete them from /L/E? There is the screenshot of my /L/E folder.
 

Attachments

  • Screen Shot 2019-01-31 at 5.03.56 PM.png
    Screen Shot 2019-01-31 at 5.03.56 PM.png
    972.3 KB · Views: 70
Thanks for your reply (as usual), I found you added some kexts that has already existed in my /L/E folder. So whether should I delete them from /L/E? There is the screenshot of my /L/E folder.
If the kext I added is newer than the one in /Library/Extensions, then please keep the newer one and delete the older one. If you add or delete any files from /Library/Extensions, you must run "Kext Utility" to rebuild kernel cache before rebooting.
 
If the kext I added is newer than the one in /Library/Extensions, then please keep the newer one and delete the older one. If you add or delete any files from /Library/Extensions, you must run "Kext Utility" to rebuild kernel cache before rebooting.

Hi, CaseySJ. I follow your advice and the monitor turns on after waking the computer. But there are some problems occurred:
  • The audio not works.
  • The USB devices unexpectedly disconnect after waking.
So how to resolve it? Thanks in advance!
 

Attachments

  • Screen Shot 2019-01-31 at 5.39.07 PM.png
    Screen Shot 2019-01-31 at 5.39.07 PM.png
    128.4 KB · Views: 79
Hi, CaseySJ. I follow your advice and the monitor turns on after waking the computer. But there are some problems occurred:
  • The audio not works.
  • The USB devices unexpectedly disconnect after waking.
So how to resolve it? Thanks in advance!
Can you compress and upload your CLOVER folder from Mojave SSD?
 
Can you compress and upload your CLOVER folder from Mojave SSD?

Of course yes! I'm trying to add the newest AppleALC which downloaded from github and rebuild kextcache again. There are some problems occurred. Terminal tells me the "AppleALC.kext has no Info.plist file". So should I download another one that not the latest version?
 

Attachments

  • EFI-20190131-1.zip
    21 MB · Views: 74
  • Screen Shot 2019-01-31 at 5.53.31 PM.png
    Screen Shot 2019-01-31 at 5.53.31 PM.png
    215.7 KB · Views: 90
Back
Top