Jump to content

Lenovo ThinkPad T420 with UEFI Only


K0gen
 Share

5,271 posts in this topic

Recommended Posts

On 5/10/2021 at 3:21 AM, Hervé said:

Has anyone ever tried to inject compatibility with Apple's SD card reader 14e4:16bc for the Ricoh SD card reader?

 

It works for various O2 models fitted to several Dell Latitude laptops and was understood/claimed to work for Ricoh readers fitted to T420/T430 but we never got confirmation for those.

 

The following properties can be injected

  • either in a patched DSDT through a DSM method under the SD card reader's ACPI device:

                   Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                   {
                        If (LEqual (Arg2, Zero))
                        {
                            Return (Buffer (One)
                            {
                                 0x03                                           
                            })
                        }
                        Return (Package ()
                        {
                            "AAPL,slot-name",                     // Optional
                            Buffer (0x09)                         // Optional
                            {                                     // Optional
                                "Built-in"                        // Optional
                            },                                    // Optional
                            "device_type",                        // Optional
                            Buffer (0x11)                         // Optional
                            {                                     // Optional
                                "Media Controller"                // Optional
                            },                                    // Optional
                            "model",                              // Optional
                            Buffer ()                             // Optional
                            {                                     // Optional
                                "<specify your model here>"       // Optional
                            },                                    // Optional
                            "compatible", 
                            Buffer (0x0D)
                            {
                                "pci14e4,16bc"
                            }
                        })
                    }
  • or through the bootloader config (Clover, OpenCore) at the SD card's IO location PciRoot(0x0)/Pci(...)/... :

compatible        pci14e4,16bc        STRING
AAPL,slot-name    built-in            STRING    // Optional
model             <model here>        STRING    // optional
device_type       Media controller    STRING    // Optional

 

hmm... interestingly a device shows up by adding this method, but when i put an SD card in the slot nothing happened.

Built in SD Card Reader:

 

  Vendor ID: 0x1180

  Device ID: 0xe823

  Subsystem Vendor ID: 0x17aa

  Subsystem ID: 0x21ce

  Revision: 0x0005

  Link Width: x1

  Link Speed: 2.5 GT/s

 

Link to comment
Share on other sites

On 5/12/2021 at 11:11 AM, Hervé said:

With no other stuff that could interfere, like an add-on kext?

 

The claim might have been a red herring though, hence why I was asking.

Thank you for checking anyway, I'll update our info at OSXL on the matter.

test1: use inject the method - sees an internal card reader but non-functional

