Jump to content

Lenovo ThinkPad T420 with UEFI Only


K0gen
 Share

5,271 posts in this topic

Recommended Posts

well it seems that mcdonnelltech leveraged the same files from this guide - DSDT and kext pack - so its pretty much the same thing as here.

 

if you already have a disk with OSX - you could just clone it to the drive on your X220 - then all you do is add the ESP and custom kexts.

Thank you so much for your time, tluck. I came to the same conclusion and I will try that firstable. Already cloned my Yosemite installation, as I use to do when changing mac´s. When X220 arrived i will begin the "experiment"

 

 

    Much appreciated 

Link to comment
Share on other sites

Hi all.. First post... :-)

I got a bit annoyed about the bios fan controller..

It seemed to stay at 3500 rpm even if temperature was low and it seemed to run the cpu a little hot when under load load for a long time.

 

Found this post on the thinkpad forum.: http://forum.thinkpads.com/viewtopic.php?f=32&t=91141#p607951
 

After adding the patch to the dsl and compiling, the fan control is perfect.(Just make sure hwmonitor is running and started at login as it poll the TCPU)

Low load is 55C and fan at 1950 rpm and almost silent.

High load is 80-85C and fan about 4500 rpm (was 90-92C before)

 

My install is just a default install following the guide(Thanks!! tluck)
Used a decompile of the existing aml because I had problems compiling the dsl included in the guide.

And in the dsl I just merged the thinkpad forum change.

 

WARNING!! It is important to run hwmonitor with 'continue to monitor sensors in background' or similar that query TCPU in intervals otherwise the fan will not be controlled.

 

The best solution would be to find a method that is called in intervals by the OS. (Could be battery status?) 

 

Does this solution make sense to you good people here and do you have a suggestion to a method polled by the OS we could use to 'ping' TCPU in intervals to ensure the controller code is keeping the temperature correct? 

 

 

The modification ended up like this:
Method (TCPU, 0, NotSerialized) 

{                   

    Store (^^EC.TMP0, Local0)

    /* FAN control START */

    Store (\_SB.PCI0.LPC.EC.TMP0, Local0)

    If (LLessEqual (Local0, 0x32))  // CPU Temp is <= 50C 

    {   

        Store (Zero, \_SB.PCI0.LPC.EC.HFSP) // Set FAN Off 

    }   

    If (LGreaterEqual (Local0, 0x55)) // CPU Temp is >= 85C 

    {   

        Store (0x40, \_SB.PCI0.LPC.EC.HFSP) // Set FAN Mode Disengaged - Total Maximum 

    }   

    Else {

        If (LGreaterEqual (Local0, 0x4B)) // CPU Temp is >= 75C

        {       

            Store (0x07, \_SB.PCI0.LPC.EC.HFSP) // Set FAN Mode 7 - Maximum Speed

        }       

        Else {  

            If (LGreaterEqual (Local0, 0x46)) // CPU Temp is >= 70C

            {           

                Store (0x04, \_SB.PCI0.LPC.EC.HFSP) // Set FAN Mode 4 - Medium Speed

            }           

            Else {      

                If (LGreaterEqual (Local0, 0x41)) // CPU Temp is >= 65C

                {               

                    Store (0x02, \_SB.PCI0.LPC.EC.HFSP) // Set FAN Mode 2

                }               

                Else {          

                    If (LGreaterEqual (Local0, 0x3D)) // CPU Temp is >= 61C

                    {                   

                        Store (0x01, \_SB.PCI0.LPC.EC.HFSP) // Set FAN Mode 1 - Lowest Speed

                    }                   

                }               

            }           

        }       

    } /* FAN control END */

    Return (Local0)

}

  • Like 4
Link to comment
Share on other sites

@mikaeir - welcome to the forum!

 

well thats a pretty cool solution! RehabMan wrote an ACPI poller that should do the trick ...see https://github.com/RehabMan/OS-X-ACPI-Poller

 

Great.. It did just that. Only needed to adjust the info.plist to match the t420 and use TCPU as poll method. 

 

                        <key>IONameMatch</key>

                        <string>MON0000</string>  <!-- Was FAN00000 -->

                        <key>IOProviderClass</key>

                        <string>IOACPIPlatformDevice</string>

                        <key>Methods</key>

                        <array>

                                <string>TCPU</string> <!-- Was FCPU -->

                        </array>

Loaded the kext and it is now making sure the fan controller logic is polled even if hwmonitor is stopped.

  • Like 1
Link to comment
Share on other sites

