Jump to content
Followers 0
McSonite

OpenCore and AiO PC with Built-in display eDP connector Intel HD graphics 4600

23 posts in this topic

Recommended Posts

Hi All,

 

This is my first OpenCore project. I'm running OC 0.6.3 and Catalina 10.15.7 in HP EliteOne 800 G1 All-in-One PC. 

 

This is an All-in-One PC (you might have decoded this from the PCs name :) ) and thus has an LVDS display. There is also one DP connector at the back of the machine. 

 

The problem is that I cannot get the iGPU running with 3D acceleration on the LVDS display.

 

I have tried every gimmick in the Patching Whatevergreen guide. Best results I get when running with ig-platform-id 0300220D, framebuffer-stolenmem 00003000 and framebuffer-fbmem 00009001. 

 

But there is a catch here:

 

Booting with above properties the LVDS goes black after the DSMOS has arrived. I had a feeling that graphics are actually displayed through the DP connecter. So, I went and grabbed an external display and connected it to the DP connector - and voila I have 3D acceleration. 'About This Mac' also shows that there is 1536MB of memory for the Intel HD Graphics 4600.

 

I have spent vast amount of hours (60+) to get the 3D acceleration working on LVDS with no luck.

 

Notes:

I have gone through all the Haswell specific ig-platform-ids for both desktop and laptop. Most of these work but only without 3D acceleration and 7MB of memory for the graphics.

If DP is connected during the boot process the machine hangs with error: Adding AGDP mode validate property. If I let the machine boot without DP connected so that the LVDS gets black and connect the DP after that I get the picture on the DP connected screen.

When I started the project I had AppleALC kext installed and with most of the ig-platform-ids the machine kernel paniced during the boot process. I replaced the AppleALC with VoodooHDA and after that the kernel panics were gone - and I also got sounds working.

 

I would appreciate a lot if someone could give me advice on how to get the 3D accelerated picture on the LVDS display.

 

Regards

McSonite

  

Share this post

Here is the config file and snapshots from IOreg excerpt. I was unable to  mask out the SN and other stuff from the IOReg output therefore I have attached only screenshots concerning the IGPU2.

 

Please ask for more screenshots if needed.

 

Screenshot 2020-11-30 at 8.16.42.png

Screenshot 2020-11-30 at 8.20.26.png

Screenshot 2020-11-30 at 8.20.51.png

config.plist.zip

Edited by McSonite
zipped config.plist
Share this post

Sorry but such screenshots are just useless. If you have concerns about showing your serial numbers, make a backup of your current config and change your serial numbers before posting the required IOReg. You know, good common sense...

 

There's a typo in the properties injection you've defined in your config file:

framebuffer-fbmm

instead of

framebuffer-fbmem

So that injection is clearly without effect; not that this is the reason for your built-in screen issue, but...

 

Please note that framebuffer memory size and stolen memory size don't usually require patching on HD4600 graphics so I'm not sure there's anything to gain with your properties injection in that respect (especially as you inject the same StolenMem value as the default one!). The only thing that usually requires patching is the cursor memory size if graphics get glitchy (increase to 9MB).

 

If you look into (Catalina's) Azul framebuffer, you'll see:

1) desktop layout 0x0D220003

0300220D 00030303 00000002 00003001
00000000 00000060 99140000 99140000
00000000 00000000 01050900 00040000
87000000 02040A00 00040000 87000000
03060800 00040000 11000000 FF000000
01000000 40000000 020C0000 01010000
04000000 00000000 0E000000 00000000

where:

0300220D -> FB id
00030303 -> Mobile:00 PipeCount:03 PortCount:03 MemCount:03
00000002 -> StolenMem:32MB
00003001 -> FBMem:19MB
00000000 -> CursorMem:0MB
00000060 -> VRAM:1536MB
99140000 -> Freq:5273Hz
99140000 -> MaxFreq:5273Hz
00000000 00000000
01050900 00040000 87000000 -> con0:DP
02040A00 00040000 87000000 -> con1:DP
03060800 00040000 11000000 -> con2:DP
FF000000
01000000 40000000 020C0000 01010000
04000000 00000000 0E000000 00000000

2) mobile layout 0x0A260006

0600260A 01030303 00000002 00003001
00006000 00000060 D90A0000 D90A0000
00000000 00000000 00000800 02000000
30000000 01050900 00040000 87000000
02040900 00040000 87000000 FF000000
01000000 40000000 0F000000 01010000
04000000 00000000 0E000000 00000000

where:

0600260A -> FB id
01030303 -> Mobile:01 PipeCount:03 PortCount:03 MemCount:03
00000002 -> StolenMem:32MB
00003001 -> FBMem:19MB
00006000 -> CursorMem:6MB
00000060 -> VRAM:1536MB
D90A0000 -> Freq:2777Hz
D90A0000 -> MaxFreq:2777Hz
00000000 00000000
00000800 02000000 30000000 -> con0:LVDS/eDP
01050900 00040000 87000000 -> con1:DP
02040900 00040000 87000000 -> con2:DP
FF000000
01000000 40000000 0F000000 01010000
04000000 00000000 0E000000 00000000


