Contribute
Register

[help]black screen when uhd630 run with internal screen

Status
Not open for further replies.
One other area of interest perhaps is the "Bus Id" value.

We can take a look at some Linux source code to see what values they are:

Code:
#define   GMBUS_PIN_DISABLED    0
#define   GMBUS_PIN_SSC        1
#define   GMBUS_PIN_VGADDC    2
#define   GMBUS_PIN_PANEL    3
#define   GMBUS_PIN_DPD_CHV    3 /* HDMID_CHV */
#define   GMBUS_PIN_DPC        4 /* HDMIC */
#define   GMBUS_PIN_DPB        5 /* SDVO, HDMIB */
#define   GMBUS_PIN_DPD        6 /* HDMID */

Maybe setting the first port "Bus Id" to 6 will force it to eDP?

EDIT: I tried values of 3, 4, 5 and 6. Nothing worked.
 

Attachments

  • BusId.png
    BusId.png
    207.8 KB · Views: 175
Last edited:
Download Intel FB-Patcher from here and you can easily create patches using the flags :)

That thread might be better if placed in the "Graphics" forum.
If you don't mind, I can move it for you.
 
That thread might be better if placed in the "Graphics" forum.
If you don't mind, I can move it for you.

Sure, thanks RehabMan!
 
One of the Framebuffer flags that seems interesting to me is FBForcePowerAlwaysConnected because it works along with the CNConnectorAlwaysConnected flag.

EDIT: Didn't work. Oh well back to the drawing board!
 

Attachments

  • FBForcePowerAlwaysConnected.png
    FBForcePowerAlwaysConnected.png
    206.7 KB · Views: 146
Last edited:
Tried this but still no sound. Couldn't see anything that stood out in your config.plist. I booted into Windows and discovered the audio codec is ALC233 so I tried Audio Inject 3, 13, 27 and 33. Nothing seems to work.

Hi
For the record, i just understood that AppleALC is only working for me in v1.2.6 (nothing with v1.2.7) and with device layout "3" (Other layouts work for output, but not for integrated mic).

Nothing more for now regarding graphics..
 
For the record, i just understood that AppleALC is only working for me in v1.2.6 (nothing with v1.2.7) and with device layout "3" (Other layouts work for output, but not for integrated mic).
Thanks for the info. I'll give v1.2.6 a try.
Nothing more for now regarding graphics..
I think I have stumbled on something that might help us. Take a look at IntelGraphicsFixup/kern_igfx.cpp line 1282 (IGFX:correctGraphicsProperties).
Code:
    // Other property fixes
    if (!obj->getProperty("built-in")) {
        DBGLOG("igfx", "fixing built-in in IGPU");
        uint8_t builtBytes[] { 0x01, 0x00, 0x00, 0x00 };
        obj->setProperty("built-in", OSData::withBytes(builtBytes, sizeof(builtBytes)));
    } else {
        DBGLOG("igfx", "found existing built-in in IGPU");
    }
Here we can clearly see that IntelGraphicsFixup will set the "built-in" property. But why isn't it setting it for us? Is there a way we can force it? I think the first step would be to enable debug logging and see the output.

Okay so I copied the debug version of IntelGraphicsFixup.kext to /L/E and added the -igfxdbg boot flag to Clover then rebooted.

Paste this into Terminal (you can add " >IntelGraphicsFixup.log" to the end to output to a file instead of terminal):
Code:
log show --predicate 'process == "kernel" AND (eventMessage CONTAINS "IntelGraphicsFixup" OR eventMessage CONTAINS "Lilu")' --style syslog --source

Got this ouput:
Code:
2018-06-26 12:53:14.049543-0700  localhost kernel[0]: (IntelGraphicsFixup) <IntelGraphicsFixup`IGFX::isConnectorLessFrame()> IntelGraphicsFixup:    igfx @ (DBG) received igpu and amd 0 nvidia 0 frame 591B0000
2018-06-26 12:53:14.049554-0700  localhost kernel[0]: (IntelGraphicsFixup) <IntelGraphicsFixup`IntelGraphicsAudio::probe(IOService*, int*)> IntelGraphicsFixup:   audio @ (DBG) existing hda-gfx, assuming complete inject
2018-06-26 12:53:14.049559-0700  localhost kernel[0]: (IntelGraphicsFixup) <IntelGraphicsFixup`IntelGraphicsAudio::probe(IOService*, int*)> IntelGraphicsFixup:   audio @ (DBG) found existing built-in in hdau
2018-06-26 12:53:14.051554-0700  localhost kernel[0]: (IntelGraphicsFixup) <IntelGraphicsFixup`IGFX::configRead32(IORegistryEntry*, unsigned int, unsigned char)> IntelGraphicsFixup:    igfx @ (DBG) configRead32 IGPU 0x00001000 at off 0x00, result = 0x3E9B8086
2018-06-26 12:53:14.051566-0700  localhost kernel[0]: (IntelGraphicsFixup) <IntelGraphicsFixup`bool WIOKit::getOSDataValue<unsigned int>(OSObject const*, char const*, unsigned int&)> IntelGraphicsFixup:   iokit @ (DBG) getOSData device-id has 591B value
2018-06-26 12:53:14.051572-0700  localhost kernel[0]: (IntelGraphicsFixup) <IntelGraphicsFixup`IGFX::configRead32(IORegistryEntry*, unsigned int, unsigned char)> IntelGraphicsFixup:    igfx @ (DBG) configRead32 reported 0x591b8086 instead of 0x3e9b8086
2018-06-26 12:53:14.075750-0700  localhost kernel[0]: (IntelGraphicsFixup) <IntelGraphicsFixup`IGFX::intelGraphicsStart(IOService*, IOService*)> IntelGraphicsFixup:    igfx @ (DBG) forcing scheduler preference 2
2018-06-26 12:53:18.366921-0700  localhost kernel[0]: (IntelGraphicsFixup) <IntelGraphicsFixup`IGFX::frameBufferInit(void*)> IntelGraphicsFixup:    igfx @ (DBG) failed to obtain display mode
2018-06-26 12:53:18.366938-0700  localhost kernel[0]: (IntelGraphicsFixup) <IntelGraphicsFixup`IGFX::frameBufferInit(void*)> IntelGraphicsFixup:    igfx @ (DBG) failed to obtain display mode
2018-06-26 12:53:18.366942-0700  localhost kernel[0]: (IntelGraphicsFixup) <IntelGraphicsFixup`IGFX::frameBufferInit(void*)> IntelGraphicsFixup:    igfx @ (DBG) failed to obtain display mode
2018-06-26 12:53:18.370431-0700  localhost kernel[0]: (IntelGraphicsFixup) <IntelGraphicsFixup`IGFX::computeLaneCount(void*, void*, unsigned int, int, int*)> IntelGraphicsFixup:    igfx @ (DBG) computeLaneCount: bpp = 24, available = 20
2018-06-26 12:53:18.421519-0700  localhost kernel[0]: (IntelGraphicsFixup) <IntelGraphicsFixup`IGFX::frameBufferInit(void*)> IntelGraphicsFixup:    igfx @ (DBG) fb info 1: -2147479552:0 15360:0:32
2018-06-26 12:53:18.421524-0700  localhost kernel[0]: (IntelGraphicsFixup) <IntelGraphicsFixup`IGFX::frameBufferInit(void*)> IntelGraphicsFixup:    igfx @ (DBG) fb info 2: 3:8 --------RRRRRRRRGGGGGGGGBBBBBBBB 0:3840:2160
2018-06-26 12:53:18.421538-0700  localhost kernel[0]: (IntelGraphicsFixup) <IntelGraphicsFixup`IGFX::frameBufferInit(void*)> IntelGraphicsFixup:    igfx @ (DBG) attempting to copy...
2018-06-26 12:53:18.539721-0700  localhost kernel[0]: (IntelGraphicsFixup) <IntelGraphicsFixup`IGFX::computeLaneCount(void*, void*, unsigned int, int, int*)> IntelGraphicsFixup:    igfx @ (DBG) computeLaneCount: bpp = 24, available = 20
2018-06-26 12:53:18.650565-0700  localhost kernel[0]: (IntelGraphicsFixup) <IntelGraphicsFixup`IGFX::computeLaneCount(void*, void*, unsigned int, int, int*)> IntelGraphicsFixup:    igfx @ (DBG) computeLaneCount: bpp = 24, available = 20

The line "found existing built-in in hdau" is for audio. The line we're looking for is "fixing built-in in IGPU" or "found existing built-in in IGPU". They do not exist in the log.

Now at the very start of IGFX::correctGraphicsProperties() it outputs "found Intel GPU device". But I cannot find that in the log either. So my guess is IntelGraphicsFixup cannot find the IGPU at all.

Well I've checked and IGFX:getDeviceInfo DOES find the IGPU. The problem is IGFX: processKernel() is not being called and so IGFX::correctGraphicsProperties() which is called from IGFX::correctDeviceProperties() is not called. IGFX: processKernel() is supposed to be called from lilu.onPatcherLoad() which is supposed to be invoked "on kernel patcher initialization". So I have no idea why it's not being called.
 
Last edited:
vit9696 has said that macOS might just be missing the debug output and so I should add debugging for Lilu and liludelay=1000 boot argument (1 second delay after each print). So going to try that now along with the debug version of Lilu.kext and the -liludbgall boot argument.

EDIT: Appears to have made no difference apart from extra logging from Lilu. Lilu does not appear to be calling IGFX: processKernel() in IntelGraphicsFixup.kext. I'm probably doing something wrong here.

I've sent the log to vit9696 in the hope he can help figure out what is going on. I've also attached the log here for anyone interested to take a look.
 

Attachments

  • IntelGraphicsFixup.zip
    22.8 KB · Views: 73
Last edited:
Okay it turns out I needed to enabled verbose (-v) boot argument and read the actual output there.

This is what I'm getting:
Code:
igfx @ (DBG) found Intel GPU device IGPU
igfx @ (DBG) IGPU has real 3E9B acpi 591B fake 0000 and model (null)
igfx @ (DBG) user requested to fake with normal device-id
igfx @ (DBG) hooked configRead read methods!
igfx @ (DBG) found existing built-in in IGPU

So it looks like it's detecting the "built-in" entry.

EDIT: Okay this "built-in" entry is on IGPU not the AppleIntelFramebuffer@0 entry which is what we need.
 
Last edited:
Okay vit9696 has helped me write a patch for IntelGraphicsFixup.kext that will set the "built-in" property for the Framebuffer. Attached is a screenshot showing that it has indeed worked. The question is now is this "built-in" property actually used for anything?

I guess it's time to check this with the SSDT-PNLF.aml.

EDIT: Unfortunately black screen. So back to the drawing board!
 

Attachments

  • Framebuffer_built-in.png
    Framebuffer_built-in.png
    890.9 KB · Views: 130
Status
Not open for further replies.
Back
Top