Take a look at our
ThinkPads.com HOME PAGE
For those who might want to contribute to the blog, start here: Editors Alley Topic
Then contact Bill with a Private Message

Sierra/High Sierra on the x220/x230 with nitrocaster's FHD Mod

OS-X on ThinkPads
Post Reply
Message
Author
jmill
Posts: 20
Joined: Fri Jul 28, 2017 9:38 am
Location: Pittsburgh, PA

Sierra/High Sierra on the x220/x230 with nitrocaster's FHD Mod

#1 Post by jmill » Wed Feb 21, 2018 9:57 pm

Hi guys,

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)

Note: I have found conflicting information regarding the max resolution supported by the 0x01660003 platform ID. Common wisdom in the clover community is that 0x01660003 is for low resolution, while 0x01660004 is better suited for HD and FHD. However, I have read elsewhere that 0x01660003 supports up to 1400 pixel width on the primary display. I have reason to believe that 0x01660003 is fine for the FHD setup.

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.
ThinkPad X230, i7-3520m, 16GB RAM, 1Tb Crucial MX300, 1Tb Samsung 850 msata, Intel HD4000, 12.5" FHD

Fusion
Sophomore Member
Posts: 135
Joined: Thu Dec 21, 2006 9:34 pm
Location: Czech Republic

Re: Sierra/High Sierra on the x220/x230 with nitrocaster's FHD Mod

#2 Post by Fusion » Thu Feb 22, 2018 4:10 am

So I was able to boot using Boot Options and the above EDID + duallink=1, but I get these weird artifacts upon mouseover and white flashes right after login.

https://imgur.com/a/Wj9F2

Edit: Just noticed that in computer info it says “Intel HD3000 7MB” and that should be 512MB. Going to investigate further.

Edit2: I deleted the patch, as per mcdonnelltech
If you have installed a FHD (1920×1080) panel it may be necessary to remove the Replace 4th port with VGA patch in the Clover config.plist and install a custom EDID in /System/Library/Displays
I don't understand how I install something in S/L/D.

I tried various config in Clover, but can't get it to boot without changing the options. After the Apple logo and loading bar, I get a splurge of colors (I can tell its my background) with bad resolution and no login box.
Here's what I tried in clover: https://imgur.com/a/JY23q
ThinkPad X220, i7-2640m, 16GB RAM, 120GB Kingston SSD, Intel HD3000, 12.5" WQHD, MacOS Sierra 10.13.2
ThinkPad W500 4063-VA4 CD2 Penryn 2,80GHz, 4GB RAM, 320GB HDD, 15.4" WUXGA, FireGL V5700, Win7u
ThinkPad R60 9461-DXG P-CD2 1,83GHz, 2GB 667MHz, 100GB HDD, ATI X1400@512MB, XP2 Pro

jmill
Posts: 20
Joined: Fri Jul 28, 2017 9:38 am
Location: Pittsburgh, PA

Re: Sierra/High Sierra on the x220/x230 with nitrocaster's FHD Mod

#3 Post by jmill » Thu Feb 22, 2018 10:34 am

I don't understand how I install something in S/L/D.
I use the KextUtility app to install to the System/Library/Extensions folder (kernel extensions folder). Alternatively you can drag+drop into S/L/E and then rebuild your kernel cache

Code: Select all

sudo kextcache -i /
The value you have placed into the CustomEDID field, is in fact, an ig-platform ID. You can select yours from the dropdown menu on the element in the right hand side of the interface in your screenshot. There are three steps:

1) Inject your intel platform ID
2) Check "Inject EDID", with no parameter, this will attempt to auto-inject the EDIDs of a connected screen, it may work.
3) If it doesn't work (or you want to be sure), use the value from your IOReg (https://i.imgur.com/Zn3iuzw.png), or another application (linux and windows have utilities as well), pass it through http://www.edidreader.com/ with no hex prefixes

So in the field you currently have an Intel Platform ID, paste your EDID in this format:

