Jump to content

Lenovo ThinkPad T420 with UEFI Only


Go to solution Solved by tluck,
5,249 posts in this topic

Recommended Posts

Nixenos - are you talking about power thing on menu bar? thi havent played with Yosemite for quite awhile? did you install the ACPIBattery kexts? and custom DSDT?

 

@somez - well if you just start the laptop - cold (say letting it) let it idle for a few minutes in normal/cool room with just SSD (no bay HDD) and just LCD - what is the fan speed?

in bios, in Adv menu, in Thermal settings, what is your active trip point temperature set to? mine are 55 and 71c

 

on the CPU grease a very thin coat is best 

Nixenos - are you talking about power thing on menu bar? thi havent played with Yosemite for quite awhile? did you install the ACPIBattery kexts? and custom DSDT?

 

@somez - well if you just start the laptop - cold (say letting it) let it idle for a few minutes in normal/cool room with just SSD (no bay HDD) and just LCD - what is the fan speed?

in bios, in Adv menu, in Thermal settings, what is your active trip point temperature set to? mine are 55 and 71c

 

on the CPU grease a very thin coat is best

 

Thanks for tips tluck.

My thermal settings in BIOS are the same.

My machine has been idle for about 5 minutes now. I get 40-41-42 C CPU temps, 46-48 CPU package temps and 46-47 CPU heatsink and Thermal zone 1 temps.

SSD temp is 27 C.

 

Fan is staying at 3200 RPM :(

It seems I have to live with this as there doesn't seem to be any solution. I might replace the motherboard but that would probably be too much cost and it doesn't worth it.

Thanks for tips tluck.

My thermal settings in BIOS are the same.

My machine has been idle for about 5 minutes now. I get 40-41-42 C CPU temps, 46-48 CPU package temps and 46-47 CPU heatsink and Thermal zone 1 temps.

SSD temp is 27 C.

 

Fan is staying at 3200 RPM :(

It seems I have to live with this as there doesn't seem to be any solution. I might replace the motherboard but that would probably be too much cost and it doesn't worth it.

 

This is ridiculous. I went all in and took off the keyboard while the machine was running because the FAN is sucking air towards the keyboard.

Results:

post-1647866-0-73930400-1481876525_thumb.png

 

So this was still not enough and then I decided to open the window next to me since it's winter here and BOOM!! 2000 freaking RPM!!

post-1647866-0-96146900-1481876579_thumb.png

 

Obviously I will never be able to cool the whole system down to this level under normal circumstances. And I was annoyed when I opened these 2 screenshots using Preview and the fan immediately kicked back to 3200 RPM level.

 

I'm wondering that somekind of sensor is off calibrated or faulty and that is causing my issues here. I'll keep using that hacked ACPI poller solution that we were discussing earlier in this topic. With that my temps around 55 C but the fan is aggressively staying at 2000 RPM and thus is not audible.

@Nixenos - uh audio - sure. you install the modified AppleHDA kext per the installation guide?

 

@somez - well my system runs at about 3578 RPM all the time (unless dark screen idle). i am not sure why? this is so even if i tweak the Adv menu temperature settings. hmm. the ACPI DSDT fan mods + ACPIpolling method (or HWmonitor) may be the best way to control fan vs temperature.

@Nixenos - uh audio - sure. you install the modified AppleHDA kext per the installation guide?

 

@somez - well my system runs at about 3578 RPM all the time (unless dark screen idle). i am not sure why? this is so even if i tweak the Adv menu temperature settings. hmm. the ACPI DSDT fan mods + ACPIpolling method (or HWmonitor) may be the best way to control fan vs temperature.

 

The fan running at 3200 RPM produces too much noise to me :(

I still don't get it how my friend's machine (CPU is 2540m) can easily run at 2000 RPM and on 41C. Remember, my config did not go to 2000 RPM at 41 C CPU temp while his did. So there must be some kind of difference or hardware bug. Our heatsinks are the same so that's not the issue here.

 

I'll stay with that ACPIpoller "hack" and my machine will be running mostly at 50-55 C with this setup which should not cause any harm on the longterm in my opinion.

 

P.s. don't you think the ACPIpoller way of reaching 2000 RPM should be included in the guide together with the file? I already have the steps saved in a text file. I've noticed 2 bugs in it so far:

1. When you open up the lid top wake up the machine from sleep the screen stays black. You have to press a key or mouse button to wake the screen up.

2. When waking up form sleep sometimes (like every 10th try) the fan kicks in at full speed. In this case you have to press the thinkvantage button 2 or 3 times to regulate the fan back to automatic mode.

 

I can live with these side effects considering the benefits :)

tluck, okay, nevermind, I got this.

Now, is there any way to get audio from speakers on yosemite?

i'd like to fix this too. my thinkpad is a w540 with a conexant 20672.

 

tluck: ifyou were referring to the step in your guide that rm's the applehda and symlinks the 20672.kext, then yeah did that w/o result. :(

 

BTW Thank you and the rest of this awesome community for all of this sharing of knowledge and exprerience in such an unselfish way. I followed the guide exactly and pretty much have a fully functional hack with the exception of audio. I found a cheap d-link dwa-131 for wifi.

Very clear and easy to understand wtite-up.

@tstc - to get audio running with the zip i posted, you need a few things:

 

1) same codec - so it is possible that the w540 has same codec and device path as T420 

2) install HDEF device in DSDT - same as in the DSDT in zip device 

