Has anyone gotten a configuration to run Sierra/High Sierra (at this time 10.13.3) in conjunction with Nitrocaster's FHD mod? There is some limited information on x220.mcdonnelltech.com, making a passing reference to injecting EDID to enable functionality. However, my x230 (HD4000) did not work (cleanly) following these instructions.
My understanding is that, in config.plist, setting injectEDID=true, and in some cases injecting the dummy display EDID using the CustomEDID key, with graphics ID 0x01660003 per the reference build on other forums will enable the display with the x220, and I have not heard of any qualifications or caveats on partial functionality, but also haven't seen proof of anyone successfully running OSX+FHD.
I had a lot of frustration getting my x230 to boot under 0x01660003, I could tell the screen was recognized because the backlight was operational, but no display was coming through. Originally thinking that ID 0x01660003 was the problem, I attempted injecting 0x01660004, patching DSDT, and using framebuffer patches to enable extra framebuffers to reflect the hardware, but the x230 KP'd, and safe mode caused a restart, with very little information as to why (using debug and -v). I was able to boot using 0x01660008/9, safe mode, injecting the CustomEDID for my real DP2 monitor, and forcing the boot display to Port 5, which I guessed based on the x230 port configuration using this table:
Code: Select all
0x01660009 (Ivy Bridge Mobile GT2): 0900 6601 0103 0303 0000 0004 0000 0001 (64 MB BIOS-allocated memory, 16 MB frame buffer memory) 0000 0060 1007 0000 1007 0000 0000 0000 (1536 MB VRAM, 1808 Hz backlight frequency, 1808 Max backlight) 0000 0000 0000 0000 5029 0400 0000 0000 0100 0000 0200 0000 3000 0000 0205 0000 (port 0, LVDS connector / port 5, ...) 0004 0000 0701 0000 0304 0000 0004 0000 (DisplayPort connector / port 6, DisplayPort connector) 0701 0000 0000 0000 0100 0000 4000 0000 (port unused, VGA connector) 0x01660003 (Ivy Bridge Mobile GT2): 0300 6601 0102 0402 0000 0004 0000 0001 (64 MB BIOS-allocated memory, 16 MB frame buffer memory) 0000 0060 1007 0000 1007 0000 0000 0000 (1536 MB VRAM, 1808 Hz backlight frequency, 1808 Max backlight) 0000 0000 0000 0000 0000 0000 0000 0000 0503 0000 0200 0000 3000 0000 0205 0000 (port 8, LVDS connector / port 5, ...) 0004 0000 0704 0000 0304 0000 0004 0000 (DisplayPort connector / port 6, DisplayPort connector) 8100 0000 0406 0000 0004 0000 8100 0000 (port 7, DisplayPort connector) 0x01660004 (Ivy Bridge Mobile GT2): 0400 6601 0103 0101 0000 0002 0000 0001 (32 MB BIOS-allocated memory, 16 MB frame buffer memory) 0000 0060 1007 0000 1007 0000 0000 0000 (1536 MB VRAM, 1808 Hz backlight frequency, 1808 Max backlight) 6029 0400 0000 0000 0000 0000 0000 0000 0503 0000 0200 0000 3002 0000 0000 0000 (port 8, LVDS connector / port unused, ...) 0100 0000 4000 0000 0000 0000 0100 0000 (VGA connector / port unused, VGA connector) 4000 0000 0000 0000 0100 0000 4000 0000 (port unused, VGA connector)
Unfortunately, I had no mouse cursor or QE/CI. The mouse had full functionality, I just couldn't see the cursor, so I had to drag around to make boxes in order to use the interface. This was workable enough, so I used IORegistryExplorer and SwitchResX to get information about the hardware (under this ID...) and extracted my default Capri Framebuffer Kext. There has already been a lot of work done by very smart people on how to edit framebuffers, and clover gives the ability to patch this on the fly, but I want as native an experience as possible, so I wasn't optimistic about finding a solution for this problem. One advantage though is that under this schema, the DP is recognized as the only display, and sleep and wake work as well.
I rolled back my DSDT to stock and reinstalled all of my kexts after updating them to the latest builds (as of ~2/12/2018) and installed them to my cache. A key difference this time, I loaded Lilu.kext and IntelGraphicsFixup.kext into my Kexts/Other folder for injection (this will not work installed to S/L/E by default). I had several paths I wanted to try, the simplest being to attempt injecting 0x01660003 again, but with no DSDT, as this is closest to the x230 hardware configuration. I used a CustomEDID injection (dummy display) and injected platform ID 0x01660003 and duallink=1 through Clover. This enabled my display, and I have full QE/CI support, booting with caches, outside of safe mode. The system is not functional at the moment for a few reasons, I haven't had time to sit down and modify the DSDT patch for this configuration. Even with the screen enabled, the dummy display is recognized as the PNLF device (there may be no getting around this) but brightness control DOES work.
Because the default behavior for OSX is to switch to the external display, if connected, when the lid is closed, I suspect that patching will have to be done to the _PTS and _WAK methods in the DSDT to get this setup to behave properly. Alternatively, perhaps there is an avenue with DSDT patches and a custom set of framebuffers that reflects our new configuration using an ID that is currently not allocated. Naively, I suspect patching in a new configuration into the Capri Framebuffer kext that enables the DP2 display port 0 (using the timing byte portion of the framebuffer string to set priority) will allow this device to be recognized as the PNLF display. Then, using SwitchResX, disabling the dummy display may allow the machine to sleep without _PTS or _WAK patches, or maybe we can remove it altogther. I have confirmed disabling the dummy display in SwitchResX still allows the DP2 brightness controls to work, but sleep is broken, as expected. A third avenue, is to use the FixEDID app to create display override files, but I don't have a clear conception of how this would solve the underlying problem.
I don't have a full solution, so I haven't uploaded anything through source control. If someone has a full solution, I'd appreciate you sharing your wisdom, and I apologize if I've made this needlessly complicated. If someone wants to build off of the small amount of progress I've done, I'd be happy to share my config.plist and kexts.