Jump to content

Lenovo X1C5 : DP (or HDMI) working but can't get 4K output


jamieakers

Recommended Posts

Had a good search, tried many things but cannot get 4K on my Lenovo X1 Carbon Gen 5 (Kaby Lake, Intel HD Graphics 620 ... NOT UHD Graphics 620).  Setup using guide here: https://github.com/anathonous/X1C5-Hackintosh-OpenCore-MacOSX/ with my only changes being to use Heliport and itlwm.kext, and upgrading to latest versions of WhateverGreen.kext and AppleALC.kext. If it makes any difference I'm using a Dell U3219Q connected over USB-C (DP alt-mode) and it's recognised and working at 1440p, USB devices connected to the monitor also work fine (the USB isn't hotplug, not fussed about this.  Audio also doesn't work but again not fussed).

 

Booting from an Ubuntu USB stick and I get 4K - ruling out any issues with the cable or hardware.  DVMT is also set at 256MB in BIOS so I don't think there's an issue there.

 

Things I have tried...

 

- enable-hdmi20 on and off in config.plist.  No effect.

- manually specifying the port as being DP in config.plist with framebuffer-con2-type (con1 is the internal panel).  Black screen trying this.

- a variety of AAPL,ig-platform-id taken from the WEG guide.  No effect.

- igfxmpc in boot-args.  No effect.

- igfxtypec (just in case) in boot-args.  No effect.

 

I've also validated the EDID reported to macOS is correct (checked using IORegistryExplorer) in terms of the supported resolutions.

 

All help gratefully received, thank you!  I'd prefer to get it working over USB-C but if it has to be HDMI so be it.

config.plist.zip

Link to comment
Share on other sites

  • Administrators

You're highly unlikely to obtain 4K out of macOS with your current framebuffer patches:

FB_patches.png

 

Indeed, these apply the usual video memory patches required when Intel DVMT is limited to 32MB. If, as I understood, you've set DVMT to 256MB in BIOS, then you can get rid of your fbmem + stolenmem patches. These are not compatible with 4K operation which usually requires DVMT to be set at a minimum of 64MB.

 

See here: https://osxlatitude.com/forums/topic/17804-dvmtstolenmemfbmemcursormem-why-do-we-patch-these-for-broadwell-and-later

 

I therefore recommend you remove/comment out your fbmem and stolenmem patches. In the same respect, you're highly unlikely to require to set VRAM, i.e. unifiedmem, to 2GB.

Link to comment
Share on other sites

Thanks for looking at this and getting back to me so quickly!  Tried booting without fbmem + stolenmem but KP and refuses to boot.  Reinstating stolenmem gets the machine to boot without issue.  As using OC 0.9.5 at the moment switched to the debug version per Dortania's instructions.  Making me wonder whether the 256MB setting in BIOS does set DVMT.  It's labelled "Total Graphics Memory" but if there's some way to check please let me know - I couldn't find an obvious way from searching.

 

Attached the produced OpenCore logs.  If any other files would be handy to investigate please do let me know.

opencore-2025-09-30-193108.txt.zip

Link to comment
Share on other sites

  • Administrators

If there are no specific settings for DVMT in your laptop's BIOS, you'll have to scrounge the Net for valid information I'm afraid. But I'm pretty sure it is 32MB by default, especially if you look at the Clover config posted in the repo you mentioned in your opening post:

Lenoxo_X1_Carbon_DVMT.png

 

One thing you can do, though, is experiment with fbmem and stolenmem values in the manner I described in my article linked above. As long as the sum of them remains lower than DVMT pre-allocated value, you'll be Ok. So you could try to boot with fbmem+stolenmem set to, say 30MB, then boot with fbmem+stolenmem set to, say, 34MB. If you boot Ok with 30MB but not with 34MB, you'll know that DVMT is set to 32MB.

 

You use KBL FB 0x591B0000 which is defined as follows:

ID: 591B0000, STOLEN: 38 MB, FBMEM: 21 MB, VRAM: 1536 MB, Flags: 0x0000130B
TOTAL STOLEN: 39 MB, TOTAL CURSOR: 1 MB (1572864 bytes), MAX STOLEN: 136 MB, MAX OVERALL: 137 MB (144191488 bytes)
Model name: Intel HD Graphics KBL CRB
Camellia: CamelliaDisabled (0), Freq: 1388 Hz, FreqMax: 1388 Hz
Mobile: 1, PipeCount: 3, PortCount: 3, FBMemoryCount: 3
[0] busId: 0x00, pipe: 8, type: 0x00000002, flags: 0x00000098 - ConnectorLVDS
[2] busId: 0x04, pipe: 10, type: 0x00000800, flags: 0x00000187 - ConnectorHDMI
[3] busId: 0x06, pipe: 10, type: 0x00000400, flags: 0x00000187 - ConnectorDP
00000800 02000000 98000000
02040A00 00080000 87010000
03060A00 00040000 87010000
  • fbmem is set to 21MB
  • stolenmem is set to 38MB

You therefore need DVMT to be set to at least 64MB to support the native framebuffer without patching. There is no way around this.

Afaik, you'll only be able to set DVMT to 64MB by patching your BIOS and, from what I've read on the Net, it looks like you'd need some EPROM programming equipment...

 

NB: your Lenovo X1 Carbon is a laptop so I would have expected the built-in screen to be attached to the usual connector con0, not con1 as you stated earlier.

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...