3) install AppleHDA_20672.kext in /L/E (what OS are you on?) 

4) install config.plist to patch kexts etc

 

otherwise voodooHDA.kext is a good alternative.

 

@nixenos - why Yosemite? how about El Cap or Sierra? the package posted has not been tested on 10.10

@somez

 

- i recoded the dsdt-heat-step.dsl to add some more speed steps.

 

i chose the Temp/Fan speed table:

 

  C  F    Fan Speed
<50       zero
 85  185  0x7 (max)
 80  176  0x6
 75  167  0x5
 70  158  0x4
 65  149  0x3
 60  140  0x2
 50  122  0x1 (low)

$ diff dsdt.dsl dsdt.heat-step.dsl
21c21
< DefinitionBlock ("dsdt.aml", "DSDT", 1, "Apple ", "TP-83   ", 0x00001460)
---
> DefinitionBlock ("dsdt.heat-step.aml", "DSDT", 1, "Apple ", "TP-83   ", 0x00001460)
4509a4510,4543
> // tjl-fix -- add mikaelr's variable fan speed method - TMP0 is heatsink temperature in Celsius
> // tjl-fix -- need to install RehabMan's ACPIPoller.kext 
> // tjl-fix -- or install HWMonitor.app with ACPISensors.kext set to continuously poll in background
> /* FAN control START */
>                         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 (0x07, \_SB.PCI0.LPC.EC.HFSP) } // Set FAN Mode 7 - Maximum Speed
>                         Else {
>                         If (LGreaterEqual (Local0, 0x50)) // CPU Temp is >= 80C
>                         { Store (0x06, \_SB.PCI0.LPC.EC.HFSP) } // Set FAN Mode 6
>                         Else {
>                         If (LGreaterEqual (Local0, 0x4B)) // CPU Temp is >= 75C
>                         { Store (0x05, \_SB.PCI0.LPC.EC.HFSP) } // Set FAN Mode 5
>                         Else {
>                         If (LGreaterEqual (Local0, 0x46)) // CPU Temp is >= 70C
>                         { Store (0x04, \_SB.PCI0.LPC.EC.HFSP) } // Set FAN Mode 4
>                         Else {
>                         If (LGreaterEqual (Local0, 0x41)) // CPU Temp is >= 65C
>                         { Store (0x03, \_SB.PCI0.LPC.EC.HFSP) } // Set FAN Mode 3
>                         Else {
>                         If (LGreaterEqual (Local0, 0x3C)) // CPU Temp is >= 60C
>                         { Store (0x02, \_SB.PCI0.LPC.EC.HFSP) } // Set FAN Mode 2
>                         Else {
>                         If (LGreaterEqual (Local0, 0x32)) // CPU Temp is >= 50C
>                         { Store (0x01, \_SB.PCI0.LPC.EC.HFSP) } // Set FAN Mode 1 - Lowest Speed
>                         }
>                         }
>                         }
>                         }
>                         }
>                         }
> /* FAN control END */

I will update the zip later today.

Edited by tluck
  • Like 2

@somez

 

- i recoded the dsdt-heat-step.dsl to add some more speed steps.

 

i chose the Temp/Fan speed table:

 

  C  F    Fan Speed

<50       zero

100  212  0x40

 85  185  0x7 (max)

 80  176  0x6

 75  167  0x5

 70  158  0x4

 65  149  0x3

 60  140  0x2

 50  122  0x1 (low)