00 FF FF FF FF FF FF 00 69 98 01 03 E4 00 00 00 34 1B 00 00 95 1C 10 78 EA 4B B5 9B 5B 54 8E 25 1E 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 14 37 80 C2 70 38 1F 40 3C 2E 35 00 E0 0E 11 00 00 1A 00 00 00 FD 00 01 18 01 1C 01 00 0A 20 20 20 20 20 20 00 00 00 FF 00 44 32 55 30 35 30 30 45 34 00 00 00 00 00 00 00 FC 00 44 75 6D 6D 79 20 64 69 73 70 6C 61 79 00 6C

You shouldn't use my value, you should derive your own because it will probably be different (someone else with a nitrocaster gen 5 board should confirm). Additionally, my intel platform id is determined by my hardware, 7th gen CPU/Intel HD4000. If you have an x220 this will be different (I think...).
ThinkPad X230, i7-3520m, 16GB RAM, 1Tb Crucial MX300, 1Tb Samsung 850 msata, Intel HD4000, 12.5" FHD

Fusion
Sophomore Member
Posts: 135
Joined: Thu Dec 21, 2006 9:34 pm
Location: Czech Republic

Re: Sierra/High Sierra on the x220/x230 with nitrocaster's FHD Mod

#4 Post by Fusion » Sun Mar 04, 2018 4:37 pm

Here's my IOreg AppleDisplay https://imgur.com/a/j1chS

I have tried setting the Intel platform ID as 0x00020000 or 0x00010000 (HD3000), checking Inject EDID, didn't work.

Which value from IOreg do I copy into edidreader.com?
ThinkPad X220, i7-2640m, 16GB RAM, 120GB Kingston SSD, Intel HD3000, 12.5" WQHD, MacOS Sierra 10.13.2
ThinkPad W500 4063-VA4 CD2 Penryn 2,80GHz, 4GB RAM, 320GB HDD, 15.4" WUXGA, FireGL V5700, Win7u
ThinkPad R60 9461-DXG P-CD2 1,83GHz, 2GB 667MHz, 100GB HDD, ATI X1400@512MB, XP2 Pro

jmill
Posts: 20
Joined: Fri Jul 28, 2017 9:38 am
Location: Pittsburgh, PA

Re: Sierra/High Sierra on the x220/x230 with nitrocaster's FHD Mod

#5 Post by jmill » Mon Mar 05, 2018 11:35 am

Fusion wrote:
Sun Mar 04, 2018 4:37 pm
Which value from IOreg do I copy into edidreader.com?
https://imgur.com/a/mbGTr

On an unpatched DSDT system, it will be be on the ApplyDisplay or AppleBacklightDisplay device under the IODisplayEDID property. For injecting in clover, run that value through EDID Reader, to have no spaces, commas, etc. For information on injecting boot display in Clover, look on the framebuffer object, at the bottom, there will be a hex value. I have not figured out exactly how this works as I get inconsistent behavior. I am getting closer to a full solution.
ThinkPad X230, i7-3520m, 16GB RAM, 1Tb Crucial MX300, 1Tb Samsung 850 msata, Intel HD4000, 12.5" FHD

Fusion
Sophomore Member
Posts: 135
Joined: Thu Dec 21, 2006 9:34 pm
Location: Czech Republic

Re: Sierra/High Sierra on the x220/x230 with nitrocaster's FHD Mod

#6 Post by Fusion » Wed Mar 07, 2018 8:58 am

I think I may be daft, but I still don't get which value I should put into edidreader.
Here's a Win display properties screengrab https://imgur.com/a/qsrbz.
ThinkPad X220, i7-2640m, 16GB RAM, 120GB Kingston SSD, Intel HD3000, 12.5" WQHD, MacOS Sierra 10.13.2
ThinkPad W500 4063-VA4 CD2 Penryn 2,80GHz, 4GB RAM, 320GB HDD, 15.4" WUXGA, FireGL V5700, Win7u
ThinkPad R60 9461-DXG P-CD2 1,83GHz, 2GB 667MHz, 100GB HDD, ATI X1400@512MB, XP2 Pro

