Contribute
Register

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

Hi @deeveedee - thanks for your recommendations. I can confirm the issue reproduces to me only when hdmi cable is inserted into dp to hdmi converter (I don't have dp-dp cable and my monitor don't have dp input port) even if I swap the hdmi cables/monitors.
Screenshot 2020-08-22 at 18.47.55.png
  1. I'm spoofing device-id 0x3e9b because I have problems with GPU acceleration at "native" 0x9BC8 device-id (the online gpu in-browser tests consumed all cpu cores and cinebench crashes before it display any window. When I use good device-id, the cinebench works good and the same browser tests doesn't consume cpu.)
    Screenshot 2020-08-22 at 16.59.20.png
    which according to this is natively supported
    I saw this intel gpu manual before I posted a message in this thread, and it confused me that I can not use the native device-id. I use 10.15.6 (19G73).
    I tested all device-ids that hackintool provides and here are the results:
    0x9BC8 - cinebench crash
    0x9BC5 - cinebench crash
    0x9BC4 - cinebench crash
    0x3E9B - cinebench starts
    0x3EA5 - cinebench starts
    0x3EA6 - cinebench starts
    0x3E92 - cinebench starts
    0x3E91 - cinebench starts
    0x3E98 - cinebench starts
    however nothing was changed with the broken image on the second monitor during the device-ids tests.
  2. maybe, not tested
  3. the following were tested with 0x9BC8 device-id
    0x3EA50009 mobile 3 58 MB 1 monitor (hdmi mb port)
    0x3E920009 mobile 3 58 MB no image on both monitors
    0x3E9B0009 mobile 3 58 MB 1 monitor (hdmi mb port)
    0x3EA50000 mobile 3 58 MB 1 monitor (hdmi mb port)
    0x3E920000 mobile 3 58 MB 1 monitor (hdmi mb port)
    0x3E000000 mobile 3 58 MB 1 monitor (hdmi mb port)
    0x3E9B0000 mobile 3 58 MB 1 monitor (hdmi mb port)
    0x3EA50004 mobile 3 58 MB 1 monitor (hdmi mb port)
    0x3EA50005 mobile 3 58 MB 1 monitor (hdmi mb port)
    0x3EA60005 mobile 3 58 MB 1 monitor (hdmi mb port)
    0x3E9B0007 desktop 3 58 MB 2 monitors as usual
    unfortunately, only desktop 0x3E9B0007 allowed me to use second display
I have tried selecting all the checkboxes in hackintool, the only change I saw is that when I selected VRAM 2048 or Enable HDMI20 (not sure), the artefacts were the same but a bit different and started to display just after the main monitor show the image (skipped the stage when main monitor shows good image and the second monitor is black, from my initial post)
Screenshot 2020-08-22 at 18.53.02.png
The strangest (to me) fact is that even if I only select 50Hz refresh rate (with 1080p) to second monitor, it always display good picture no matter how many times I reboot the pc.
----------------------------------------------------------
Looks like I've solved the problem by selecting CNConnectorAlwaysConnected flag on both ports. Now I can boot with both 1080p 60Hz without issues. So the only things I need to add to my config.plist are
Code:
<key>framebuffer-con1-flags</key>
<data>zwMAAA==</data>
<key>framebuffer-con2-flags</key>
<data>zwMAAA==</data>
Screenshot 2020-08-22 at 18.58.28.png
Thanks for your help! I will post if it is stable in next week.
 
Last edited:
Looks like I've solved the problem by selecting CNConnectorAlwaysConnected flag on both ports. Now I can boot with both 1080p 60Hz without issues. So the only things I need to add to my config.plist are
Code:
<key>framebuffer-con1-flags</key>
<data>zwMAAA==</data>
<key>framebuffer-con2-flags</key>
<data>zwMAAA==</data>
Thanks for your help! I will post if it is stable in next week.

That is some outstanding diagnostic and detective work! I will need to add Cinebench to my testing, as I have not tested Intel HD Graphics with Cinebench and never thought that it would reveal additional failure modes.