tluck pack also work on x220

 

I'm really tempted to get an x220t right now to Hackintosh.

 

I wonder if the tablet (the pen, more importantly) would work? It seems that some people have it working, but I am having trouble finding any recent info.

Link to comment
Share on other sites

tluck, installation completed. Thank you so much for everything. In fact, i Cloned de Hard Drive, replaced, and only changed two or three files.

It works like a charm

 

Of course, not even by far can compare to the esata, bay for another drive, etc….

 

The display is not as good as that in the T420

 

 

But its so so much portable.

 

 

Really is what need now, fits in my bag as the MBA i had.

 

One curious thing….. it´s the first IBM/Lenovo that i see that close without hinches. Just the magneto.

So i have a T420, HD display, 8GB ram.Wifi and bluetooth just in case anyone is interested...

 

No hard drive, just DVD. And a 9cell original battery i have just bought


I'm really tempted to get an x220t right now to Hackintosh.

 

I wonder if the tablet (the pen, more importantly) would work? It seems that some people have it working, but I am having trouble finding any recent info.

I was not so enthusiastic …till arrived yasterday...

 

Same keyboard, display is perfect in size, nice piece of hardware.

 

 

An just 125 euros

Link to comment
Share on other sites

Gents,

 

Maybe a little different topic but anyway it is also related with all the stuff we are doing here (if anyone would like to have possibility of use the original lenovo recovery image).

So this is the problem that when I've created lenovo recovery image on the usb key then I can't boot from it... I've tried many many different bios options and and I'm sure that my USB lenovo recovery is prepared ok because I can boot from it my other laptop (dell inspiron).

If I create recovery image but on usb disk drive then it is booting ok... but why it can't boot from usb key and exactly on my T420?

Link to comment
Share on other sites

@gpspl -

 

is this on a T420? are you using the DSDT from the zip? if so there is logic in the _WAK Device to set the LED depending on sleep mode.

Still don't know where to look in _WAK method :\

 

here is my _WAK, can you tell me where and what patch should i make.