test2: use Voodoo kext - get an external generic card reader - which say it has an un-initialted/unformatted sd card (but that's not true as it is formatted) so doesn't work - can't read/write to it.
 

I gave up on this effort for this box years ago since using USB card reader is very common and cheap.

Edited by tluck
Link to comment
Share on other sites

Hi @tluck. I'm struggling with a x220. I know it's not a t420 but I think they have the same mobo (I mean same chipset and everything).

I got GUI freezes (mouse still moves) and artifacts. Artifacts are not that many so I can live with them. But GUI freezes are ultra annoying.

Did you manage to get rid of GUI freezes on your t420 ? They are HD3000, right ? 

I found some OC config.plist with ReservedMemory "HD3000: IGPU memory corruption errata". DO you know what that is and if it works ?

Link to comment
Share on other sites

5 hours ago, Jief_Machak said:

Hi @tluck. I'm struggling with a x220. I know it's not a t420 but I think they have the same mobo (I mean same chipset and everything).

I got GUI freezes (mouse still moves) and artifacts. Artifacts are not that many so I can live with them. But GUI freezes are ultra annoying.

Did you manage to get rid of GUI freezes on your t420 ? They are HD3000, right ? 

I found some OC config.plist with ReservedMemory "HD3000: IGPU memory corruption errata". DO you know what that is and if it works ?

Hey Jief,

yeah from a Hack perspective X220 and T420 are the same.

 

if you look in the system log and see a bunch of br-sync messages then you have hit typical problem with HD3000. 

2 things help
16 GB of memory

EDID replacement and/or LCD replacement - AUO are very problematic.

so we have more options for 1600x900. but for 1368 there are some EDIDs that will help fix this problem.

 

my bundle supports Sierra, High Sierra, Mojave and Catalina (Mojave and Catalina are installed via Dosdude1 method)

 

my T420 16GB with LG LCD never freezes and very very rare to see artifacts

my T420 8GB with AUO LCD doesnt freeze but has some artifacts.

 

not sure if helps or not but i do patch my NVRAM to have 1024GB vs normal 512GB.

again patches are available in my example in github. https://github.com/tluck/Lenovo-T420-Clover

 

 

 

Edited by tluck
Link to comment
Share on other sites

3 hours ago, tluck said:

Hey Jief,

yeah from a Hack perspective X220 and T420 are the same.

 

if you look in the system log and see a bunch of br-sync messages then you have hit typical problem with HD3000. 

2 things help
16 GB of memory

EDID replacement and/or LCD replacement - AUO are very problematic.

so we have more options for 1600x900. but for 1368 there are some EDIDs that will help fix this problem.

 

my bundle supports Sierra, High Sierra, Mojave and Catalina (Mojave and Catalina are installed via Dosdude1 method)

 

my T420 16GB with LG LCD never freezes and very very rare to see artifacts

my T420 8GB with AUO LCD doesnt freeze but has some artifacts.

 

not sure if helps or not but i do patch my NVRAM to have 1024GB vs normal 512GB.

again patches are available in my example in github. https://github.com/tluck/Lenovo-T420-Clover

 

 

 

If did this "log show --last boot | grep br-sync" and found nothing. But I do have this typical problems !

 

Do you also change VRAMMethod in info.plist ?

 

You mean the physical LCD has an effect ? How do I know if it's AUO ?

Link to comment
Share on other sites

@Jief_Machak

I never messed with VRAMMethod since just replacing the EDID was working.

 

yes. replaced the physical LCD. my son broke the screen and i replaced with beautiful glossy LG for about $45 and it never hangs.

The EDID will tell you make and model

MAKE: LG = 30e4

MODEL: 366 (byte swapped)

 

ioreg -l|grep yEDID

    | |   | | |       "IODisplayEDID" = <00ffffffffffff0030e466030000000000150104901f117802fc45955855922820505400000001010101010101010101010101010101582f40f861843c30a060350035ae1000001a901f40f861843c30a060350035ae1000001a000000fe00334e505236803134305744320a00000000000041319e0110000002010a202000a7>

AUO=06af

Model: 213e

ioreg -l|grep yEDID

    | |   | | |       "IODisplayEDID" = <00ffffffffffff0006af3e210000000021140104901f11780261959c59528f2621505400000001010101010101010101010101010101f82a409a61840c30402a330035ae10000018a51c409a61840c30402a330035ae10000018000000fe0041554f0a202020202020202020000000fe004231343052573032205631200a00d0>

 

then i built matching Override files which

$ ls -l /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-30e4

total 32

-rw-r--r--  1 tluck  wheel  3975 Dec 31  2016 DisplayProductID-2e2

-rw-r--r--  1 tluck  wheel  3754 Mar  8  2020 DisplayProductID-2e3

-rw-r--r--  1 tluck  wheel  3975 Mar  8  2020 DisplayProductID-366

-rw-r--r--  1 tluck  wheel   579 Jan  4  2017 DisplayProductID-50b

 

sorry it would be BRSYNC that indicates the gfx hang.

2018-02-04 02:42:00.705849+0300 0x545      Default     0x0                  0      0    kernel: (AppleIntelHD3000Graphics)     BRSYNC: (0x22040) = 0x0
2018-02-04 02:42:01.285151+0300 0x12e3     Default     0x0                  0      0    kernel: (AppleIntelHD3000Graphics)     BRSYNC: (0x22040) = 0x
Link to comment
Share on other sites

2 hours ago, tluck said:

@Jief_Machak

I never messed with VRAMMethod since just replacing the EDID was working.

 

yes. replaced the physical LCD. my son broke the screen and i replaced with beautiful glossy LG for about $45 and it never hangs.

The EDID will tell you make and model

MAKE: LG = 30e4

MODEL: 366 (byte swapped)

 

ioreg -l|grep yEDID

    | |   | | |       "IODisplayEDID" = <00ffffffffffff0030e466030000000000150104901f117802fc45955855922820505400000001010101010101010101010101010101582f40f861843c30a060350035ae1000001a901f40f861843c30a060350035ae1000001a000000fe00334e505236803134305744320a00000000000041319e0110000002010a202000a7>

AUO=06af

Model: 213e

ioreg -l|grep yEDID

    | |   | | |       "IODisplayEDID" = <00ffffffffffff0006af3e210000000021140104901f11780261959c59528f2621505400000001010101010101010101010101010101f82a409a61840c30402a330035ae10000018a51c409a61840c30402a330035ae10000018000000fe0041554f0a202020202020202020000000fe004231343052573032205631200a00d0>

 

then i built matching Override files which

$ ls -l /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-30e4

total 32

-rw-r--r--  1 tluck  wheel  3975 Dec 31  2016 DisplayProductID-2e2

-rw-r--r--  1 tluck  wheel  3754 Mar  8  2020 DisplayProductID-2e3

-rw-r--r--  1 tluck  wheel  3975 Mar  8  2020 DisplayProductID-366

-rw-r--r--  1 tluck  wheel   579 Jan  4  2017 DisplayProductID-50b

 

sorry it would be BRSYNC that indicates the gfx hang.


2018-02-04 02:42:00.705849+0300 0x545      Default     0x0                  0      0    kernel: (AppleIntelHD3000Graphics)     BRSYNC: (0x22040) = 0x0
2018-02-04 02:42:01.285151+0300 0x12e3     Default     0x0                  0      0    kernel: (AppleIntelHD3000Graphics)     BRSYNC: (0x22040) = 0x

So, I'm a bit lost.

For you, the gfx hang is caused by the physical LCD, or by a wrong EDID ?

Link to comment
Share on other sites

2 hours ago, Jief_Machak said:

So, I'm a bit lost.

For you, the gfx hang is caused by the physical LCD, or by a wrong EDID ?

in my experience the gfx hang problem is related to a broken or incompatible EDID (from the AUO display).

the fix is to inject a compatible EDID. 
LG displays seem to work quite well (using the EDID from the LCD).  So taking/injecting the EDID from an LG display has proven to fix AUO issues in this case. 

 

for many years, on macOS 10.9-10.12 this approach was workable and glitch-free
however, in HighSierra some glitches (and hangs) came back on my box with AUO display. LG has no problems.
for Mojave and Catalina there is no HD 3000 support, but we use the older gfx frames and HighSierra kexts.

 

more memory - 16 GB vs 4 or 8 - seems to remove/reduce artifacts.

 

bottom line: inject/replace the EDID with a compatible one.

Edited by tluck
Link to comment
Share on other sites

Wow, since so much time I'm looking, and I never saw anyone talking about EDID. But it makes sense.

Artifact is not huge problems. If 10.12 could be hangs free, I may downgrade to 10.12.

How to I find a good EDID ? X220 are 1368x768 panels.

Do you have a 1368x768 LG panel ?

Link to comment
Share on other sites

11 hours ago, Jief_Machak said:

Wow, since so much time I'm looking, and I never saw anyone talking about EDID. But it makes sense.

Artifact is not huge problems. If 10.12 could be hangs free, I may downgrade to 10.12.

How to I find a good EDID ? X220 are 1368x768 panels.

Do you have a 1368x768 LG panel ?

yeah. replacing the EDID was an amazing thing discovered around 2013/2014... 

 

10.12 Sierra is solid, for me HighSiera -> Catalina are all great. Some see more artifacts etc.
I dont have that size on my boxes, but there is a config.1368x768.plist in my repo that may provide an alternative EDID for you. 
Frankly, its been so long since I created that particular config I can not recall where that EDID came from... 

Link to comment
Share on other sites

On 5/21/2021 at 8:38 PM, tluck said:

yeah. replacing the EDID was an amazing thing discovered around 2013/2014... 

 

10.12 Sierra is solid, for me HighSiera -> Catalina are all great. Some see more artifacts etc.
I dont have that size on my boxes, but there is a config.1368x768.plist in my repo that may provide an alternative EDID for you. 
Frankly, its been so long since I created that particular config I can not recall where that EDID came from... 

Ok, I'm trying your EDID. Let's see.

Booted fine.

Do you know a way to check if I still got gfx hangs ? Like, is there something that make it hangs all the time, or is it just random ?

Same for artefact : is there a test ?

Link to comment
Share on other sites

On 5/21/2021 at 2:13 PM, Hervé said:

EDID basically defines the screen's capabilities to the GPU so I'm a little sceptical about re-using the data pertaining to a given screen on a different one. It's a bit like injecting the DSDT of a given computer on a totally different one if I may push that far...

 

I'd opt for experimentations with SwitchResX on the other hand.

https://osxlatitude.com/forums/topic/7914-dell-latitude-e6220-with-i5-2520m-hd3000-and-1366x768-lcd-mavericksyosemiteel-capitansierrahigh-sierramojavecatalina/?do=findComment&comment=96340

the EDID injection method has worked about 5-6 years here without problems. but sure, you need a similar EDID that may have slight differences in the timings. the EDIDs i posted are from LCD panels (1600x900) that are known to be compatible T420 screen replacements. after Inject the LG EDID into the box with AUO -  voila - happiness.  but of course, this may not be the only way to get a good EDID (SwitchResX for example) 
 

On 5/22/2021 at 9:38 PM, Jief_Machak said:

Ok, I'm trying your EDID. Let's see.

Booted fine.

Do you know a way to check if I still got gfx hangs ? Like, is there something that make it hangs all the time, or is it just random ?

Same for artefact : is there a test ?

both a bit random. artifacts are more common.

gfx hangs - will show up in syslogs as BRSYNC messages.
artifacts - i can often make them show up by using remote desktop, or starting terminal on my AUO LCD box. 

Link to comment
Share on other sites

  • 5 weeks later...

Fellows, I want to use my T420 for some more time, don´t really need a M1 MBA with all bells and whistles.

As Catalina will be the last version which can be used more or less safely, I was looking for an alternative for mail and web browsing.
Elementary did spring to mind and its running fine on a 128GB mSATA now.

Just one little nag remains in Catalina.
The OS keeps telling me this at boot time: "The disk you inserted was not readable by this computer - Initialise… / Ignore / Eject"

Does anybody know how to get rid of this nag screen, telling Catalina to ignore the mSATA?

Link to comment
Share on other sites

On 6/22/2021 at 10:58 PM, goodguess said:

Fellows, I want to use my T420 for some more time, don´t really need a M1 MBA with all bells and whistles.

As Catalina will be the last version which can be used more or less safely, I was looking for an alternative for mail and web browsing.
Elementary did spring to mind and its running fine on a 128GB mSATA now.

Just one little nag remains in Catalina.
The OS keeps telling me this at boot time: "The disk you inserted was not readable by this computer - Initialise… / Ignore / Eject"

Does anybody know how to get rid of this nag screen, telling Catalina to ignore the mSATA?

Look up documentation for "vifs", you can probably configure it in a way that it doesn't automatically try to mount the mSATA.

 

Using sudo vifs opens /etc/fstab in a text editor, the file is used to configure mount options for volumes.

adding this line works for me for a similar usecase: UUID=REPLACE_WITH_VOLUME_IDENTIFIER none auto noatime,noauto,ro

Link to comment
Share on other sites

There's a lot more to update than just OpenCore.efi. You need to download the entire set of folders and replace boot file, drivers, resources, tools, etc. The updated resources are not in the package of course but in acidanthera's OcBinaryData GitHub repo. Make sure you're aligned on the versions.

I'm aware.

Of course i’m replacing all the binaries with updated versions.

What i mean is the OpenCore.efi file is what makes the boot fail, all the other files work, even the new drivers work fine when i switch back to the older OpenCore.efi file provided in tlucks repository.

I’m thinking either some recent change in opencore broke compatibility with the t420 or tluck made some changes to source code to make it work in the first place.
Link to comment
Share on other sites

On 6/24/2021 at 9:03 AM, ShroomKing said:

@tluck sorry for the strange question, where do you get the OpenCore binaries?

 

I have tried to update OpenCore with files from https://github.com/acidanthera/OpenCorePkg but after replacing OpenCore.efi it doesn't boot.

 

Have you made any changes to source code to make it work?

In my github repo, there is a full set of files for Clover AND OC (both of which I compile - so yes the OC verions is a custom version) -  one change in OC a while back broke it - so i have a work around.

 

the change is line 92 of Library/OcMainLib/OpenCoreNvram.c: 

 

    gRT->SetVariable (
      OC_VERSION_VARIABLE_NAME,
      &gOcVendorVariableGuid,
_      OPEN_CORE_NVRAM_ATTR,
+      Config->Nvram.WriteFlash ? OPEN_CORE_NVRAM_NV_ATTR : OPEN_CORE_NVRAM_ATTR,
      AsciiStrLen (Version),
      (VOID *) Version
      );
 

Edited by tluck
  • Like 2
Link to comment
Share on other sites

  • 1 month later...

@tluck Hi, I'm back on that EDID problem on the x220. When I inject an EDID, either by Clover or by a file in /System/Library/Displays/Contents/Resources/Overrides, I still get the original one in ioreg (ioreg -lw0 | grep EDID.

Could you confirm if the EDID in ioreg is the original one or if it must be the overridden one ?

Link to comment
Share on other sites

On 8/10/2021 at 5:38 AM, Jief_Machak said:

@tluck Hi, I'm back on that EDID problem on the x220. When I inject an EDID, either by Clover or by a file in /System/Library/Displays/Contents/Resources/Overrides, I still get the original one in ioreg (ioreg -lw0 | grep EDID.

Could you confirm if the EDID in ioreg is the original one or if it must be the overridden one ?

hmm. well if you inject the EDID via Clover it should be the new one. this what my graphics section looks like

	<key>Graphics</key>
	<dict>
		<key>DualLink</key>
		<integer>1</integer>
		<key>EDID</key>
		<dict>
			<key>#Comment</key>
			<string>LCD 1600x900</string>
			<key>Custom</key>
			<data>
			AP///////wAw5GYDAAAAAAAVAQSQHxF4AvxFlVhVkiggUFQAAAAB
			AQEBAQEBAQEBAQEBAQEBWC9A+GGEPDCgYDUANa4QAAAakB9A+GGE
			PDCgYDUANa4QAAAaAAAA/gAzTlBSNoAxNDBXRDIKAAAAAAAAQTGe
			ARAAAAIBCiAgAKc=
			</data>
			<key>Inject</key>
			<true/>
		</dict>
		<key>Inject</key>
		<dict>
			<key>Intel</key>
			<true/>
		</dict>
	</dict>

 

Link to comment
Share on other sites

On 8/24/2021 at 8:52 AM, Jief_Machak said:

@tluck Have you checked that you have the same info as in your config.plist in ioreg ?

You have nothing in /System/Library/Displays/Contents/Resources/Overrides ?

of course!  the config.plist and ioreg is the same.  the log verifies the EDID is updated.
i do create a matching overrides but that doesnt contain the EDID - since clover does that.  i use these files to change the color profile so that the LCD looks more natural instead of bluish and provide more sizes.

 

10:892  0:000  === [ RestSetup macOS ] =========================
10:892  0:000  --- Custom EDID Table size:128
10:892  0:000  000  |  00  FF  FF  FF  FF  FF  FF  00  30  E4
10:892  0:000  010  |  E2  02  00  00  00  00  01  14  01  03
10:892  0:000  020  |  80  1F  11  78  E2  33  85  99  56  55
10:892  0:000  030  |  91  27  17  50  54  00  00  00  01  01
10:892  0:000  040  |  01  01  01  01  01  01  01  01  01  01
10:892  0:000  050  |  01  01  01  01  80  25  40  80  60  84
10:892  0:000  060  |  1A  30  30  20  35  00  36  AE  10  00
10:892  0:000  070  |  00  18  00  00  00  00  00  00  00  00
10:892  0:000  080  |  00  00  00  00  00  00  00  00  00  00
10:892  0:000  090  |  00  00  00  FE  00  4C  65  6E  6F  76
10:892  0:000  100  |  6F  0A  20  20  20  20  20  20  00  00
10:892  0:000  110  |  00  FE  00  31  36  30  30  78  39  30
10:892  0:000  120  |  30  0A  20  20  20  20  00  AD
10:892  0:000  Intel HD Graphics 3000 [8086:0126] :: PciRoot(0x0)\Pci(0x2,0x0)
10:892  0:000    Additional Intel GFX properties injected, continue
10:892  0:000    IntelHDMI: used
10:892  0:000    Intel: no default properties
10:892  0:000  Intel GFX revision  = 0x9
10:892  0:000   setting specified layout-id=14 (0xE)
10:892  0:000  stringlength = 1204
10:892  0:000  CurrentMode: Width=1024 Height=768

ioreg -l|grep yEDID

    | |   | | |       "IODisplayEDID" = <00ffffffffffff0030e4e2020000000001140103801f1178e233859956559127175054000000010101010101010101010101010101018025408060841a303020350036ae10000018000000000000000000000000000000000000000000fe004c656e6f766f0a202020202020000000fe0031363030783930300a2020202000ad>

Link to comment
Share on other sites

  • 1 month later...

This thread appears to be “finished” based on the comment thread. I hate to revive a “dead” thread but this is the thread I used to breathe life into my T420 before setting it aside a couple years ago. I have question regarding OpenCore? Can you upgrade to the later version of OpenCore or is it best yo stay with the version of OC this build originally came with? 
 

I’ve also tried an install with OC and the newest build of Clover. It successfully installs Catalina, goes through all of the post install patches from the USB. At the first startup I am presented with a weird rainbow effect and then it fades to completely black. It’s not a brightness issue. I have audio but no video. What needs to be changed? This has also happened with the newest Clover build as well. 

I have the basic T420 with Intel 3000 GPU, i5 and it has the 1366x768 panel. 

Link to comment
Share on other sites

On 10/24/2021 at 9:46 PM, roto31 said:

This thread appears to be “finished” based on the comment thread. I hate to revive a “dead” thread but this is the thread I used to breathe life into my T420 before setting it aside a couple years ago. I have question regarding OpenCore? Can you upgrade to the later version of OpenCore or is it best yo stay with the version of OC this build originally came with? 
 

I’ve also tried an install with OC and the newest build of Clover. It successfully installs Catalina, goes through all of the post install patches from the USB. At the first startup I am presented with a weird rainbow effect and then it fades to completely black. It’s not a brightness issue. I have audio but no video. What needs to be changed? This has also happened with the newest Clover build as well. 

I have the basic T420 with Intel 3000 GPU, i5 and it has the 1366x768 panel. 

well this thread isn't dead or finished...  but there isn't much activity! Not surprising as the T420 is about a decade old now. 

the github repo for thread is up to date with the lastest Clover and latest OC. Note I have not created a new zip bundle lately but the repo is current.
However, to build an installer for Catalina you will need to use the dosdude1 tools to patch things up especially to get the Intel HD 3000 kexts.

Since you you have the 1366x768 panel, I suggest you use Clover since there is low-res config option already to go - move config.1366x768.plist to config.plist. The OC config is for 1600x900 but can be easily modified.

Link to comment
Share on other sites

  • 4 weeks later...
 Share

×
×
  • Create New...