Contribute
Register

[Solved]: Black Screen with GTX 1070, LG Ultrafine 5k, Sierra 10.12.4

Status
Not open for further replies.
I managed to get the ethernet working so could screenshare. Seems like the NVIDIA driver is enabled, the card is recognized but the monitor is not getting a signal.

Any ideas?
the same situation as me... not work out
 
Managed get it working. The problem was bit stupid, the LG 5k didn't get signal because macOS was defaulting some non-supported or too high resolution. I managed to get it working by using SwitchResX with through the screenshare, and changing the resolution to be equal or lower than 3840x2160.

Now just need to figure out how to get the resolution higher.
Ah. so easy? let me try
 

I've read that the new Thunderbolt controller will be called Titan Ridge and support DisplayPort 1.4. It will still be considered one of the Thunderbolt 3 controllers. I don't know if this change will allow USB-C DisplayPort 1.3 or 1.4 alt modes, but I would guess probably.
where can I get one from?
 
In 2018 Cannonlake architecture.
ok, thank you.

I am using sotac gtx1080 TI with LG 5K, still get black screen. try the SwithResX without any luck.
1. I once got it can seen in the sharing screen with 2560x2880, 7. I tried adjust all possible resolution using the SwitchResX, but no luck, screen just remain black no any signal.
2. In case 1, I can adjust the brightness, but it get only one time. I add a customized resolution 5120x2880@60, reboot. I can not it in sharing screen any more... so Sad..
3. I try one dp cable, double dp cable, and comfirm they works fine in windows 10.
4. I can boot the Clover UEFI loader in resolution 5120x2880
5. I can see the screen only when I disable the Nvidia web driver.
6. I use the latest Lilu.kext and NvidiaGraphicsFix.kext, also try to remove them all, but no luck .
7. My MB is Asrock x299 designer + , the Asrock thunderbolt 3 AIC.
Any idea? Please help me out of this black screen.
 
ok, thank you.

I am using sotac gtx1080 TI with LG 5K, still get black screen. try the SwithResX without any luck.
1. I once got it can seen in the sharing screen with 2560x2880, 7. I tried adjust all possible resolution using the SwitchResX, but no luck, screen just remain black no any signal.
2. In case 1, I can adjust the brightness, but it get only one time. I add a customized resolution 5120x2880@60, reboot. I can not it in sharing screen any more... so Sad..
3. I try one dp cable, double dp cable, and comfirm they works fine in windows 10.
4. I can boot the Clover UEFI loader in resolution 5120x2880
5. I can see the screen only when I disable the Nvidia web driver.
6. I use the latest Lilu.kext and NvidiaGraphicsFix.kext, also try to remove them all, but no luck .
7. My MB is Asrock x299 designer + , the Asrock thunderbolt 3 AIC.
Any idea? Please help me out of this black screen.
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.
 
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;
 
Last edited:
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.

I know how to show the boot log in command line:
log show --predicate 'process == "kernel"' | grep -i Nv
 
I know how to show the boot log in command line:
log show --predicate 'process == "kernel"' | grep -i Nv
I meant the clover boot log which is saved by clover to the clover misc folder in the EFI partition.

3. nvspanmodepolicy=1 in clover config.plist <--A: nvspanmodepolicy=1 is always that, also with nvda_drv=1, no luck.
I meant nv_spanmodepolicy=1

if (((*(int16_t *)(rbx + 0x4) & 0xffff) != 0xac10) || ((*(int16_t *)(r13 + 0xa) & 0xffff) != 0x40b6)) goto loc_2ac65d//free , check r12 is zeror and return;
That might explain why Nvidia works with the Dell 5K but not other 5K displays...

It is great if someone can tell me how to debug a kext in macos.
Apple has some documentation for debugging kexts using two machine debugging over ethernet or firewire.

Hope it works with edid inject or a kextpatch
Maybe that Dell code is not meant for other 5K displays. Or maybe it is...
EDID inject might not work if the injection is not used everywhere.
kextpatch might not work if you don't get all the 0x40B6 and 0xac10 occurrences.
 
Status
Not open for further replies.
Back
Top