Method (_WAK, 1, NotSerialized)
    {
        Store (Zero, SPS)
        Store (Zero, \_SB.PCI0.LPC.EC.HCMU)
        \_SB.PCI0.LPC.EC.EVNT (One)
        \_SB.PCI0.LPC.EC.HKEY.MHKE (One)
        \_SB.PCI0.LPC.EC.FNST ()
        UCMS (0x0D)
        Store (Zero, LIDB)
        If (LEqual (Arg0, One))
        {
            Store (\_SB.PCI0.LPC.EC.HFNI, FNID)
        }

        If (LEqual (Arg0, 0x03))
        {
            Store (\_SB.PCI0.LPC.EC.AC._PSR (), PWRS)
            If (OSC4)
            {
                PNTF (0x81)
            }

            If (LNotEqual (ACST, \_SB.PCI0.LPC.EC.AC._PSR ()))
            {
                \_SB.PCI0.LPC.EC.ATMC ()
            }

            If (SCRM)
            {
                Store (0x07, \_SB.PCI0.LPC.EC.HFSP)
                If (MTAU)
                {
                    Store (0x03E8, Local2)
                    While (LAnd (\_SB.PCI0.LPC.EC.PIBS, Local2))
                    {
                        Sleep (One)
                        Decrement (Local2)
                    }

                    If (Local2)
                    {
                        Store (One, \_SB.PCI0.LPC.EC.PLSL)
                        Store (MTAU, \_SB.PCI0.LPC.EC.PLTU)
                        Store (PL1L, \_SB.PCI0.LPC.EC.PLLS)
                        Store (PL1M, \_SB.PCI0.LPC.EC.PLMS)
                    }
                }
            }

            If (VIGD)
            {
                \_SB.PCI0.VID.GLIS (\_SB.LID._LID ())
                If (WVIS)
                {
                    VBTD ()
                }
            }
            Else
            {
                If (WVIS)
                {
                    \_SB.PCI0.VID.GLIS (\_SB.LID._LID ())
                    VBTD ()
                }
            }

            VCMS (One, \_SB.LID._LID ())
            AWON (Zero)
            If (CMPR)
            {
                Notify (\_SB.SLPB, 0x02)
                Store (Zero, CMPR)
            }

            Store (One, \_SB.PCI0.LPC.EC.OCPF)
        }

        If (LEqual (Arg0, 0x04))
        {
            NVSS (Zero)
            Store (Zero, \_SB.PCI0.LPC.EC.HSPA)
            Store (\_SB.PCI0.LPC.EC.AC._PSR (), PWRS)
            If (OSC4)
            {
                PNTF (0x81)
            }

            \_SB.PCI0.LPC.EC.ATMC ()
            Store (One, \_SB.PCI0.LPC.EC.OCPF)
            If (LNot (NBCF))
            {
                If (VIGD)
                {
                    \_SB.PCI0.LPC.EC.BRNS ()
                }
                Else
                {
                    VBRC (BRLV)
                }
            }
        }

        If (XOr (\_SB.PCI0.EXP4.PDS, \_SB.PCI0.EXP4.PDSF))
        {
            Store (\_SB.PCI0.EXP4.PDS, \_SB.PCI0.EXP4.PDSF)
            Notify (\_SB.PCI0.EXP4, Zero)
        }

        If (XOr (\_SB.PCI0.EXP5.PDS, \_SB.PCI0.EXP5.PDSF))
        {
            Store (\_SB.PCI0.EXP5.PDS, \_SB.PCI0.EXP5.PDSF)
            Notify (\_SB.PCI0.EXP5, Zero)
        }

        \_SB.PCI0.LPC.EC.BATW (Arg0)
        \_SB.PCI0.LPC.EC.BWAK (Arg0)
        \_SB.PCI0.LPC.EC.HKEY.WGWK (Arg0)
        Notify (\_TZ.THM0, 0x80)
        VSLD (\_SB.LID._LID ())
        If (VIGD)
        {
            \_SB.PCI0.VID.GLIS (\_SB.LID._LID ())
        }
        Else
        {
            If (WVIS)
            {
                \_SB.PCI0.VID.GLIS (\_SB.LID._LID ())
            }
        }

        If (LLess (Arg0, 0x04))
        {
            If (And (RRBF, 0x02))
            {
                ShiftLeft (Arg0, 0x08, Local0)
                Store (Or (0x2013, Local0), Local0)
                \_SB.PCI0.LPC.EC.HKEY.MHKQ (Local0)
            }
        }

        If (LEqual (Arg0, 0x04))
        {
            Store (Zero, Local0)
            Store (CSUM (Zero), Local1)
            If (LNotEqual (Local1, CHKC))
            {
                Store (One, Local0)
                Store (Local1, CHKC)
            }

            Store (CSUM (One), Local1)
            If (LNotEqual (Local1, CHKE))
            {
                Store (One, Local0)
                Store (Local1, CHKE)
            }

            If (Local0)
            {
                Notify (_SB, Zero)
            }
        }

        Store (Zero, RRBF)
        Return (WAKI)
    }

Link to comment
Share on other sites

@gpspl 

 

i take it this is not for a T420 (but T410?). so anyway, look in the zip file in this guide and refer to file:  dsdt.dsl

it has comments (search for tjl) that indicate the changes that were made. you can probably cut and paste quite a bit into your DSDT

Link to comment
Share on other sites

just a few words to tell you that the card AW-CB160H has this speed on T420

 

 

 

Amazing. But I don´t know why, though previously  I could, now its impossible to me to boot into Yosemite with the card installed. (kernel panic)

 

This results were obtained booting from windows 7

post-355016-0-26828300-1458223371_thumb.jpg

Link to comment
Share on other sites

nice internet plan!

 

with my plan, I get 60 Mbps down and 6 up... what can that chip do on your home network? presuming you are bandwidth limited by your service provider. and then again, my home wifi is limited to 450 Mbps per channel. i use an atheros chip and it connects at 300 Mbps  on OS X.

Link to comment
Share on other sites

Hi all.. First post... :-)

 

I got a bit annoyed about the bios fan controller..

It seemed to stay at 3500 rpm even if temperature was low and it seemed to run the cpu a little hot when under load load for a long time.

 

Found this post on the thinkpad forum.: http://forum.thinkpads.com/viewtopic.php?f=32&t=91141#p607951

 

After adding the patch to the dsl and compiling, the fan control is perfect.(Just make sure hwmonitor is running and started at login as it poll the TCPU)

Low load is 55C and fan at 1950 rpm and almost silent.

High load is 80-85C and fan about 4500 rpm (was 90-92C before)

 

My install is just a default install following the guide(Thanks!! tluck)

Used a decompile of the existing aml because I had problems compiling the dsl included in the guide.

And in the dsl I just merged the thinkpad forum change.

 

WARNING!! It is important to run hwmonitor with 'continue to monitor sensors in background' or similar that query TCPU in intervals otherwise the fan will not be controlled.

 

