Contribute
Register

[help]black screen when uhd630 run with internal screen

Status
Not open for further replies.
Just to add some confusion to the mix according to IntelFramebuffer.bt we have:
Code:
/* This is the same as ATI/AMD code.
 * At this moment only 2, 4, 0x400, and 0x800 are somewhat supported.
 * Interestingly connector type is not so important nowadays, e.g. VGA works fine on Kaby on DP.
 * As of SKL and newer ConnectorType is converted to fPortType by the following algo:
 * - connector with zero index (LVDS) gets fPortType 3.
 * - connector with ConnectorHDMI type gets fPortType 1.
 * - otherwise a connector has fPortType 2 (DisplayPort-like).
 */
enum <uint32_t> ConnectorType {
    ConnectorZero       = 0x0,
    ConnectorDummy      = 0x1,   /* Always used as dummy, seems to sometimes work as VGA */
    ConnectorLVDS       = 0x2,   /* Just like on AMD LVDS is used for eDP */
    ConnectorDigitalDVI = 0x4,   /* This is not eDP despite a common misbelief */
    ConnectorSVID       = 0x8,
    ConnectorVGA        = 0x10,
    ConnectorDP         = 0x400,
    ConnectorHDMI       = 0x800,
    ConnectorAnalogDVI  = 0x2000
};

So does this mean we should leave the port as 02 00 00 00 and somehow change the connector index of the internal display to something other than zero? So we can get the connector to be fPortType 2 (DisplayPort-like)?

Nothing I have tried has worked thus far. Any ideas on how this might be accomplished would be greatly appreciated.
 
Hi,

I've been following for a while since i have an Aero 15w V8, which is pretty close to 15x, and have the same issue.
I think i've made an interesting discover.

I was at the same point : only access thru VNC if not using FakeID 0x12345678.
As i didn't have nothing pointing out on HDMI nor Displayport, i looked at Windows to understand that on my laptop, both external ports are actually connected to GTX1060 (which was pretty disappointing as Gigabyte tech support told me that HDMI was on GTX but mDP should have been on UHD630).
So i decided to get the GTX1060 working to check that and also because i could maybe accept to work with power adapter when i'm on macOS.. I installed WebDrivers, unchecked nv_disable, checked NVidiaWeb on Clover, removed my SSDT-9-OptTabl.aml (which disables discrete graphics) and got it working on external screens. But still black screen on internal.

I then looked at your posts and patch proposal. I tried a lot of different patches from this one. And i saw that port 0 had a different code after the connector type (98000000) than other ports (87010000).
So i Tried this patch which changes the connector type and this code on Port0 and disable Ports1-3 (because these ports are connected to GTX1060 anyway) :

Code:
Name: com.apple.driver.AppleIntelKBLGraphicsFramebuffer
Find: 00000800 02000000 98000000 02040A00 00080000 87010000 03060A00 00040000 87010000 FF000000 01000000 20000000
Replace: 00000800 00040000 87010000 FF000000 01000000 20000000 FF000000 01000000 20000000 FF000000 01000000 20000000
Comment: Modify 0x591B0000 video ports to match 15W (port 0 to eDP, ports1-3 non existents)

Rebuilt cache. And it works! I get internal screen with acceleration (but by GTX 1060..)

Now this is far from perfect :
-If i deactivate GTX1060 again with patched SSDT-9-OptTabl.aml : internal screen not working but now i can see the beginning of the the Apple logo loading screen (just the beginning though).
-If i try to reactivate SSDT-PNLF.aml in order to work on backlight control, black screen again at the very beginning of verbose screen. But maybe this is because AppleBacklightInjector is waiting for a classical LVDS Port0 to match PNLF Device?
-If i keep GTX1060 active i have to say the laptop is not very quiet... And i can only imagine the battery life...

But maybe we can work from that.
 

Attachments

  • debug_27857.zip
    2.9 MB · Views: 220
Also i just noticed that if i unplugg all external monitors, the internal screens goes back to black.
And doesn't come back if i plug external screen again...
 
