I don't think 5K is possible in EFI. Maybe it's 4K? Take a screenshot by pressing F10 in Clover and examine it in Preview.app. Also take a photo using your phone or iPad. Also look at the boot log for the screen resolution.
Remove custom resolutions for these tests.
Make sure boot arguments includes nvspanmodepolicy=1 in clover config.plist
Does your 1080 work with normal displays? If not, then get that working first.
For 5K, after computer starts up and you can do screen sharing, pull the plug on the LG, then plug it back in. Does it crash? Does the display come back on? I don't think this will work because Thunderbolt doesn't support hot swap on hackintosh.
I don't think anyone has gotten the LG 5K to work with Nvidia graphics in macOS. If you want 5K with Nvidia on macOS, then you may need to try a different monitor (I think I've only heard of the Dell 5K working with Nvidia). Or you could switch to AMD.
One DisplayPort cable should work for 4K. You shouldn't have to do anything special for that.
thanks a lot:
1.Does your 1080 work with normal displays? <--A: Yes, I can get another 1080p monitor works with lilu.kext and nvidiagraphicsFix.kext .
2. I don't think 5K is possible in EFI. <--A: The EFI surely in 5k I am using 2 dp1.2 plug into the TB3 AIC, I can prove it tommorrow when I go back to the computer. MacOs report it 99MB vram when I boot into the Macos Desktop.
3. nvspanmodepolicy=1 in clover config.plist <--A: nvspanmodepolicy=1 is always that, also with nvda_drv=1, no luck.
4. pull the plug on the LG, then plug it back in. Does it crash? <--A: Yes, I have tried a dozen times. OS didn't crash, because I can using ssh to access it, but screen has no signal, stay black. I can not access it with screen sharing, screen sharing client show connecting forever at most of time(it work when I just using the other 1080p monitor). Hot plug seems work in rarely change, when I boot into the desktop with 1080p display and keep plug in/out.
5. One DisplayPort cable should work for 4K. You shouldn't have to do anything special for that. <--A: No, it dose not work, black screen either. I have tried a dozen times. without webdriver, I can get into the MacOS desktop with 3840x2160. It seems connection of the hardward just fine. So bad to me, I've heard most of people get it work in one cable with lower resolution, but without me. The LG ultrafine 5k just like a black brick。。。
I have another hackintosh build with dell up2715k + gtx 1080. It works almost perfect with two dp1.2 .
I am trying to modify the NVDAResmanWeb.kext. I have found it have some special codes for dell up2715k. I am still trying to understand it, then try to make a hack. Hope it works with edid inject or a kextpatch
Is it a work through? Any one can have some advise for me? I don't know how to debug it, and don't know how to make kext print a debug log either. It is great if someone can tell me how to debug a kext in macos.
code looks like:
// EDID Version........1.4
// Manufacturer........DEL (90AC)
// Product ID..........16566 (40B6)
// Serial Number.......32393853
if (((*(int16_t *)(rbx + 0x4) & 0xffff) != 0xac10) || ((*(int16_t *)(r13 + 0xa) & 0xffff) != 0x40b6)) goto loc_2ac65d//free , check r12 is zeror and return;
loc_2ac2db:
*var_568 = 0x0;
*(int32_t *)(var_568 + 0x8) = var_578;
*(int32_t *)(var_568 + 0xc) = 0x0;
if (_NvRmControl(*(int32_t *)(r12 + 0x8), *(int32_t *)(r12 + 0x14), 0x730122, var_568, 0x10) == 0x66) {
rbx = var_568;
do {
_IOSleep(var_55C);
} while (_NvRmControl(*(int32_t *)(r12 + 0x8), *(int32_t *)(r12 + 0x14), 0x730122, rbx, 0x10) == 0x66);
}
rsi = var_560;
if (rsi != 0x0) {
sub_2ae8ea(r12, rsi, 0x0);
rbx = *(int32_t *)0x0;
if (rbx != 0x0) {
rbx = rbx << 0x4;
*(int16_t *)(rbx + 0x5f7f60) = *(int16_t *)(r15 + 0x37c) & 0xffff;
*(int16_t *)(rbx + 0x5f7f62) = 0x40b6;
*(int16_t *)(rbx + 0x5f7f6c) = sub_2ace99(r15);
if (var_569 <= 0x2) {
*(int8_t *)(rbx + 0x5f7f64) = var_569;
}
}
}
rax = 0xffffffffffffffc1;
rcx = 0x5f7f74;
rdx = 0x0;
rsi = 0x0;
do {
if ((*(int16_t *)(rcx + 0xfffffffffffffffe) & 0xffff) == 0x40b6) {
rbx = *(int8_t *)rcx;
if (rbx != 0x2) {
if (rbx == 0x1) {
*(int16_t *)0x5f8362 = rax + 0x40;
rsi = 0x1;
}
}
else {
*(int16_t *)0x5f8360 = rax + 0x40;
rdx = 0x1;
}
}
rcx = rcx + 0x10;
rax = rax + 0x1;
} while (rax != 0x0);
if ((rsi == 0x0) || (rdx == 0x0)) goto loc_2ac65d//free , check r12 is zeror and return;
loc_2ac41b:
*(int32_t *)var_588 = *(int16_t *)(((*(int16_t *)0x5f8362 & 0xffff) << 0x4) + 0x5f7f6c) & 0xffff;
*(int32_t *)(var_588 + 0x4) = 0x0;
sub_2acb83(r12, var_588, 0x0);
rbx = *0x5df8d8;
_memcpy(var_C8, rbx, 0x94);
_memcpy(var_15C, rbx + 0x94, 0x94);
_memset(var_568, 0x0, 0x34c);
_memcpy(var_2B8, var_15C, 0x94);
_memcpy(var_55C, var_C8, 0x94);
_memcpy(var_4B4, var_C8, 0x94);
rax = *(int16_t *)0x5f8360 & 0xffff;
rcx = *(int16_t *)((rax << 0x4) + 0x5f7f6c) & 0xffff;
*(int32_t *)(var_55C + 0xfffffffffffffff4) = rcx;
*(int32_t *)(var_55C + 0xfffffffffffffff8) = rax;
*(int32_t *)(var_55C + 0xfffffffffffffffc) = 0x0;
*(int32_t *)(var_4B4 + 0xffffffffffffffec) = 0xa00;
*(int32_t *)(var_4B4 + 0xfffffffffffffff0) = 0x0;
rax = *(int16_t *)0x5f8362 & 0xffff;
*(int32_t *)(var_4B4 + 0xfffffffffffffff4) = *(int16_t *)((rax << 0x4) + 0x5f7f6c) & 0xffff;
*(int32_t *)(var_4B4 + 0xfffffffffffffff8) = rax;
*(int32_t *)(var_4B4 + 0xfffffffffffffffc) = 0x0;
*(int32_t *)(var_4B4 + 0x94) = 0x0;
*(int32_t *)(var_4B4 + 0x98) = 0x0;
*(int32_t *)(var_4B4 + 0x294) = 0x1;
*(int32_t *)(var_2B8 + 0xfffffffffffffff0) = rcx;
*(int32_t *)(var_2B8 + 0xfffffffffffffff4) = 0x1;
_memcpy(0x0, var_568, 0x34c);
sub_2ad7ea(r12, 0x0, 0x0);
*(int32_t *)(var_55C + 0xfffffffffffffff4) = *(int16_t *)(((*(int16_t *)0x5f8360 & 0xffff) << 0x4) + 0x5f7f6c) & 0xffff;
_memcpy(var_560, *0x5df8d8 + 0x128, 0x400);
*(int32_t *)(var_560 + 0xfffffffffffffffc) = 0x400;
sub_2acc26(r12, var_568, 0x0);
*(int32_t *)var_588 = *(int16_t *)(((*(int16_t *)0x5f8360 & 0xffff) << 0x4) + 0x5f7f6c) & 0xffff;
*(int32_t *)(var_588 + 0x4) = 0x1;
sub_2acb83(r12, var_588, 0x0);
*(int32_t *)var_C8 = *(int16_t *)(((*(int16_t *)0x5f8360 & 0xffff) << 0x4) + 0x5f7f6c) & 0xffff;
*(int32_t *)(var_C8 + 0x4) = 0x0;
sub_2acac2(r12, var_C8, 0x0);
_IOFree(r14, 0x400);
goto loc_2ac18c //iofree and return 0;