The best solution would be to find a method that is called in intervals by the OS. (Could be battery status?) 

 

Does this solution make sense to you good people here and do you have a suggestion to a method polled by the OS we could use to 'ping' TCPU in intervals to ensure the controller code is keeping the temperature correct? 

 

 

The modification ended up like this:

Method (TCPU, 0, NotSerialized) 

{                   

    Store (^^EC.TMP0, Local0)

    /* FAN control START */

    Store (\_SB.PCI0.LPC.EC.TMP0, Local0)

    If (LLessEqual (Local0, 0x32))  // CPU Temp is <= 50C 

    {   

        Store (Zero, \_SB.PCI0.LPC.EC.HFSP) // Set FAN Off 

    }   

    If (LGreaterEqual (Local0, 0x55)) // CPU Temp is >= 85C 

    {   

        Store (0x40, \_SB.PCI0.LPC.EC.HFSP) // Set FAN Mode Disengaged - Total Maximum 

    }   

    Else {

        If (LGreaterEqual (Local0, 0x4B)) // CPU Temp is >= 75C

        {       

            Store (0x07, \_SB.PCI0.LPC.EC.HFSP) // Set FAN Mode 7 - Maximum Speed

        }       

        Else {  

            If (LGreaterEqual (Local0, 0x46)) // CPU Temp is >= 70C

            {           

                Store (0x04, \_SB.PCI0.LPC.EC.HFSP) // Set FAN Mode 4 - Medium Speed

            }           

            Else {      

                If (LGreaterEqual (Local0, 0x41)) // CPU Temp is >= 65C

                {               

                    Store (0x02, \_SB.PCI0.LPC.EC.HFSP) // Set FAN Mode 2

                }               

                Else {          

                    If (LGreaterEqual (Local0, 0x3D)) // CPU Temp is >= 61C

                    {                   

                        Store (0x01, \_SB.PCI0.LPC.EC.HFSP) // Set FAN Mode 1 - Lowest Speed

                    }                   

                }               

            }           

        }       

    } /* FAN control END */

    Return (Local0)

}

 

Hi mikaelr, is it possible to detect wether AC adapter is plugged in or not in DSDT? So we could add a different routine for fan speed based on power source. I already implement these codes in my DSDT for quite long time but still can not figure it out. 

Link to comment
Share on other sites

AW-CB160H has MHF4 connectors.

How did you connect the antennas?

With MHF4 antennas, of course.

 

But i keep wonder why now i have the kernel panic booting from Yosemite….

nice internet plan!

 

with my plan, I get 60 Mbps down and 6 up... what can that chip do on your home network? presuming you are bandwidth limited by your service provider. and then again, my home wifi is limited to 450 Mbps per channel. i use an atheros chip and it connects at 300 Mbps  on OS X.optic fiber

 

nice internet plan!

 

with my plan, I get 60 Mbps down and 6 up... what can that chip do on your home network? presuming you are bandwidth limited by your service provider. and then again, my home wifi is limited to 450 Mbps per channel. i use an atheros chip and it connects at 300 Mbps  on OS X.

Optic fiber. 300 Mbps up, 30 Mbps down.

post-355016-0-45991700-1458227538_thumb.jpg

Link to comment
Share on other sites

Hello!

I just managed to install El Capitan on my T420, huge props to all the people involved in gathering and making the information available (esp tluck).

I browsed the topic for the "external monitor" keywords, and if I understood correctly, I can only attach an external monitor through the ports on the docking station?

I don't have a docking station, so my question is if there is any way of making this work plugging the VGA/DP cable directly into the laptop?

If I plug in the VGA or DP cable after booting up, no monitor is recognized (also if cables were in when booting). But I saw that a lot of people got it to work, but I assume it was through the docking station.

If I plug in the monitor at boot time, switch the picture to the ext monitor with Fn+F7 before continuing with booting, then after the apple boot loading indicator disappears (right before getting to login screen), laptop reboots.

 

I appreciate any suggestions. Right now I dont know much about DSDT, but if sthing like that is necessary for this, I will look into it.

 

my T420 has i7-2720qm cpu, 2x4Gb of ram, and only the integrated hd3000 (no dGpu).

 

Thank you

 

 

Link to comment
Share on other sites

@davidian

 

welcome to our growing forum! 

 

without the dock station, you have 2 options for external monitor - DP or VGA - both ports are on the left side and work with the clover config (and patches) in the Zip.

VGA is not active so you must boot or do a sleep wake cycle.

 