Your observation and conclusion about spoofing the device-id for 10th Gen is very good to know. @Halopend , @yrambler2001 's results should help you, too.

Again, outstanding work.

EDIT: @yrambler2001 - your config.plist specifies SMBIOS MacModel iMac19,1. I'm not sure if OC supports it yet, but iMac20,1 may be a better MacModel for you, since that model uses 10th Gen Intel.
 
Last edited:
iMac20,1 may be a better MacModel for you, since that model uses 10th Gen Intel.
Sounds good, maybe default device-id 0x9BC8 will work good on iMac20,1. I will try it in a few days
 
Sounds good, maybe default device-id 0x9BC8 will work good on iMac20,1. I will try it in a few days

iMac20,1 is very new. I read somewhere that Apple's general macOS releases don't always provide full support for latest Macs and that there are sometimes "special" macOS releases for these new Macs until the general macOS release catches up. In addition to changing your SMBIOS MacModel to iMac20,1 (if/when OC supports it), you may need to update macOS, too.
 
Looks like I've solved the problem by selecting CNConnectorAlwaysConnected flag on both ports. Now I can boot with both 1080p 60Hz without issues. So the only things I need to add to my config.plist are
Code:
<key>framebuffer-con1-flags</key>
<data>zwMAAA==</data>
<key>framebuffer-con2-flags</key>
<data>zwMAAA==</data>

I was trying to see if I could have guessed that CNConnectorAlwaysConnected flag was the culprit and have to admit I never would have suspected it. From what I know, the flag is for internal LVDS displays. Just for learning purposes, would you mind sharing how you arrived at the CNConnectorAlwaysConnected flag conclusion? Again, very good detective work!
 
how you arrived
The very first idea was "this is related with framebuffer memory size", since this is graphical artefact, happens when two monitors are connected (I thought 2*1080p consumed more vram so it need to enable fixes for 4k monitors) but nothing has changed after applying fixes for 4k.
The next idea was trying to apply config.plist video part from similar Comet Lake configs on GitHub but there are very few configs without dGPU. I found only one config that uses 2 monitors and iGPU. No success here, the main problem is that cpu/mb is very new.
The idea I avoided due to time-consuming is to try other framebuffers/device ids. I wrote a post here, maybe someone faced the same problem.
...
I have noticed that the monitor will show the artefacts if at the time of apple loading line, at half filled, the second monitor disconnects and show "no input" until the main monitor show password login confirmation. Then second monitor see the input (the backlight is on) but it is black.
When I switch to 50Hz (the issue disappears), at half filled apple loading line the second monitor disconnects too, but it looks like it turns on faster and does not show 'no input'.
Also, I found that I can fix the image issue by re-connecting cable to monitor after OS is loaded.
Since I have tried all checkboxes in patch-advanced in hackintool, LSPCON patches without success, I started trying to find some other parameters that is changeable, fortunately changed the CNConnectorAlwaysConnected flag firstly, and found that issue is gone. I have restarted the PC about 5 times - all ok. When the apple loading line was half filled, the second monitor disconnects as usual but reconnects fast, I can see the end of loading line on that monitor. Google showed me that people can uncheck this flag if they use internal screen and facing some problems.
https://www.insanelymac.com/forum/topic/334899-intel-framebuffer-patching-using-whatevergreen/?do=findComment&comment=2627325 said:
One way you might get around it is to turn off the CNConnectorAlwaysConnected flag. Then it will treat your screen as an external
This is very strange that I have to use this flag, it looks like mac os somehow fails to communicate with the monitor during startup or some patches failed to apply at startup when monitor disconnects without this flag.
 
Last edited:
Any chance anyone knows what configuration is best for an older GB z170X-Ultragaming?
A "copy-paste" solution would make my day! :crazy:

My Machine:

Gigabyte Z170X-Ultra Gaming
7700K
32 GB (Crucial Ballistix)
High Sierra 10.13.6 (Can't switch to Mojave because of the GT710, right?)

My computer recognises both GPUs but looks like I need to fix Framebuffer for the HD 630. When I try to output through HDMI, I get weird glitches and black screen. The computer freezes/reboots as soon as I plug a monitor in the iGPU's HDMI port.

Usually, I have no monitor plugged the iGPU, and two monitors A) VGA monitor (1280x1024) and B) HDMI (HP UWQHD 3440x1440 30Hz - [DP 60Hz, but never tested]) to the GT710.

OSX boots with The Nvidia, but shows the HD630 in both system information and iStats.

Am I supposed to boot with the HD630 (when I manage to fix the framebuffer issue, or the MINIDP cable from amazon gets here?): Would I finally be able that way to use both GPUs, one for displays and the other one for encoding/processing. Which would be the ideal setup?

I ran some GPU benchmarks, and the HD630 was detected, but I haven't found a way to enable Quick Sync, or use the HD630 to encode or be recognised by any streamings software (all of them, atually), nor Premiere Pro (I don't care now, I'm fed up with it) and Davinci Resolve.

I'm guessing you're going to recommend me to use the iGPU as the main one (booting OSX and using two 2k displays, and then use the GT710 for processing/encoding.

What else would be helpful? My EFI folder? My .plist file? Never done it, so some guidance would be very helpful.

I've been playing around with clover for years, but sometimes it gets to a point where I don't have the technical skills to understand what I'm doing/what's going on. Same with Hackintool, and I have been throguh 3 or 4 "DEFCON 1" moments because of tweaking things myself and "risking too much". One time I ended up 1 week without being able to work. Now I do backups of everything before touching anything. Lesson learned. And bought myself and external ssd SATA3 USB3 case to be able to fix any mistakes. Hit and miss, all the way.

Not a newbie, but I just registered and this is my first post.

Cheers everyone! This website has been very helpful for many years now.

Sean
 

Attachments

  • GPU.png
    GPU.png
    87.2 KB · Views: 105
  • General 2.png
    General 2.png
    27.7 KB · Views: 96
  • General 1.png
    General 1.png
    23.3 KB · Views: 87
  • iGPU.png
    iGPU.png
    36.4 KB · Views: 101
  • Displays.png
    Displays.png
    27.9 KB · Views: 99
  • istats.png
    istats.png
    23.3 KB · Views: 88
  • BIOS 1.jpeg
    BIOS 1.jpeg
    196.3 KB · Views: 88
  • BIOS 2.jpeg
    BIOS 2.jpeg
    192.5 KB · Views: 79
  • BIOS 3.jpeg
    BIOS 3.jpeg
    185.9 KB · Views: 100
General Framebuffer Patching Guide using Hackintool...

Excellent work!!! Really really good. Thank you so much for it. I've manually added the Z390 Aorus Elite patch and the Intel 630 works very well. Thanks again!!!
 
General Framebuffer Patching Guide using Hackintool...

Excellent work!!! Really really good. Thank you so much for it...

After trying for a while I have seen that, when the PC comes out of sleep, the system is reactivated except for the screen itself, which remains black. Restarting from the keyboard the screen works fine again. I have not figured out how to fix this problem that prevents the Intel Graphics 630 from being used successfully.
 
After trying for a while I have seen that, when the PC comes out of sleep, the system is reactivated except for the screen itself, which remains black. Restarting from the keyboard the screen works fine again. I have not figured out how to fix this problem that prevents the Intel Graphics 630 from being used successfully.

Sounds like you're very close to a fully working solution. Post your problem reporting files if you want help. Ideally, your problem reporting files will include your EFI (including sanitized config.plist, CLOVER/kexts and ACPI/patched), your IORegistry dump and the output of 'sudo kextcache -i /' if you install 3rd-party kexts in /L/E.

EDIT: If you are using CLOVER, use blackdragon74's gen_debug tool as I have described in here.
 
Back
Top