Fusion
Sophomore Member
Posts: 135
Joined: Thu Dec 21, 2006 9:34 pm
Location: Czech Republic

Re: Sierra/High Sierra on the x220/x230 with nitrocaster's FHD Mod

#7 Post by Fusion » Thu Mar 22, 2018 6:19 pm

Bumpity bump
ThinkPad X220, i7-2640m, 16GB RAM, 120GB Kingston SSD, Intel HD3000, 12.5" WQHD, MacOS Sierra 10.13.2
ThinkPad W500 4063-VA4 CD2 Penryn 2,80GHz, 4GB RAM, 320GB HDD, 15.4" WUXGA, FireGL V5700, Win7u
ThinkPad R60 9461-DXG P-CD2 1,83GHz, 2GB 667MHz, 100GB HDD, ATI X1400@512MB, XP2 Pro

jmill
Posts: 20
Joined: Fri Jul 28, 2017 9:38 am
Location: Pittsburgh, PA

Re: Sierra/High Sierra on the x220/x230 with nitrocaster's FHD Mod

#8 Post by jmill » Wed Mar 28, 2018 1:47 pm

Apologies for the delay, other pressing matters kept me from improving this project. I have nearly 100% functionality on High Sierra. When I get to 100%, I'd like to compile things into a guide of some sort.

The gist of it, is that using Clover, you need to inject a bogus FakeID in order to boot without IntelHD support in order to install lilu+hd graphics fixup kexts, this helped enable my screen under the recommended platform-id 0x01660003. I used the FixEDID app to generate a fake EDID for the dummy screen, as I found it caused it to behave much better with the real (external) screen. Sleep from the menu does not work right. Sleep with the power button does work, even for long periods of time. Occasionally I will have to sleep and wake a few times to get the screen recognized again, this seems to be an issue with DP external displays on OSX in general. I disabled the lid wake event from the CLI using pmset. Backlight is working well, but the default PNLF device for the x230 in the ACPI patch repo isn't very good, it only dims to about 40%, so I am working out a fix for that.

I am also working on permanently patching the Capri framebuffer kext. It is slow going as there are two methods I am exploring: changing the timing in order to get the external display to be better recognized on power events, and/or significantly changing the framebuffer to set the edp screen to the primary internal display by changing it's port number, and then doing something else with the LVDS dummy display.

https://imgur.com/a/HA6VL

Album with large format screenshots
ThinkPad X230, i7-3520m, 16GB RAM, 1Tb Crucial MX300, 1Tb Samsung 850 msata, Intel HD4000, 12.5" FHD

huh
Posts: 5
Joined: Mon Jun 18, 2018 10:41 am
Location: Chicago, IL

Re: Sierra/High Sierra on the x220/x230 with nitrocaster's FHD Mod

#9 Post by huh » Sat Jun 30, 2018 2:58 pm

jmill, have you done any further work on this project? I am interested as I have an x230 coming with a 2k display from lcdfans and messing around with a Hackintosh would be fun.

jmill
Posts: 20
Joined: Fri Jul 28, 2017 9:38 am
Location: Pittsburgh, PA

Re: Sierra/High Sierra on the x220/x230 with nitrocaster's FHD Mod

#10 Post by jmill » Mon Jul 02, 2018 12:40 pm

huh wrote:
Sat Jun 30, 2018 2:58 pm
jmill, have you done any further work on this project? I am interested as I have an x230 coming with a 2k display from lcdfans and messing around with a Hackintosh would be fun.
Admittedly I have not had time to work further on this project. The brightness issue impacts battery life, but I still get 5-6 hours with a 9 cell battery, so it is not urgent. The sleep/wake issue continues to confound me. Sometimes, waking from the button will work with the display properly selected several times in a row, sometimes it takes 2-3 times (feels like an OSX issue). As a second line of defense against a restart, I use switchresx hotkeys to disable the default screen, and move to DP only. OSX will never recover from sleep with the default screen disabled, but once woken, this screen can be disabled for possibly improved battery. So from the (invisible) lock screen I enter my password, hit the hotkey to disable mirroring, and then reenable mirroring, and the display will usually wake.