$ diff dsdt.dsl dsdt.heat-step.dsl
21c21
< DefinitionBlock ("dsdt.aml", "DSDT", 1, "Apple ", "TP-83   ", 0x00001460)
---
> DefinitionBlock ("dsdt.hs.aml", "DSDT", 1, "Apple ", "TP-83   ", 0x00001460)
4508a4509,4510
> // tjl-fix -- add mikaelr's variable fan speed method
> // tjl-fix -- need to install RehabMan's ACPIPoller.kext or HWMonitor.app to poll ACPI
4509a4512,4548
> /* FAN control START */
>                         If (LLessEqual (Local0, 0x32))  // CPU Temp is <= 50C
>                         {
>                         Store (Zero, \_SB.PCI0.LPC.EC.HFSP) // Set FAN Off
>                         }
>
>                         If (LGreaterEqual (Local0, 0x64)) // CPU Temp is >= 100
>                         { Store (0x40, \_SB.PCI0.LPC.EC.HFSP) } // Set FAN Mode Disengaged - Total Maximum
>                         Else {
>                         If (LGreaterEqual (Local0, 0x55)) // CPU Temp is >= 85C
>                         { Store (0x07, \_SB.PCI0.LPC.EC.HFSP) } // Set FAN Mode 7 - Maximum Speed
>                         Else {
>                         If (LGreaterEqual (Local0, 0x50)) // CPU Temp is >= 80C
>                         { Store (0x06, \_SB.PCI0.LPC.EC.HFSP) } // Set FAN Mode 6
>                         Else {
>                         If (LGreaterEqual (Local0, 0x4B)) // CPU Temp is >= 75C
>                         { Store (0x05, \_SB.PCI0.LPC.EC.HFSP) } // Set FAN Mode 5
>                         Else {
>                         If (LGreaterEqual (Local0, 0x46)) // CPU Temp is >= 70C
>                         { Store (0x04, \_SB.PCI0.LPC.EC.HFSP) } // Set FAN Mode 4
>                         Else {
>                         If (LGreaterEqual (Local0, 0x41)) // CPU Temp is >= 65C
>                         { Store (0x03, \_SB.PCI0.LPC.EC.HFSP) } // Set FAN Mode 3
>                         Else {
>                         If (LGreaterEqual (Local0, 0x3C)) // CPU Temp is >= 60C
>                         { Store (0x02, \_SB.PCI0.LPC.EC.HFSP) } // Set FAN Mode 2
>                         Else {
>                         If (LGreaterEqual (Local0, 0x32)) // CPU Temp is >= 50C
>                         { Store (0x01, \_SB.PCI0.LPC.EC.HFSP) } // Set FAN Mode 1 - Lowest Speed
>                         }
>                         }
>                         }
>                         }
>                         }
>                         }
>                         }
> /* FAN control END */

I will update the zip later today.

 

Awesome! Can't wait to test :)

 

By the way, my wife has a HP 8470 running El Capitan based on Rehabman's HP guide on another hackintosh site.

 

In that guide Rehabman says the following: 

"This guide (and recent PBI-CE) does not install the FakeSMC sensor plugins. They are inefficient and waste CPU cycles even when HwMonitor is not running. As a result, various CPU status, heat sink temperatures, fan speeds will not show in HwMonitor."

 

Do you think this "waste of CPU cycles" is significant enough that we might want to consider his advice?

Awesome! Can't wait to test :)

 

By the way, my wife has a HP 8470 running El Capitan based on Rehabman's HP guide on another hackintosh site.

 

In that guide Rehabman says the following: 

"This guide (and recent PBI-CE) does not install the FakeSMC sensor plugins. They are inefficient and waste CPU cycles even when HwMonitor is not running. As a result, various CPU status, heat sink temperatures, fan speeds will not show in HwMonitor."

 

Do you think this "waste of CPU cycles" is significant enough that we might want to consider his advice?

Off-topic but here's the catch: I also am using a 8470p, and I don't install any extra kext besides the one I need. The 8470p's temperature isn't that high that you need to consider monitor it

@sugoool: Apple never equipped their products with Intel WLAN chips, therefore there is no way to make Intel WLAN work in OSX.

As a replacement, the half mini Dell DW1510 is a reliable choice as it sports a Broadcom BCM94322.

BCM94322 is among the chips Apple uses as Airport Extreme, so these WLAN cards do work out of the box with OSX.

Dell DW1510 PCI-e cards are sold for about $ 8 from China. Best look at fleabay for a seller.

 

It should be noted that BIOS 1.46 (or lower) is needed with whitelist removed to use non Lenovo branded parts with a ThinkPad T420. ;)