i use DP on the side often. I have a DP to DP cable for my HP monitor. I also have 2 converters:

(1) DP to HDMI - good for TVs

and

(2) DP to VGA - which is dynamic and way better than trying to use the built-in VGA. 

 

you shouldn't have to do any FN keys - as soon as the DP cable is connected - it should recognize it. does this cable/monitor work with Windows? 

Link to comment
Share on other sites

@davidian

 

welcome to our growing forum! 

 

without the dock station, you have 2 options for external monitor - DP or VGA - both ports are on the left side and work with the clover config (and patches) in the Zip.

VGA is not active so you must boot or do a sleep wake cycle.

 

i use DP on the side often. I have a DP to DP cable for my HP monitor. I also have 2 converters:

(1) DP to HDMI - good for TVs

and

(2) DP to VGA - which is dynamic and way better than trying to use the built-in VGA. 

 

you shouldn't have to do any FN keys - as soon as the DP cable is connected - it should recognize it. does this cable/monitor work with Windows? 

 

Thank you for the quick reply. What I tried was DP-DP, and VGA-VGA between laptop and monitor, none of them worked.

I also tried the suggested sleep-wake cycle with the VGA, nothing changed.

Regarding the install, I followed the steps from your post, did the post install steps also (copy to EFI folder from zip to HD just like for the USB installer, copied and renamed config 1366 plist file, copied Vendor files, and run the _kext install script), did I miss something?

On the laptop LCD monitor works great, but the resolution is to small and TN panel is quite weak, thats why I would like to take advantage of the external monitor.

Monitor is Dell U2410, but I tried with a Samsung 2333 also (just VGA, no DP on that model).

Link to comment
Share on other sites

@davidian

 

the DP should just work? when you plug in the DP-DP monitor - does the screen change at all? i mean register that you plugged something in?

 

what mac model does it think it is? run these on the command line please:

 

ioreg -l | grep model

 

ioreg -l | grep FrameBuffer

Link to comment
Share on other sites

@davidian

 

the DP should just work? when you plug in the DP-DP monitor - does the screen change at all? i mean register that you plugged something in?

 

what mac model does it think it is? run these on the command line please:

 

ioreg -l | grep model

 

ioreg -l | grep FrameBuffer

 

no change in the screen on the laptop (Displays is open from System Settings)

monitor just aknowledges that5 the cable was plugged in into something, but goes into standby

 

Attilas-MacBook-Pro:~ attila$ ioreg -l | grep model

    |   "model" = <"MacBookPro8,3">

    | |   | |   "model" = <"Intel HD Graphics 3000">

    | |   | |   "model" = <"Intel E1000e">

    | |   |   |   "model" = "Intel 82579LM PCI Express Gigabit Ethernet"

    | |   |         "model" = <"Apple WiFi card">

      |     "model" = "Disk Image Driver for MacOS X"

Attilas-MacBook-Pro:~ attila$ ioreg -l | grep FrameBuffer

    | |   | | |   "NumFrameBuffer" = <01>

    | |   | |     "kFrameBufferType" = 1

Attilas-MacBook-Pro:~ attila$

Link to comment
Share on other sites

{censored} clover changed how it figures out the product type - 8,3 is not going to work, so you only have 1 buffer

 

change add the 8,1 definition to your config.plist and you should be good to go. i have to add that back in explicitly 

 

<key>SMBIOS</key>
        <dict>
                <key>Mobile</key>
                <true/>
                <key>Trust</key>
                <true/>
                <key>BoardVersion</key>
                <string>MacBookPro8,1</string>
                <key>ProductName</key>
                <string>MacBookPro8,1</string>
        </dict>

  • Like 1
Link to comment
Share on other sites

{censored} clover changed how it figures out the product type - 8,3 is not going to work, so you only have 1 buffer

 

change add the 8,1 definition to your config.plist and you should be good to go. i have to add that back in explicitly 

 

<key>SMBIOS</key>

        <dict>

                <key>Mobile</key>

                <true/>

                <key>Trust</key>

                <true/>

                <key>BoardVersion</key>

                <string>MacBookPro8,1</string>

                <key>ProductName</key>

                <string>MacBookPro8,1</string>

        </dict>

 

That was it, thank you very much!!

 

In retrospective I think I saw somewhere a reference to version being set to MacBookPro8,1 , but I thought it was already set to that, didn't do a double check.

 

Thanks again, you really made it easy for those who have a T420!

Link to comment
Share on other sites

 Share

×
×
  • Create New...