I tried several patches to modify the timing associated with the HD4000 graphics buffer to see if I could get the DP screen as the first priority, but it either killed the display, or seemed to make no difference.
ThinkPad X230, i7-3520m, 16GB RAM, 1Tb Crucial MX300, 1Tb Samsung 850 msata, Intel HD4000, 12.5" FHD

Fusion
Sophomore Member
Posts: 135
Joined: Thu Dec 21, 2006 9:34 pm
Location: Czech Republic

Re: Sierra/High Sierra on the x220/x230 with nitrocaster's FHD Mod

#11 Post by Fusion » Tue Nov 06, 2018 11:32 am

Anyone ever get this working? :)
ThinkPad X220, i7-2640m, 16GB RAM, 120GB Kingston SSD, Intel HD3000, 12.5" WQHD, MacOS Sierra 10.13.2
ThinkPad W500 4063-VA4 CD2 Penryn 2,80GHz, 4GB RAM, 320GB HDD, 15.4" WUXGA, FireGL V5700, Win7u
ThinkPad R60 9461-DXG P-CD2 1,83GHz, 2GB 667MHz, 100GB HDD, ATI X1400@512MB, XP2 Pro

GrifterGuru
Freshman Member
Posts: 124
Joined: Wed Sep 05, 2018 10:41 pm
Location: London, UK

Re: Sierra/High Sierra on the x220/x230 with nitrocaster's FHD Mod

#12 Post by GrifterGuru » Tue Nov 06, 2018 12:50 pm

John McDonnell does link out from his website to a discussion on the creating an EDID, as below:
If you have installed a FHD (1920×1080) panel it may be necessary to remove the Replace 4th port with VGA patch in the Clover config.plist and take additional steps to inject a custom EDID. The discussion here includes additional details.
BUT, the "HERE" that he links out to is actually this very topic, so it seems that is a bit of a non-starter.................

It would be nice to answer the question once and for all, as Myself and my Fiancee both have x220's and both of us are looking at the FHD mod. Since we run OSX however, it looks like that will have to wait until a resolution (pun intended) is discovered and published.
X31 2672-58G, M73 10AXS, M73 10AXS i7, L412 4403-72G i5,T420 4236-9N8 i7-2630QM, T430 2349-TDG, X201 3680-C85, X220 42902
Install Mojave on X220 & T420

Fusion
Sophomore Member
Posts: 135
Joined: Thu Dec 21, 2006 9:34 pm
Location: Czech Republic

Re: Sierra/High Sierra on the x220/x230 with nitrocaster's FHD Mod

#13 Post by Fusion » Thu Nov 08, 2018 10:40 am

I found this nice tool https://github.com/andyvand/FixEDID
You need to read the Dummy Display EDID, I used http://www.nirsoft.net/utils/dump_edid.html in Windows and saved the bin to a flash drive to then open it in MacOS/FixEDID.
This app has options such as injecting IDs for real Mac displays (thunderbolt, iMac etc.). I am able to inject it, but I still get the original X220 resolution.
Another problem is that even at 1366x768 I still have problems getting hardware graphics accelleration. There is no transparancy in MacOS and the graphics card shows HD3000 5MB.
ThinkPad X220, i7-2640m, 16GB RAM, 120GB Kingston SSD, Intel HD3000, 12.5" WQHD, MacOS Sierra 10.13.2
ThinkPad W500 4063-VA4 CD2 Penryn 2,80GHz, 4GB RAM, 320GB HDD, 15.4" WUXGA, FireGL V5700, Win7u
ThinkPad R60 9461-DXG P-CD2 1,83GHz, 2GB 667MHz, 100GB HDD, ATI X1400@512MB, XP2 Pro

Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “OS-X Questions”

Who is online

Users browsing this forum: No registered users and 1 guest