This is further detailed in WEG manual or Hackintool which decode the above Azul framebuffers as follows:

ID: 0D220003, STOLEN: 32 MB, FBMEM: 19 MB, VRAM: 1536 MB, Flags: 0x00000402
TOTAL STOLEN: 52 MB, TOTAL CURSOR: 1 MB (1572864 bytes), MAX STOLEN: 116 MB, MAX OVERALL: 117 MB (123219968 bytes)
Camellia: CamelliaDisabled (0), Freq: 5273 Hz, FreqMax: 5273 Hz
Mobile: 0, PipeCount: 3, PortCount: 3, FBMemoryCount: 3
[1] busId: 0x05, pipe: 9, type: 0x00000400, flags: 0x00000087 - ConnectorDP
[2] busId: 0x04, pipe: 10, type: 0x00000400, flags: 0x00000087 - ConnectorDP
[3] busId: 0x06, pipe: 8, type: 0x00000400, flags: 0x00000011 - ConnectorDP
01050900 00040000 87000000
02040A00 00040000 87000000
03060800 00040000 11000000

and

ID: 0A260006, STOLEN: 32 MB, FBMEM: 19 MB, VRAM: 1536 MB, Flags: 0x0000000F
TOTAL STOLEN: 52 MB, TOTAL CURSOR: 1 MB (1572864 bytes), MAX STOLEN: 116 MB, MAX OVERALL: 117 MB (123219968 bytes)
Camellia: CamelliaDisabled (0), Freq: 2777 Hz, FreqMax: 2777 Hz
Mobile: 1, PipeCount: 3, PortCount: 3, FBMemoryCount: 3
[0] busId: 0x00, pipe: 8, type: 0x00000002, flags: 0x00000030 - ConnectorLVDS
[1] busId: 0x05, pipe: 9, type: 0x00000400, flags: 0x00000087 - ConnectorDP
[2] busId: 0x04, pipe: 9, type: 0x00000400, flags: 0x00000087 - ConnectorDP
00000800 02000000 30000000
01050900 00040000 87000000
02040900 00040000 87000000

So, you'll see that:

  1. Azul desktop framebuffer 0x0D220003 defines 3 x DP output ports by default. No LVDS port.
  2. Azul mobile framebuffer 0x0A260006 defines 1 x LVDS output and 2 x DP ports by default.

 

2 x questions:

  • are you sure your internal display is actually of LVDS type?
  • what CPU model is your AIO computer fitted with?

 

You could try the mobile framebuffer with the associated SMBIOS (eg: MBP11,1) for instance but you really should confirm built-in screen type 1st and foremost. If it really is LVDS, you could try and inject that type (02000000) to the 1st connector of the framebuffer, knowing that you'd probably have to experiment with Index and BusId too. But know that iMac 14,1/14,4 have their built-in display attached to ports of DP connector types...

 

Another thing to try is boot arg agdpmod=pikera. This effectively bypasses AppleGraphicsDevicePolicy kext which can restrict display output capabilities of given Mac models and therefore Hackintoshes that use their SMBIOS profiles.

Share this post

Thank you for your quick reply. 

 

I actually am not concerned about the SN shown. I just read this from the New Users' lounge that you should take them away. :)

 

Typo in fbmem was my bad. I just tried to replicate the config.plist that I had during the time of the IOReg capture.

 

I'm not 100% sure about the display type but I suspect that it is LVDS because there is a BIOS setting for this i.e. setting the LVDS type: auto - Samsung - LG

Processor is: Intel Core i5-4570S

 

I have also tried this laptop buffer ID 0A260006 but machine posts with it only if I add -igfxvesa to the boot args.

 

I have also tried changing the connector type with following parameters (running the mentioned recommended desktop buffer)

framebuffer-con1-enable | data | 01000000

framebuffer-con1-type | data | 02000000

 

I will go on testing the SMBIOS 11,1 and also agdp=pikera

 

ioreg_snap.zip

Share this post

Please note that, as shown in your IOReg, port #0 is actually on con2 in framebuffer 0x0D220003. You may also notice that con2 registers as your boot display. This is actually consistent to what an iMac14,1 would show for instance: built-in display attached to FB@2. con0 is port #5 and con1 is port #7 (this is what your DP external screen attaches to).

 

So, to me, con2 is the connector you need to work on...

 

Given that your AIO has a quad-core i5-4570S CPU, I would also suggest you change your SMBIOS to iMac14,1 (quad-core i5-4570R + Iris Pro 5200 graphics) rather than iMac14,4 (dual-core i5-4260U + HD 5000 graphics).

Share this post

I have now tested with SMBIOS MacBookPro11,1 and with and without agdp=pikera - no luck.

 

The only way to get the machine post is with the fb 0x0D220003 and it starts with black screen on the LVDS display. 

 

I changed the SMBIOS back to iMac14,4

 

I think I just have to give up 'cause I don't grasp the patching system and or how it correlates with the SMBIOS.