Yeah, I'm pretty sure it's the issue with this machine. I did have a glimmer of hope today as I noticed that in another post I had the eDP port wrong (it's 04 00 00 00 not 00 04 00 00) so I updated the patch and rebuilt the cache but still black screen.

Looks like 00 04 00 00 IS correct for eDP.

00 04 00 00 is DP, not eDP (eDP may not be supported).
 
A few more details :

-The patch seems working with GTX1060 with "02000000" or "00040000" as connector type for Port0 the same way. The thing is apparently more about replacing "98000000" by "87010000"

With this patch inactive :
-No way to get internal screen working, even if GTX1060 is active with external screens plugged
-At startup the screen goes black just after verbose (cannot see the Apple Logo boot screen)
-If i use SSDT-PNLF.aml + AppleBacklightInjector.kext in L/E + Applebacklight.kext patch (as provided by @RehabMan 's guide), i can see a brightness slider in Sysprefs>Displays, and ioreg shows "AppleBacklightDisplay" for internal screen. But internal screen stays black.

With patch active :
-I can use the internal screen when GTX 1060 is active. And the card is active as long as a screen is plugged before boot on external ports. If nothing plugged before boot on external ports or if unplugged after that, then the internal screen goes black and System Report shows UHD 630 as graphics (thru VNC). I guess this is because of Optimus system.
-At startup the screen goes black after verbose and after the Apple Logo boot screen (so just before asking for password).
-If i use SSDT-PNLF.aml + AppleBacklightInjector.kext in L/E + Applebacklight.kext patch the same way as before, no brightness slider in Sysprefs>Displays and ioreg shows only "AppleDisplay" for internal screen. So the method is not working here.

My guess would be : Maybe changing "98000000" to "87010000" help to "route" the signal to the internal screen. But that seems to create problems with backlight inject method and power as it may not be detected as an actual internal screen anymore? I don't know how we could try to edit that.
 

Attachments

  • debug_26202.zip
    3.1 MB · Views: 121
A few more details :

-The patch seems working with GTX1060 with "02000000" or "00040000" as connector type for Port0 the same way. The thing is apparently more about replacing "98000000" by "87010000"

With this patch inactive :
-No way to get internal screen working, even if GTX1060 is active with external screens plugged
-At startup the screen goes black just after verbose (cannot see the Apple Logo boot screen)
-If i use SSDT-PNLF.aml + AppleBacklightInjector.kext in L/E + Applebacklight.kext patch (as provided by @RehabMan 's guide), i can see a brightness slider in Sysprefs>Displays, and ioreg shows "AppleBacklightDisplay" for internal screen. But internal screen stays black.

With patch active :
-I can use the internal screen when GTX 1060 is active. And the card is active as long as a screen is plugged before boot on external ports. If nothing plugged before boot on external ports or if unplugged after that, then the internal screen goes black and System Report shows UHD 630 as graphics (thru VNC). I guess this is because of Optimus system.
-At startup the screen goes black after verbose and after the Apple Logo boot screen (so just before asking for password).
-If i use SSDT-PNLF.aml + AppleBacklightInjector.kext in L/E + Applebacklight.kext patch the same way as before, no brightness slider in Sysprefs>Displays and ioreg shows only "AppleDisplay" for internal screen. So the method is not working here.

My guess would be : Maybe changing "98000000" to "87010000" help to "route" the signal to the internal screen. But that seems to create problems with backlight inject method and power as it may not be detected as an actual internal screen anymore? I don't know how we could try to edit that.

Your ioreg shows an internal display connected to port 0, connector 0 (LVDS).
Connector 0 in 0x591b0000 is default as LVDS (02 00 00 00).
 
Your ioreg shows an internal display connected to port 0, connector 0 (LVDS).
Connector 0 in 0x591b0000 is default as LVDS (02 00 00 00).

Yes, that makes sense because changing connector type here doesn't change anything actually. But do you have an idea of what the third code ("98000000" or "87010000") refers to for each port?
This seems to have an influence here. But that also prevent the PLNF method for backlight to work...
Thanks
 
You're definitely onto something here neocoma504! I simply changed the patch to:

Code:
Name: com.apple.driver.AppleIntelKBLGraphicsFramebuffer
Find: 00000800 02000000 98000000
Replace: 00000800 02000000 87010000
Comment: Modify 0x591B0000 video port for Gigabyte Aero (port 0 to eDP)

Then I removed SSDT-PNLF.aml and I now have full 4k internal display with acceleration and no glitches! I have left the patched SSDT-9.aml which disables the 1070. I have not installed any WebDrivers nor have I plugged in any external monitor! I really cannot believe my eyes right now!

So this patch really opens up the possibilities for many more laptops to be compatible with macOS. It's a really great sign. So right now I would say macOS and the KabyLake framebuffer kext CAN support eDP and an internal Intel graphics card!

The IntelFramebuffer.bt spells it out to us:
Code:
ConnectorLVDS       = 0x2,   /* Just like on AMD LVDS is used for eDP */
So the 02000000 is used for both LVDS and eDP.
Code:
 * As of SKL and newer ConnectorType is converted to fPortType by the following algo:
 * - connector with zero index (LVDS) gets fPortType 3.
 * - connector with ConnectorHDMI type gets fPortType 1.
 * - otherwise a connector has fPortType 2 (DisplayPort-like)
Somehow these flags have set fPortType to 2 to make it eDP.

I also noticed that if you look at AppleIntelFramebuffer@0 in IORegistryExplorer above the connector-type entry there used to be an entry called "built-in" which is no longer there.
 

Attachments

  • iMac-Aero3.png
    iMac-Aero3.png
    328.4 KB · Views: 412
  • iMac-Aero4.png
    iMac-Aero4.png
    980.6 KB · Views: 404
Last edited:
Hi @headkaze

Great to hear it's good for you.
Unfortunately no more luck for me. I feel i'm close but... Maybe this is because of 144Hz now.
Would you mind to share your config.plist and kext used to be sure i don't forget something?

Thanks
 
Status
Not open for further replies.
Back
Top