Contribute
Register

Laptop Internal 4K Display Not Working

Status
Not open for further replies.
Joined
Apr 16, 2020
Messages
14
Motherboard
hp spectre x360
CPU
i7-1065G7
Graphics
intel iris plus
Mac
  1. MacBook
Mobile Phone
  1. iOS
Hello,

I Have a HP Spectre X360 2020
CPU: 1065G7
RAM: 16GB
GPU: Intel Iris Plus G7 Graphics
Display: 13.3" diagonal 4K UWVA BrightView micro-edge AMOLED multitouch (3840 x 2160)

I'm using the OpenCore 0.6.2 config built using Dortania's guide.

I've tried to boot with empty framebuffer and Internal will work, but with laggy graphics and no back light adjustment.
Later I use IceLake's framebuffer patch -igfxcdc -igfxdvmt in boot-args.
I got external monitor work but the internal display won't show anything!
And hackintool just showing external display.
I tried to extract EDID from empty framebuffer macOS then get nothing.

Later I used windows to extract EDID then I get full 128 bytes of EDID but without display's serial number.
I tried inject EDID extracted from windows, but internal display still didn't work.
But hackintool had show the display EDID that I inject.

I don't really know what can I try to resolve this problem.
Can someone help!!

Sorry for my poor English.....
 

Attachments

  • photo_2020-10-27 20.45.49.jpeg
    photo_2020-10-27 20.45.49.jpeg
    124.1 KB · Views: 358
  • スクリーンショット 2020-10-27 20.46.39.png
    スクリーンショット 2020-10-27 20.46.39.png
    232.1 KB · Views: 295
  • スクリーンショット 2020-10-27 21.17.10.png
    スクリーンショット 2020-10-27 21.17.10.png
    288.8 KB · Views: 323

Not a Desktop - Moved to Laptop Support.
 
My last post here was deleted, so it looks like, it's not allowed to share code informations here.
So the code tag behind the quote option should be deleted.

Whatevergreens -cdfon pixel clock patch won't work under big sur.

You'll need to research on the internet for a edid patch that limit the panel to 48hz.
This is the only way to get it working.

I posted this script here, but it was deleted so I think this is a disappointment.

So last try, I want to help you:

Python:
# Get and modify laptop 4k display edid for big sur
from subprocess import check_output
from base64 import b64encode
edid = check_output('cat /Users/dan/Documents/edid | grep -i "IODisplayEDID"',
                    shell=True, encoding='utf-8')
edid = edid.split('<')[1].split('>')[0]
print('Display EDID:', edid)
edid = edid[:108] + 'a6a6' + edid[112:] # set refresh rate to 48Hz
data = [int(edid[i:i+2], 16) for i in range(0, len(edid), 2)]
checksum = hex(256 - sum(data[:-1]) % 256)[2:]
print('Modified EDID:', edid[:-2] + checksum)
data[-1] = int(checksum, 16)
print('data:', b64encode(bytes(data)).decode('utf-8'))
print('you need to add data to PciRoot(0x0)/Pci(0x2,0x0)>AAPL00,override-no-connect')


Better way is to dump edid from linux like opensuse kde live with xrandr --props
Create a file that contain this with your edid values and run the script under macos
Note edit also the path to the file in that script.

Python:
"IODisplayEDID" = <00ffffffffffff0006af2b23000000001c1b0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a5100000180000000f0000000000000000000000000020000000fe0041554f0a202020202020202020000000fe00423133335a414e30322e33200a00f2>
 
Last edited:
This problem happens in Catalina too!
I had never made this internal display work!

Dump EDID from Linux with xrandr --props gave me 256 byte EDID.
The first 128 bytes are identical to the EDID that i get in windows!

I have done the 48Hz patch but still no luck for internal display.

Thanks for helping!
 
why is your processor showing like a i5 ?
if you show your EFI someone could throw an eye and maybe help you better ?
 
why is your processor showing like a i5 ?
if you show your EFI someone could throw an eye and maybe help you better ?
I don't know. I updated OpenCore to 0.6.2 then it turn into i5!

I have a Ryzen hackintosh also really weird.
OC 0.6.0 shows i5, but OC 0.6.2 shows Xeon W.......

Here is my EFI folder!
 

Attachments

  • EFI.zip
    2.8 MB · Views: 172
This problem happens in Catalina too!

4k displays are mess on Ice Lake laptops currently. By googling - you will find many topics in other hackintosh forums. Example: this dell xps. You can check their repository and check their workarounds, that might help you too, but it's still the problem.
 
This problem happens in Catalina too!
I had never made this internal display work!

Dump EDID from Linux with xrandr --props gave me 256 byte EDID.
The first 128 bytes are identical to the EDID that i get in windows!

I have done the 48Hz patch but still no luck for internal display.

Thanks for helping!
could you explain how have you converted the EDID?
 
You need to create a file which contain your edid which you extract from linux with xrandr --props

You'll get something like this:
Code:
00ffffffffffff0006af2b23000000001c1b0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a5100000180000000f0000000000000000000000000020000000fe0041554f0a202020202020202020000000fe00423133335a414e30322e33200a00f2

You create a file where you replace this with your edid.

edid.txt

Code:
"IODisplayEDID" = <00ffffffffffff0006af2b23000000001c1b0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a5100000180000000f0000000000000000000000000020000000fe0041554f0a202020202020202020000000fe00423133335a414e30322e33200a00f2>

Then you create file script.py with this content and change the path to your edid.txt path!

edid = check_output('cat /Users/dan/Documents/edid | grep -i "IODisplayEDID"',


Code:
# Get and modify laptop 4k display edid for big sur
from subprocess import check_output
from base64 import b64encode
edid = check_output('cat /Users/dan/Documents/edid | grep -i "IODisplayEDID"',
                    shell=True, encoding='utf-8')
edid = edid.split('<')[1].split('>')[0]
print('Display EDID:', edid)
edid = edid[:108] + 'a6a6' + edid[112:] # set refresh rate to 48Hz
data = [int(edid[i:i+2], 16) for i in range(0, len(edid), 2)]
checksum = hex(256 - sum(data[:-1]) % 256)[2:]
print('Modified EDID:', edid[:-2] + checksum)
data[-1] = int(checksum, 16)
print('data:', b64encode(bytes(data)).decode('utf-8'))
print('you need to add data to PciRoot(0x0)/Pci(0x2,0x0)>AAPL00,override-no-connect')


to run the command open terminal python3 /path/to/script.py

best regards
 
Status
Not open for further replies.
Back
Top