Share this post

Well, it's really not that difficult:

1) Inject the following properties for your iGPU located at PciRoot(0x0/Pci(0x2,0x0)

AAPL,ig-platform-id             0300220D        DATA
framebuffer-patch-enable        01000000        DATA
framebuffer-con2-enable         01000000        DATA
framebuffer-con2-type           02000000        DATA

2) add boot arg agdpmod=pikera to your existing list in NVRAM section

3) for optimum CPU power management, whilst retaining support for HD4600 graphics, change your SMBIOS to iMac14,1. You may use Clover Configurator or GenSMBIOS tool to generate the required data, then add it to your OC config as documented in Dortania's OpenCore guide.

Share this post

Ok. So, I installed Windows (yeah, I know, sorry about Win. None of the Linux distros I tried weren't running the Intel HD correctly i.e. screen res only 800x600 and they started w/ nomodeset or graphics safe mode only) in order to get more info on the Built-in-display. Intel HD Graphics Control Panel tells me that the connector type is actually Embedded DisplayPort.

 

Now the question goes:

 

What connector type should I choose for con2 if I'm using framebuffer 0D220003?

 

Currently the deafult is DP and with that the screen is black.

Share this post

Is there something to debug this with?

 

I'm not familiar with OC - Clover differences. In Clover there seems to be kexts for correcting the black screen issue and OC just tells to remove all the kexts and go with the WEG kext and patch it.

Share this post

Found out something while tweaking the MacOS via remote connection. VNC works while the screen is black.

 

When running IORegExplorer it seems that FB2 connector type changes to 00080000 (HDMI). I suspect that the VoodooHDA or audio mapping to HDMI is the culprit in someway.

 

I added -igfxnohdmi and then the connector type was 00040000.

 

Edited by McSonite
Corrected the connector types
Share this post

11 minutes ago, McSonite said:

I'm following Dortania's guide to patch BusIDs but whatever I do I get HDMI defined for each FB as a connector type. BusID for indices 1 and 2 is set to 00 because I want to disable these. 

 

Can someone shed some light and tell me why?

 

 

 

 

ioreg_allhdmi.zip

config.plist

Let me do it myself. I was missing framebuffer-patch-enable.

 

I'm losing my mind trying to understand this patching.

 

Index, BusID, Pipe, conX, port, FB how it is in SMBIOS. Just cannot find a guide that matches these terms. 

 

I understand that this sounds like rantings of a blubbering idiot but...

 

port #0 is actually on con2

con0 is port #5

con1 is port #7

 

How to for example decipher that? 

 

It needs not to be explained here but I would like someone to refer to a link where I can read this.

 

 

 

 

Share this post

Simple question: 

 

When the connector is eDP and I'm patching a framebuffer: Which connector type am I supposed to use LVDS 02000000 or Display Port 00040000?

 

I have followed https://dortania.github.io/OpenCore-Post-Install/gpu-patching/intel-patching/busid.html#mapping-the-video-ports, used FB 0x0D220003 and gone though all the possible iterations with the BusIDs always disabling two of them and I have been using connector type 02000000 i.e.

 

01010900 02000000 87000000
02000A00 00040000 87000000
03000800 00040000 11000000

 

01020900 02000000 87000000
02000A00 00040000 87000000
03000800 00040000 11000000

 

01030900 02000000 87000000
02000A00 00040000 87000000
03000800 00040000 11000000

 

etc.

 

and 

 

01000900 00040000 87000000
02010A00 02000000 87000000
03000800 00040000 11000000

 

01000900 00040000 87000000
02020A00 02000000 87000000
03000800 00040000 11000000

 

01000900 00040000 87000000
02030A00 02000000 87000000
03000800 00040000 11000000

 

etc.

 

and 

 

same for the index 3.

 

And also I have tested all iterations with flags being 0x8 (https://github.com/acidanthera/WhateverGreen/blob/master/Manual/IntelFramebuffer.bt

   /* Normally set for LVDS displays (i.e. built-in displays) */

       uint8_t CNConnectorAlwaysConnected :1; /* 0x8 */

 

i.e.

 

01010800 02000000 87000000
02000A00 00040000 87000000
03000800 00040000 11000000

 

01020800 02000000 87000000
02000A00 00040000 87000000
03000800 00040000 11000000

 

01030800 02000000 87000000
02000A00 00040000 87000000
03000800 00040000 11000000

 

etc.

 

and same for indices 2 and 3

 

I still always get black screen on the built-in-display

 

(SMBIOS is currently set to iMac14,1)

Share this post

  • McSonite changed the title to OpenCore and AiO PC with Built-in display eDP connector Intel HD graphics 4600

No, no, no on no...

 

20+ hours used. No luck.

 

I have now tried to inject EDID of the built-in display.

 

How to tell which one of the following to use?

 

AAPL00,override-no-connect

AAPL01,override-no-connect

AAPL02,override-no-connect

 

 

 

 

 

Edited by McSonite
Forget about the config.plist. It is full of errors.
Share this post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×