@nixenos - if you install El Capitan or Sierra following the Guide, the kexts included will provide full audio support and beyond. Meaning pretty much everything works except SD card reader. My point was not about using VoodooHDA on the T420 - as there is a fully working AppleHDA solution in the zip. But my point is that Yosemite as an older version of OS X/macOS is not one that i test anymore, so I dont know if the current kext bundle works with Yosemite or not. Which means I am not going to troubleshoot audio for you on Yosemite.

 

@sugoooi - as goodguess said - DW1510 (Broadcom) is a good choice. There are some Atheros chips (i have some) that work too. search this thread and other threads for tons on information on this subject. 

 

2 of many popular working choices:

Atheros AR5BHB92
- dual-band: 2.4GHz + 5GHz. МасOS up to 150 Mbps on 2.4GHz and up to 300 Mbps on 5GHz, Windows up to 300 Mbps on both bands.
Broadcom BCM94322HM8L
- dual-band: 2.4GHz + 5GHz. МасOS up to 150 Mbps on 2.4GHz and up to 300 Mbps on 5GHz, Windows up to 300 Mbps on both bands.

@somez - 

 

i added the revised "7 speed heat-step" DSDT and the matching ACPIPoller.kext to the Guide zip. seems to be working for me pretty well. keeps my FAN around 1960 RPM for most of the time now.

 

I hope nobody cooks their system! 

 

Note: i am still using CPUSensors and ACPISensors kexts - with HWMonitor.app. long ago i reduced the polling interval to 10 seconds and i uncheck continue to monitor sensors in the background for the graph function. for me i am not worried about any wasted cycles.  

 

@vusun123 - yeah I suppose moving to a newer chip that has BT 4.0 is maybe the way to go these days.

  • Like 2

@somez - 

 

i added the revised "7 speed heat-step" DSDT and the matching ACPIPoller.kext to the Guide zip. seems to be working for me pretty well. keeps my FAN around 1960 RPM for most of the time now.

 

I hope nobody cooks their system! 

 

Note: i am still using CPUSensors and ACPISensors kexts - with HWMonitor.app. long ago i reduced the polling interval to 10 seconds and i uncheck continue to monitor sensors in the background for the graph function. for me i am not worried about any wasted cycles.  

 

@vusun123 - yeah I suppose moving to a newer chip that has BT 4.0 is maybe the way to go these days.

 

Hey tluck!

 

I've installed the latest package. You might want to update the guide to reflect the new folder name "T420-distribute" everywhere.

It seems this new package does not bring 2000 RPM for me :(

 

post-1647866-0-81079200-1482177795_thumb.png

 

Which value should be under 50 C to trigger 2000 RPM? CPU package?

 

UPDATE: My bad, I forgot to check the instructions about how to install this new DSDT :) It's working fine now.

Well, I guess I should've tested this a bit longer. My fan periodically goes into a rapid speed-up/down cycle. RPM goes up a little bit for a moment then goes down. When this happens HWmonitor is showing me 16k RPM. I switched back to the original dsdt.aml for now to prevent a fan failure. 

Does any of you experience this weird behaviour?

 

post-1647866-0-52296500-1482184533_thumb.png

yes - i had seen that 16K speed show with the original speed step that had a speed mode 0x40 for > 100C - i removed that and have not seen that again.

i installed the ACPIPoller.kext installed + this new 7 step DSDT method. seems ok to me. 

 

there is another option for you. instead of using this 7 step method. change the ThinkVantage to set a speed you like. as it is now it toggles between auto/BIOS and 0x7 (max speed)

yes - i had seen that 16K speed show with the original speed step that had a speed mode 0x40 for > 100C - i removed that and have not seen that again.

i installed the ACPIPoller.kext installed + this new 7 step DSDT method. seems ok to me. 

 

there is another option for you. instead of using this 7 step method. change the ThinkVantage to set a speed you like. as it is now it toggles between auto/BIOS and 0x7 (max speed)

 

I'm wondering why is it behaving normally for you and abnormally for me.

In the worst case scenario I can still use that old DSDT that was posted many pages before by someon else together with the ACPIPoller. kext.

I can send it to you for inspection if you're interested.

I believe that is essentially what is implemented -  with a few more speeds

 

- i just got the 16K RPM thing during idle. i am trying a new versions that never stops the fan. I not sure that the fan is really going that fast! 

I believe that is essentially what is implemented -  with a few more speeds

 

- i just got the 16K RPM thing during idle. i am trying a new versions that never stops the fan. I not sure that the fan is really going that fast! 

 

I dont't think the fan is really speeding up to 16k rpm. But I was definitely hearing it spining rapidly up an down which could kill the fan and the noise is also annoying. Have you not heard the up-down spinning of the fan?

×
×
  • Create New...