Jump to content

How to fix black screen in High Sierra


black.dragon74

Recommended Posts

Hello friends,
Many of you have noticed that after upgrade to high sierra whenever you machine sleeps, be it a display sleep or a system sleep, the screen turns out fully white with garbled lines, or it might turn black with just the cursor moving. If you try and press few keys you will find out that the machine works but the display doesn't.
 
If you want to know a little background info, read on, else skip to fix.
 
On my ASUS R541UJ this bugged me a lot. I tried hell lot of things like, re patching DSDT, trying with all 15 ig-platform-id (for Kabylake), still, the issue persisted.
 
I also have an ASUS A555LA (which I am trying to make a perfect MacBook Air). So, in my process of making my A555LA a perfect MacBook I added a ALS (ambient light sensor device) and then, changed vendor-id along with product-id of the laptop's display to that of Apple's display i.e. PID: 0x9cf2 VID: 0x610 for MacBook Air's display..
 
Whatever I do on my A555LA, I replicate the same on my 2 other ASUS laptops. So, I did the same on my R541UJ (the one affected by this annoying bug)
 
And to my surprise, that issue was fixed! Then, I disabled the ALS device in my custom SSDT (I generally make a dynamic configurable SSDT that works for all my machines, See here) and that issue didn't come back.
 
So, I finally came to the conclusion that it was due to incorrect vendor-id and product-id of my display in IODisplayEDID or EDID.
 
Enough talking, let's see how you can fix this in a few simple steps.
 
How to fix:
In order to fix this, as you might already know from above, we need to change our display's product and vendor id to that of Apple's display.
 
There are 3 ways for this, Injecting custom EDID using clover, Using a display override, Using a custom override kext (DispalyMergeNub). I love CLOVER so will be covering that part of the fix in this guide. Also, injecting EDID with clover is preferred as it will also work when booting recovery partition. (Not the same with Display Overrides and DisplayMergeNub)
 
Update your CLOVER to latest version (nothing to do with this fix but is a good idea to have you boot loader up to date)
 
Download Darwin Dumper from here
 
Download FixEDID app from here
 
Download my script attached to this post.
 
Open Darwin dumper and uncheck everything except EDID. Then, select run from the left pane. It will dump your EDID and then it will open a folder where it dumped the files.
 
In the folder you will find an EDID folder. Upon opening it you will see 3 files namely, EDID.bin, EDID.hex, EDID.txt (All three files are your EDID dump except in different formats).
 
We need the one in BIN format for FixEDID.app
 
Copy EDID.bin from DarwinDump*/EDID to your Desktop (Dump* is the darwinDumper output folder)
 
Open FixEDID.app and select open EDID binary file. Choose the EDID.bin file you copied to desktop.
 
If you look below "Open EDID binary file" button, you will see a drop down menu saying "Apple iMac Display 16:10"
 
Select it and choose "Apple MacBook Air Display 16:9" (Note: You may try experimenting with different models, I personally use "Apple MacBook Air Display 16:9" on my A555LA and "Apple MacBook Pro Display 16:10" on my R541UJ)
 
Make sure display class is set to "AppleBacklightDisplay" for we are overriding our internal LVDS display. (AppleDisplay is used for external displays like that on HDMI or DP)
 
Click on Make button (Note: You won't see any sort of confirmation but the app has done it's work)
 
Close FixEDID and come back to your desktop. You will see a host of new files there. (3 files to be precise)
 
For this guide, you just need DisplayVendorID-xxx folder. Open it any then you will find a file named "DisplayProductID-xxxx"
 
Copy this file to the Desktop.
 
Now we need to extract EDID that is in base64 format and then convert it to HEX format as required by CLOVER.
 
Worry not, I got you covered. Now is the time to run my script.
 
Assuming my downloaded script is in Downloads folder, open terminal and type:
 

# Change working directory
cd ~/Downloads

# Make script executable
chmod a+x get_edid.sh

# Run and get EDID to inject
./get_edid.sh ~/Desktop/DisplayProductID*

`
This script wil give you EDID you need to inject using CLOVER, like:

term.jpeg
 
Copy that EDID and paste it in your config.plist under Graphics > EDID > Custom (You can use clover configurator as that will save you from manual PLIST editing which is not recommended for novice users)
 
Also, set Boolean Inject to True (YES) under config.plist > Graphics > EDID.
 
See below screenshots for reference:
 
Any Plist Editor(Xcode):
Screen Shot 2017-11-29 at 11.44.05 AM.png
 
Clover Configurator:
Screen Shot 2017-11-29 at 11.44.30 AM.png
 
Reboot and Voilà! You won't face that dreaded issue ever again until you remove custom EDID. LOL.

 

You can verify if the EDID is being injected by opening terminal and typing:

ioreg -l | grep "IODisplayEDID" 

`

The output should match the output of get_edid.sh

 

Problem Reporting:

See How to generate proper problem reporting files

 
Note: This issue mostly seems to effect machines running High Sierra on Kabylake hardware (maybe Skylake too?). I have personally tested this on Sierra (with and without skylake spoofing) turns out that Sierra is not affected by this.

 

Note: Upon booting up with custom EDID in place you will see that your colors are not such bright and crisp. YMMV. (Coz our's isn't a Apple branded display :| ). To fix that, open system preferences > Display. Select "Color" tab and choose "Apple RGB Display"

 

Hope this helped someone!

Regards

get_edid.zip

  • Like 8
  • Thanks 1
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...