[help]black screen when uhd630 run with internal screen

Discussion in 'High Sierra Laptop Support' started by goofysun, Apr 19, 2018.

  1. headkaze

    headkaze

    Joined:
    Jun 20, 2014
    Messages:
    590
    Motherboard:
    Gigabyte Aero 15X v8-BK4K4P
    CPU:
    i7-8750H
    Graphics:
    UHD 630 / GTX 1070 Max-Q / 4K
    Jun 14, 2018 at 3:06 PM #41
    headkaze

    headkaze

    Joined:
    Jun 20, 2014
    Messages:
    590
    Motherboard:
    Gigabyte Aero 15X v8-BK4K4P
    CPU:
    i7-8750H
    Graphics:
    UHD 630 / GTX 1070 Max-Q / 4K
    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.
     
  2. neocoma504

    neocoma504

    Joined:
    Nov 4, 2016
    Messages:
    57
    Motherboard:
    Gigabyte Aero 15 V8 (Clover)
    CPU:
    Intel i7-8750H / HM370
    Graphics:
    Intel UHD 630 / nVidia GTX 1060 / 1920x1080
    Mac:
    MacBook Pro
    Mobile Phone:
    Android
    Jun 14, 2018 at 5:21 PM #42
    neocoma504

    neocoma504

    Joined:
    Nov 4, 2016
    Messages:
    57
    Motherboard:
    Gigabyte Aero 15 V8 (Clover)
    CPU:
    Intel i7-8750H / HM370
    Graphics:
    Intel UHD 630 / nVidia GTX 1060 / 1920x1080
    Mac:
    MacBook Pro
    Mobile Phone:
    Android
    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.
     

    Attached Files:

  3. neocoma504

    neocoma504

    Joined:
    Nov 4, 2016
    Messages:
    57
    Motherboard:
    Gigabyte Aero 15 V8 (Clover)
    CPU:
    Intel i7-8750H / HM370
    Graphics:
    Intel UHD 630 / nVidia GTX 1060 / 1920x1080
    Mac:
    MacBook Pro
    Mobile Phone:
    Android
    Jun 14, 2018 at 5:29 PM #43
    neocoma504

    neocoma504

    Joined:
    Nov 4, 2016
    Messages:
    57
    Motherboard:
    Gigabyte Aero 15 V8 (Clover)
    CPU:
    Intel i7-8750H / HM370
    Graphics:
    Intel UHD 630 / nVidia GTX 1060 / 1920x1080
    Mac:
    MacBook Pro
    Mobile Phone:
    Android
    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...
     
  4. RehabMan

    RehabMan Moderator

    Joined:
    May 3, 2012
    Messages:
    190,722
    Motherboard:
    Intel DH67BL
    CPU:
    Core i7-2600K
    Graphics:
    Intel HD 3000
    Mac:
    MacBook Air
    Mobile Phone:
    iOS
    Jun 14, 2018 at 7:41 PM #44
    RehabMan

    RehabMan Moderator

    Joined:
    May 3, 2012
    Messages:
    190,722
    Motherboard:
    Intel DH67BL
    CPU:
    Core i7-2600K
    Graphics:
    Intel HD 3000
    Mac:
    MacBook Air
    Mobile Phone:
    iOS
    00 04 00 00 is DP, not eDP (eDP may not be supported).
     
  5. neocoma504

    neocoma504

    Joined:
    Nov 4, 2016
    Messages:
    57
    Motherboard:
    Gigabyte Aero 15 V8 (Clover)
    CPU:
    Intel i7-8750H / HM370
    Graphics:
    Intel UHD 630 / nVidia GTX 1060 / 1920x1080
    Mac:
    MacBook Pro
    Mobile Phone:
    Android
    Jun 14, 2018 at 10:03 PM #45
    neocoma504

    neocoma504

    Joined:
    Nov 4, 2016
    Messages:
    57
    Motherboard:
    Gigabyte Aero 15 V8 (Clover)
    CPU:
    Intel i7-8750H / HM370
    Graphics:
    Intel UHD 630 / nVidia GTX 1060 / 1920x1080
    Mac:
    MacBook Pro
    Mobile Phone:
    Android
    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.
     

    Attached Files:

  6. RehabMan

    RehabMan Moderator

    Joined:
    May 3, 2012
    Messages:
    190,722
    Motherboard:
    Intel DH67BL
    CPU:
    Core i7-2600K
    Graphics:
    Intel HD 3000
    Mac:
    MacBook Air
    Mobile Phone:
    iOS
    Jun 14, 2018 at 11:45 PM #46
    RehabMan

    RehabMan Moderator

    Joined:
    May 3, 2012
    Messages:
    190,722
    Motherboard:
    Intel DH67BL
    CPU:
    Core i7-2600K
    Graphics:
    Intel HD 3000
    Mac:
    MacBook Air
    Mobile Phone:
    iOS
    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).
     
  7. neocoma504

    neocoma504

    Joined:
    Nov 4, 2016
    Messages:
    57
    Motherboard:
    Gigabyte Aero 15 V8 (Clover)
    CPU:
    Intel i7-8750H / HM370
    Graphics:
    Intel UHD 630 / nVidia GTX 1060 / 1920x1080
    Mac:
    MacBook Pro
    Mobile Phone:
    Android
    Jun 14, 2018 at 11:50 PM #47
    neocoma504

    neocoma504

    Joined:
    Nov 4, 2016
    Messages:
    57
    Motherboard:
    Gigabyte Aero 15 V8 (Clover)
    CPU:
    Intel i7-8750H / HM370
    Graphics:
    Intel UHD 630 / nVidia GTX 1060 / 1920x1080
    Mac:
    MacBook Pro
    Mobile Phone:
    Android
    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
     
  8. RehabMan

    RehabMan Moderator

    Joined:
    May 3, 2012
    Messages:
    190,722
    Motherboard:
    Intel DH67BL
    CPU:
    Core i7-2600K
    Graphics:
    Intel HD 3000
    Mac:
    MacBook Air
    Mobile Phone:
    iOS
    Jun 14, 2018 at 11:52 PM #48
    RehabMan

    RehabMan Moderator

    Joined:
    May 3, 2012
    Messages:
    190,722
    Motherboard:
    Intel DH67BL
    CPU:
    Core i7-2600K
    Graphics:
    Intel HD 3000
    Mac:
    MacBook Air
    Mobile Phone:
    iOS
  9. headkaze

    headkaze

    Joined:
    Jun 20, 2014
    Messages:
    590
    Motherboard:
    Gigabyte Aero 15X v8-BK4K4P
    CPU:
    i7-8750H
    Graphics:
    UHD 630 / GTX 1070 Max-Q / 4K
    Jun 15, 2018 at 12:49 AM #49
    headkaze

    headkaze

    Joined:
    Jun 20, 2014
    Messages:
    590
    Motherboard:
    Gigabyte Aero 15X v8-BK4K4P
    CPU:
    i7-8750H
    Graphics:
    UHD 630 / GTX 1070 Max-Q / 4K
    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.
     

    Attached Files:

    • iMac-Aero3.png  (328.4 KB, 151 views)
    • iMac-Aero4.png  (980.6 KB, 134 views)
    Last edited: Jun 15, 2018
  10. neocoma504

    neocoma504

    Joined:
    Nov 4, 2016
    Messages:
    57
    Motherboard:
    Gigabyte Aero 15 V8 (Clover)
    CPU:
    Intel i7-8750H / HM370
    Graphics:
    Intel UHD 630 / nVidia GTX 1060 / 1920x1080
    Mac:
    MacBook Pro
    Mobile Phone:
    Android
    Jun 15, 2018 at 9:28 AM #50
    neocoma504

    neocoma504

    Joined:
    Nov 4, 2016
    Messages:
    57
    Motherboard:
    Gigabyte Aero 15 V8 (Clover)
    CPU:
    Intel i7-8750H / HM370
    Graphics:
    Intel UHD 630 / nVidia GTX 1060 / 1920x1080
    Mac:
    MacBook Pro
    Mobile Phone:
    Android
    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
     

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice