https://www.thinkwiki.org/w/api.php?action=feedcontributions&user=Rossv&feedformat=atomThinkWiki - User contributions [en]2024-03-29T13:41:42ZUser contributionsMediaWiki 1.31.12https://www.thinkwiki.org/w/index.php?title=Embedded_Controller_Firmware&diff=26893Embedded Controller Firmware2006-12-08T05:52:29Z<p>Rossv: /* Bug: Fan control loop pulses the fan in an annoying pattern */</p>
<hr />
<div>__TOC__<br />
<br />
= ThinkPad Embedded Controller Firmware =<br />
<br />
The ThinkPad has an embedded microcontroller (EC) which is responsible for many of the background tasks on a laptop. [[Embedded Controller Chips]] lists the different embedded microcontrollers found on various ThinkPads. This page concerns itself with the various embedded controller firmwares.<br />
<br />
The more precise way to refer to a particular instace of the ThinkPad firmware is not the ThinkPad name (ThinkPad T43) or model number (2668-XXX), but rather by the firmware model string, which is unique to BIOS-and-firmware-image-compatible ThinkPads. E.g. there are both R52 and T43 ThinkPads with firmware model TP-70: they share the same BIOS and EC firmware, and also the same bugs... There is a list of the ThinkPad BIOS/EC types in the [[BIOS Upgrade Downloads]] page.<br />
<br />
The firmware model string is "TP-" and the two first characters of the BIOS/EC version strings (e.g. BIOS 1YET29WW and EC 1YHT29WW are for the firmware model TP-1Y, which happens to be some of the T43, and the T43p).<br />
<br />
{{WARN|As a rule, if you are not using the latest available firmware for your ThinkPad, you are likely to be the unlucky chap that will find out some new code hits a firmware bug that was fixed by IBM or Lenovo. Do yourself a favour and always keep your ThinkPad's firmware up-to-date.}}<br />
<br />
== Old-style ThinkPad EC firmware ==<br />
<br />
Not much is known about the ECs on the older numeric-series ThinkPads, or the early A, X and T-series models. These microcontrollers do support field-upgradeable firmware which is distributed along with the BIOS upgrades. The BIOS SMAPI, DSDT ACPI and a very small subset of the EC ACPI interfaces are available for driver writers.<br />
<br />
* Interfaces:<br />
** EC register map (very model-specific)<br />
** ACPI DSDT / APM<br />
** SMAPI<br />
** CMOS memory map<br />
<br />
* Drivers:<br />
** [[ibm-acpi]]<br />
** Generic kernel ACPI and APM<br />
** [[tpctl]]<br />
** [[tpb]]<br />
<br />
== New-style ThinkPad EC firmware ==<br />
<br />
Apparently, all newer ThinkPad ECs are a [[Renesas H8S/2161BV]] or another compatible H8S/300 microcontroller with very similar firmware.<br />
<br />
* Interfaces:<br />
** Forward-compatible EC register map<br />
** ACPI DSDT, APM (deprecated in newer models)<br />
** Renesas H8S LPC3A (?), LPC3B (HDAPS firmware, Battery information)<br />
** ACPI SMAPI methods<br />
** SMAPI<br />
** CMOS memory map<br />
<br />
* Drivers:<br />
** [[ibm-acpi]]<br />
** generic ACPI<br />
** [[tp_smapi]]<br />
{{Fixme|tpctl, tpb and other drivers, please someone expand on how well they work with the new ThinkPads}}<br />
<br />
= Firmware issues =<br />
<br />
Various bugs have been observed in the ThinkPad EC firmware of various models. Most of them were fixed in later revisions, but a few are either very dangerous and driver writers need to always work around them, or have never been fixed. One must keep in mind that many of the bugs fixed by IBM or Lenovo could cause serious problems, but might never be noticed by driver developers, because they usually keep their ThinkPads up-to-date. People that don't keep their ThinkPad firmware up-to-date are excellent guinea pigs...<br />
<br />
=== Bug: Advanced battery query causes EC hang ===<br />
* Severity: '''critical'''<br />
* Linux annoyance level: harmless<br />
* Windows annoyance level: unknown<br />
* Fix: available from IBM, but not for all affected models<br />
* Information: [http://thread.gmane.org/gmane.linux.hardware.thinkpad/27484/ thread in linux-thinkpad ML]<br />
<br />
* Models affected:<br />
** TP-1R ({{T40}}, {{T40p}}, {{T41}}, {{T41p}}, {{T42}}, {{T42p}}): no fix available<br />
** TP-1Y ({{T43}} 26xx, {{T43p}}): fixed by firmware 1YHT28WW (1.05) and newer<br />
** TP-70 ({{T43}} 18xx, {{R52}}), TP-76 ({{R52}}), TP-78 ({{R51e}}): likely buggy, unknown status (might be fixed in latest firmwares)<br />
** other ThinkPads featuring advanced battery queries: unknown status; every model supported by [[tp_smapi]] advanced battery information is a candidate for this bug<br />
<br />
The EC LPC3B advanced battery query function 0x0B (acessed by earlier versions of [[tp_smapi]]) has a hideous bug that causes the EC to misbehave and crash (usually hanging the entire ThinkPad). This function must never be called on a buggy firmware: after you called it even once, all is lost the the box will crash and burn shortly. A full power down is the only think that will fix it, as we don't know how to cause an immediate EC reboot.<br />
<br />
No Linux drivers use this function, as the meaning of the data it returns is currently unknown.<br />
<br />
=== Bug: Fan control loop status is not initialized ===<br />
* Severity: low<br />
* Linux annoyance level: low<br />
* Windows annoyance level: unknown<br />
* Fix: unknown status at this time, usually worked around by ACPI DSDT.<br />
* Information: [http://forum.thinkpads.com/viewforum.php?f=27 thinkpads.com fan control programs forum], [http://thread.gmane.org/gmane.linux.hardware.thinkpad/28326 linux-thinkpad ML thread 1], [http://thread.gmane.org/gmane.linux.hardware.thinkpad/28554 linux-thinkpad ML thread 2]<br />
<br />
* Models affected (confirmed):<br />
** TP-1Y ({{T43}}, {{T43p}}), TP-78 ({{R51e}}), TP-76 ({{R52}}), TP-70({{R52}}, {{T43}})<br />
* Models NOT affected (confirmed):<br />
** TP-7C (R60), TP-79 (T60/p), TP-7B (X60/s), TP-1A (T23), TP-1G (A31), TP-1V (R51), TP-1R (T40/p,T41/p,T42/p,R50/p,R51)<br />
<br />
The EC does not correctly initializes its 0x2f (fan control) register, so [[ibm-acpi]] cannot determine the correct status of the fan control until something writes to the fan control register for the first time.<br />
<br />
Writes to the fan control register in their ACPI DSDT methods provides a work-around. This usually fixes the issue during suspend and wakeup.<br />
<br />
So far, there are only reports of wrong readings of 0x07, no other wrong value has been observed. Note that 0x07 might be a correct value if the system is in emergency fan mode (level 7).<br />
<br />
=== Bug: Fan control loop pulses the fan in an annoying pattern ===<br />
* Severity: low<br />
* Linux annoyance level: '''severe'''<br />
* Windows annoyance level: '''severe'''<br />
* Fix: available from IBM, but incorrectly fixed on some models. Unofficial fix available for firmware hackers.<br />
* Workaround: A software workaround is available using an [[ACPI fan control script]], but this overrides the embedded controller's fan control algorithm.<br />
* Information: [http://forum.thinkpads.com/viewtopic.php?t=20958 thinkpads.com forum thread 1], [http://forum.thinkpads.com/viewtopic.php?t=1670 thinkpads.com forum thread 2], [[Problem with fan noise]]<br />
<br />
* Models affected:<br />
** TP-1R ({{T40}}, {{T40p}}, {{T41}}, {{T41p}}, {{T42}}, {{T42p}}): fixed by firmware 1RHT70WW (3.03) and later<br />
** TP-1Y and TP-70 ({{T43}}, {{T43p}}, {{R52}}): IBM provided a '''broken''' firmware fix, so they are all affected<br />
** other newer models: unknown status<br />
<br />
The fan control loop will vary the fan speed quite a lot, in a very annoying pattern. The broken fix on the T43 firmware causes loud and annoying pulses every ~4.8s.<br />
<br />
People have reportedly returned ThinkPads because of this bug.<br />
<br />
=== Bug: Tachometer registers not updated in disengaged mode ===<br />
* Severity: medium<br />
* Linux annoyance level: medium<br />
* Windows annoyance level: medium<br />
* Workaround: set fan to level 7 for a few seconds, read tachometer, set fan back to disengaged mode<br />
* Fix: none available<br />
<br />
* Models affected:<br />
** TP-1Y ({{T43}}, {{T43p}}), and others (disengaged mode might not be supported on all ThinkPads)<br />
* Models not affected:<br />
** TP-1G, TP-1N ({{A31}}, {{A31p}})<br />
<br />
When the fan control loop is placed in disengaged mode (bit 6 of EC register 0x2f is set), some ThinkPads will not read the tachometer anymore. Thus, fan monitoring applets will report incorrect speeds which can be potentially much lower than the real fan speed.<br />
<br />
=== Bug: Tachometer registers not invalidated in disengaged mode ===<br />
* Severity: low<br />
* Linux annoyance level: none - it is a feature<br />
* Windows annoyance level: none - it is a feature<br />
* Fix: none available<br />
<br />
* Models affected:<br />
** TP-1Y ({{T43}}, {{T43p}}), and others (disengaged mode might not be supported on all ThinkPads)<br />
* Models not affected:<br />
** TP-1G, TP-1N ({{A31}}, {{A31p}})<br />
<br />
When the fan control loop is placed in disengaged mode (bit 6 of EC register 0x2f is set), some ThinkPads will not read the tachometer anymore. On those ThinkPads, the EC does not set the tachometer registers (0x84, 0x85) to 0xFF to signal an invalid reading. Instead, the registers are simply not updated anymore and retain the last valid tachometer reading.<br />
<br />
This bug can be easily worked around in drivers, and it is in fact useful if all you are doing is briefly toggling disengaged mode on to confuse the EC fan control loop to work around the fan pulsing problem.<br />
<br />
= See also =<br />
* [[BIOS Upgrade|BIOS and firmware upgrade information]]<br />
* [[tp_smapi|tp_smapi Linux driver]]<br />
* [[ibm-acpi|ibm-acpi Linux ACPI driver]]</div>Rossvhttps://www.thinkwiki.org/w/index.php?title=Problem_with_fan_noise&diff=26892Problem with fan noise2006-12-08T05:50:46Z<p>Rossv: /* Acceleration (pulsing) problem: */</p>
<hr />
<div>Information about the fan noise problem in Thinkpad models from 2003/2004/2005.<br />
<br />
==Problem description==<br />
<br />
There seem to be two different issues causing annoyance from fan noise:<br />
<br />
===Acceleration (pulsing) problem===<br />
The Thinkpad fan briefly accelerates in regular intervals (every few seconds), causing an annoying periodic pulse noise.<br />
<br />
See [http://lophiomys.gmxhome.de/Thinkpad_R50_Periodic_Fan_Noise.html here] for audio recordings of this noise on ThinkPad {{R50}} and {{R51}}.<br />
<br />
===Always-on problem===<br />
The fan is always on, even when the laptop is rather cool.<br />
<br />
==Affected Models==<br />
<br />
===Acceleration (pulsing) problem:===<br />
*ThinkPad {{600E}}<br />
*ThinkPad {{R40}}<br />
*ThinkPad {{T40}}, {{T40p}}, {{T41}}, {{T42}}, {{T43}}<br />
<br />
===Always-on problem:===<br />
*ThinkPad {{600X}}<br />
*ThinkPad {{770X}}<br />
*ThinkPad {{A31p}}<br />
*ThinkPad {{R32}}, {{R50}}, {{R50p}}, {{R51}}, {{R52}}<br />
*ThinkPad {{T40}}, {{T40p}}, {{T41}}, {{T41p}}, {{T42}}, {{T42p}}, {{T43}}, {{T43p}}, {{T60}}<br />
*ThinkPad {{X32}}, {{X40}}, {{X41}}<br />
*ThinkPad {{Z60m}}<br />
*ThinkPad {{Z61m}}<br />
<br />
==Affected Operating Systems==<br />
<br />
===Acceleration (pulsing) problem:===<br />
*All operating systems (this is a firmware bug). Note that some vendors might ship with fan-control workarounds enabled by default.<br />
<br />
===Always-on problem:===<br />
*Linux, all flavours<br />
*FreeBSD 5.3<br />
*OpenBSD 3.7 (Tested with X40)<br />
*Windows XP<br />
*Windows 2000 pro<br />
<br />
==Status==<br />
<br />
===Acceleration (pulsing) problem:===<br />
The pulsing is triggered by the embedded controller when it monitors the fan speed and adjusts the fan control accordingly every few seconds.<br />
<br />
For some models, IBM released an update to the embedded controller program that seems to at least partially solve this problem:<br />
<br />
Version 3.03 - 1RHT70WW<br />
NOTE: This version of Embedded Controller Program will only work with BIOS Version 3.06f (or higher).<br />
* (Fix) Reduced Fan noise in some models.<br />
<br />
The update can be found here: http://www-306.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-50279<br />
<br />
Unfortunately, this update was not correctly ported to the Thinkpad {{T43}} and {{R52}} firmware: someone made a careless typo which generally results in no improvement in behaviour: the fan may continue to pulse every ~4.8s, and for some it may accelerate a great deal every 30 seconds or so, making a lot of noise. An unofficial patched firmware exists in source code format (see below).<br />
<br />
For models which still have broken firmware (e.g., ThinkPad {{T43}} with official firmware), there is a software workaround (see below).<br />
<br />
===Always-on problem:===<br />
The problem is yet unsolved. But see the partial fix below.<br />
<br />
IBM made a statement regarding this on their homepage:<br />
http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-56504<br />
<br />
==Solutions==<br />
<br />
===Acceleration problem:===<br />
<br />
====Replacing the fan====<br />
Some people reported that they replaced the original fan against one of a similar notebook without the problem has worked for them, i.e. changing a {{T41}}s fan against one from a {{T41p}}.<br />
<br />
====BIOS upgrade====<br />
For relevant models, you can try upgrading your embedded controller program to version 3.03 or newer.<br />
The update can be found here: http://www-306.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-50279<br />
<br />
Also, in late November 2005 IBM released a BIOS and embedded controller update (BIOS 1.24, EC 1.04) for the T43/p<br />
(Machine types 2668, 2669, 2678, 2679, 2686, 2687). Reported results are not consistent and range from cooler sensor readings (some sensors seem to report lower temperatures with this patch), less fan pulsing (also only reported by some users), and slightly different fan behaviour.<br />
The link to this update is: http://www-306.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&lndocid=MIGR-58597#bios<br />
<br />
====Fixing the firmware====<br />
For T43/R52 firmwares 1YHT29WW and 70HT28WW, a fix is available and known to work, but it is not easy to deploy. You have to know enough to modify the firmware yourself. The fix is in the firmware source code (but disabled by default), see [[Embedded Controller Firmware]] for some information to get you started. If you are not at ease programming microcontrollers, please stick to the software workarounds, there's a reason this fix is not just an easy download away.<br />
<br />
====Software workaround====<br />
The problem can be solved through appropriate modulation of the embedded controller, using an [[ACPI fan control script#Variable speed control scripts|ACPI fan control script]].<br />
<br />
===Always on problem:===<br />
<br />
====Reducing power consumption====<br />
Generally, this problem is triggered by heating due to high power consumption. See [[How to reduce power consumption]].<br />
<br />
It seems like for some people a combination of enabling dynamic frequency scaling and using the most recent radeon drivers (from xorg 6.8.x) with the DynamicClocks option enabled helped lowing the fan rotation and hence making it more quiet.<br />
<br />
Also the fglrx driver from ATI is said to show the same effect when used together with dynamic frequency scaling.<br />
<br />
I can confirm that on my R51, the graphics card seems to be the problem. The fan keeps running most of the time even with AC on, but even though I activated DynamicClocks (with the radeon driver), I can see in /proc/acpi/ibm/thermal that the GPU (4th value) is at 52-53°. The fan stops running as soon as the temperature gets down to 50 degrees and starts again at 53. While debugging, I seemed(!) to be able to reduce the temperature together with the resolution (e.g. "xrandr -s 2" to get from 1400x1050 to 1024x768) or by switching off the graphics with "xset dpms force off". The bottom line is that the below "partial fix" won't work because the GPU temperature is the problem.<br />
<br />
The GPU also seems to be the culprit on the t43p. Even with the fan always on (with speeds of around 4K reported in /proc/acpi/ibm/fan), the temperature never drops below 55. This is with the Xorg driver and DynamicClocks=on. With the ATI's fglrx driver, the GPU temp seems slightly higher (although I haven't performed a careful comparison). Without the fan, the temperature very quickly climbs to above 60. <br />
<br />
With the Pentium M, CPU heat dissipation can be reduced through [[Pentium M undervolting and underclocking|undervolting and underclocking]].<br />
<br />
In regard to the technical side of controlling the fan, see [[How to control fan speed]] for a description of the embedded controller byte at offset 0x2F which controls the fan activity (T4X series and other later models). In addition to these in the discussion to this topic [http://www.thinkwiki.org/wiki/Talk:Problem_with_fan_noise] a user observed hidden temperature sensors. In the ACPI DSDT dump a {{T43}} reports 8 temp values at offset 0x78 (some of which may be off and yield a constant value of 0x80), but there are at least three more values at offset 0xC0 which from observation seem to show temperatures as well. One of these sensors (0xC1) is most likely in the area of the mini PCI slot (related to WLAN activity) and seem to trigger the fan at 43°C ({{T43}}, Windows XP). Another one (0xC2) seems to be located below the power supply (rear left, in the area under the Esc, F1-F3 keys). This one noticeably increases when the battery is charged. Both, the 0xC1 and 0xC2 react quite slowly to fan activity.<br />
<br />
For more information about the thermal sensors that are monitored to decide the fan speed, see [[Thermal sensors]].<br />
<br />
====Software solution - Windows====<br />
<br />
http://sourceforge.net/projects/tp4xfancontrol/ actively monitors the CPU Temperature and uses ACPI to manually control the fan speed. It was written for T43, but works on my T40 too.<br />
<br />
Windows Service Software solution <br />
http://www.cceye.com/index.php?topic=73.0 <br />
<br />
Download it here http://www.cceye.com/index.php?action=dlattach;topic=73.0;id=9<br />
<br />
what is it ?<br />
it is a windows Service, basicly it port from the program from <br />
http://forum.thinkpads.com/viewtopic.php?t=17715<br />
the only different Just it running as background service, so once you install it, no need to bother to remember anything . for lazy people like me use only <br />
<br />
what does this program do :<br />
<br />
it control IBM 4X Fan Speed, so it won't make too much noise unless it have to .<br />
I had use this program on my PC over a year, without problem. <br />
But you are agree to use it with your own risk.<br />
<br />
Install:<br />
unzip this file into anywhere at your hard driver , eg: c:\windows\system32\IBMFANSPEED\<br />
<br />
Click on install.bat<br />
<br />
Uninstall:<br />
<br />
click on the Unstall.bat<br />
<br />
ref links <br />
http://www.thinkwiki.org/wiki/Problem_with_fan_noise<br />
http://forum.thinkpads.com/viewtopic.php?t=17715<br />
<br />
Note:<br />
1,sometime's Event log will full, please clean your event log every 2-3 months.<br />
2,the program crash once a week or so, sorry I didn;t bother to trace out, instead just set the service to rerun itself after crash.<br />
<br />
====Software solution - Linux====<br />
<br />
See [[How to control fan speed]].<br />
<br />
{{WARN|This circumvents the BIOS fan control, so be careful and use at your own risk! Don't toast your ThinkPad.}}<br />
<br />
====Cleaning the fan or removing obstructions====<br />
<br />
If your ThinkPad is old or has been exposed to dusty environment, it is possible that accumulated dirt on the fan and the heatsink cause abnormal behavior (though the problems have also been reported for brand new units). You can use a combination of a vacuum cleaner and an air dusting spray to clean things up from the outside. Bigger agglomerations of dust may require removing by tweezers through the openings in the fan grill. Getting to the fan itself from the inside is quite tricky and may require removing the keyboard or LCD - see [[Maintenance#Cleaning_the_Interior|Cleaning the Interior]].<br />
<br />
If the fan is especially noisy, there may be some obstruction other than dirt in the way. For instance, in some ThinkPad models, a wire that is not properly taped down can become draped over the CPU fan, slowing down fan rotation and emitting a loud buzzing sound. Moving such an obstruction out of the way can greatly decrease fan noise.<br />
<br />
After you clean things up, power on your ThinkPad. You should hear the fan start up for a bit when booting. If it does not, this means that the cleaning procedure has actually blocked the fan and your computer will overheat at some point (BIOS POST test does not appear to catch obstructed fans). Keep cleaning.<br />
<br />
If cleaning does not fix the problem, the fan can be replaced as described in your laptop's appropriate Hardware Maintenace Manual: select your laptop at the [[Models#Available Models|Models Page]] and follow the links. All that is generally required is some screwdrivers and heat sink thermal grease. Do NOT attempt to install without the silicon grease.<br />
<br />
If you feel comfortable using a soldering iron, you are more than qualified to do the procedure. Just remember do NOT force anything, at several steps there are tiny plastic "tabs" that can break off necessiting a more expensive bezel / keyboard / GPU replacement.<br />
<br />
====Hardware modification====<br />
An extensive forum discussion of this problem for the ThinkPad {{T43}}/{{T43p}}, and possible hardware mods for thermal enhancement, appear [http://forum.thinkpads.com/viewtopic.php?t=14580http://forum.thinkpads.com/viewtopic.php?t=14580 here]. There users who had opened the machine reported uncooled Northbridge and Southbrige chips, having no physical connectino to the heat pipe. Building a hardware copper bridge to these did change the temperature characteristics but did not cure the "always on" problem. In an other discussion on that forum a user said that amongh other areas the WLAN chip may be responsible for generating extra heat and that disabling WLAN (among other unused devices) may help.</div>Rossvhttps://www.thinkwiki.org/w/index.php?title=Embedded_Controller_Firmware&diff=26891Embedded Controller Firmware2006-12-08T05:46:20Z<p>Rossv: /* Bug: Fan control loop pulses the fan in an annoying pattern */</p>
<hr />
<div>__TOC__<br />
<br />
= ThinkPad Embedded Controller Firmware =<br />
<br />
The ThinkPad has an embedded microcontroller (EC) which is responsible for many of the background tasks on a laptop. [[Embedded Controller Chips]] lists the different embedded microcontrollers found on various ThinkPads. This page concerns itself with the various embedded controller firmwares.<br />
<br />
The more precise way to refer to a particular instace of the ThinkPad firmware is not the ThinkPad name (ThinkPad T43) or model number (2668-XXX), but rather by the firmware model string, which is unique to BIOS-and-firmware-image-compatible ThinkPads. E.g. there are both R52 and T43 ThinkPads with firmware model TP-70: they share the same BIOS and EC firmware, and also the same bugs... There is a list of the ThinkPad BIOS/EC types in the [[BIOS Upgrade Downloads]] page.<br />
<br />
The firmware model string is "TP-" and the two first characters of the BIOS/EC version strings (e.g. BIOS 1YET29WW and EC 1YHT29WW are for the firmware model TP-1Y, which happens to be some of the T43, and the T43p).<br />
<br />
{{WARN|As a rule, if you are not using the latest available firmware for your ThinkPad, you are likely to be the unlucky chap that will find out some new code hits a firmware bug that was fixed by IBM or Lenovo. Do yourself a favour and always keep your ThinkPad's firmware up-to-date.}}<br />
<br />
== Old-style ThinkPad EC firmware ==<br />
<br />
Not much is known about the ECs on the older numeric-series ThinkPads, or the early A, X and T-series models. These microcontrollers do support field-upgradeable firmware which is distributed along with the BIOS upgrades. The BIOS SMAPI, DSDT ACPI and a very small subset of the EC ACPI interfaces are available for driver writers.<br />
<br />
* Interfaces:<br />
** EC register map (very model-specific)<br />
** ACPI DSDT / APM<br />
** SMAPI<br />
** CMOS memory map<br />
<br />
* Drivers:<br />
** [[ibm-acpi]]<br />
** Generic kernel ACPI and APM<br />
** [[tpctl]]<br />
** [[tpb]]<br />
<br />
== New-style ThinkPad EC firmware ==<br />
<br />
Apparently, all newer ThinkPad ECs are a [[Renesas H8S/2161BV]] or another compatible H8S/300 microcontroller with very similar firmware.<br />
<br />
* Interfaces:<br />
** Forward-compatible EC register map<br />
** ACPI DSDT, APM (deprecated in newer models)<br />
** Renesas H8S LPC3A (?), LPC3B (HDAPS firmware, Battery information)<br />
** ACPI SMAPI methods<br />
** SMAPI<br />
** CMOS memory map<br />
<br />
* Drivers:<br />
** [[ibm-acpi]]<br />
** generic ACPI<br />
** [[tp_smapi]]<br />
{{Fixme|tpctl, tpb and other drivers, please someone expand on how well they work with the new ThinkPads}}<br />
<br />
= Firmware issues =<br />
<br />
Various bugs have been observed in the ThinkPad EC firmware of various models. Most of them were fixed in later revisions, but a few are either very dangerous and driver writers need to always work around them, or have never been fixed. One must keep in mind that many of the bugs fixed by IBM or Lenovo could cause serious problems, but might never be noticed by driver developers, because they usually keep their ThinkPads up-to-date. People that don't keep their ThinkPad firmware up-to-date are excellent guinea pigs...<br />
<br />
=== Bug: Advanced battery query causes EC hang ===<br />
* Severity: '''critical'''<br />
* Linux annoyance level: harmless<br />
* Windows annoyance level: unknown<br />
* Fix: available from IBM, but not for all affected models<br />
* Information: [http://thread.gmane.org/gmane.linux.hardware.thinkpad/27484/ thread in linux-thinkpad ML]<br />
<br />
* Models affected:<br />
** TP-1R ({{T40}}, {{T40p}}, {{T41}}, {{T41p}}, {{T42}}, {{T42p}}): no fix available<br />
** TP-1Y ({{T43}} 26xx, {{T43p}}): fixed by firmware 1YHT28WW (1.05) and newer<br />
** TP-70 ({{T43}} 18xx, {{R52}}), TP-76 ({{R52}}), TP-78 ({{R51e}}): likely buggy, unknown status (might be fixed in latest firmwares)<br />
** other ThinkPads featuring advanced battery queries: unknown status; every model supported by [[tp_smapi]] advanced battery information is a candidate for this bug<br />
<br />
The EC LPC3B advanced battery query function 0x0B (acessed by earlier versions of [[tp_smapi]]) has a hideous bug that causes the EC to misbehave and crash (usually hanging the entire ThinkPad). This function must never be called on a buggy firmware: after you called it even once, all is lost the the box will crash and burn shortly. A full power down is the only think that will fix it, as we don't know how to cause an immediate EC reboot.<br />
<br />
No Linux drivers use this function, as the meaning of the data it returns is currently unknown.<br />
<br />
=== Bug: Fan control loop status is not initialized ===<br />
* Severity: low<br />
* Linux annoyance level: low<br />
* Windows annoyance level: unknown<br />
* Fix: unknown status at this time, usually worked around by ACPI DSDT.<br />
* Information: [http://forum.thinkpads.com/viewforum.php?f=27 thinkpads.com fan control programs forum], [http://thread.gmane.org/gmane.linux.hardware.thinkpad/28326 linux-thinkpad ML thread 1], [http://thread.gmane.org/gmane.linux.hardware.thinkpad/28554 linux-thinkpad ML thread 2]<br />
<br />
* Models affected (confirmed):<br />
** TP-1Y ({{T43}}, {{T43p}}), TP-78 ({{R51e}}), TP-76 ({{R52}}), TP-70({{R52}}, {{T43}})<br />
* Models NOT affected (confirmed):<br />
** TP-7C (R60), TP-79 (T60/p), TP-7B (X60/s), TP-1A (T23), TP-1G (A31), TP-1V (R51), TP-1R (T40/p,T41/p,T42/p,R50/p,R51)<br />
<br />
The EC does not correctly initializes its 0x2f (fan control) register, so [[ibm-acpi]] cannot determine the correct status of the fan control until something writes to the fan control register for the first time.<br />
<br />
Writes to the fan control register in their ACPI DSDT methods provides a work-around. This usually fixes the issue during suspend and wakeup.<br />
<br />
So far, there are only reports of wrong readings of 0x07, no other wrong value has been observed. Note that 0x07 might be a correct value if the system is in emergency fan mode (level 7).<br />
<br />
=== Bug: Fan control loop pulses the fan in an annoying pattern ===<br />
* Severity: low<br />
* Linux annoyance level: '''severe'''<br />
* Windows annoyance level: '''severe'''<br />
* Fix: available from IBM, but incorrectly fixed on some models. Unofficial fix available for firmware hackers.<br />
* Workaround: A software workaround is available using an [[ACPI fan control script]], but this overrides the embedded controller's fan control algorithm.<br />
* Information: [http://forum.thinkpads.com/viewtopic.php?t=20958 thinkpads.com forum thread 1], [http://forum.thinkpads.com/viewtopic.php?t=1670 thinkpads.com forum thread 2], [[Problem with fan noise]]<br />
<br />
* Models affected:<br />
** TP-1R ({{T40}}, {{T40p}}, {{T41}}, {{T41p}}, {{T42}}, {{T42p}}): fixed by firmware 1RHT70WW (3.03) and later<br />
** TP-1Y and TP-70 ({{T43}}, {{T43p}}, {{R52}}): IBM provided a '''broken''' firmware fix, so they are all affected<br />
** other newer models: unknown status<br />
<br />
The fan control loop will vary the fan speed quite a lot, in a very annoying pattern. The broken fix on the T43 firmware causes very loud and annoying pulses every ~4.8s.<br />
<br />
People have reportedly returned ThinkPads because of this bug.<br />
<br />
=== Bug: Tachometer registers not updated in disengaged mode ===<br />
* Severity: medium<br />
* Linux annoyance level: medium<br />
* Windows annoyance level: medium<br />
* Workaround: set fan to level 7 for a few seconds, read tachometer, set fan back to disengaged mode<br />
* Fix: none available<br />
<br />
* Models affected:<br />
** TP-1Y ({{T43}}, {{T43p}}), and others (disengaged mode might not be supported on all ThinkPads)<br />
* Models not affected:<br />
** TP-1G, TP-1N ({{A31}}, {{A31p}})<br />
<br />
When the fan control loop is placed in disengaged mode (bit 6 of EC register 0x2f is set), some ThinkPads will not read the tachometer anymore. Thus, fan monitoring applets will report incorrect speeds which can be potentially much lower than the real fan speed.<br />
<br />
=== Bug: Tachometer registers not invalidated in disengaged mode ===<br />
* Severity: low<br />
* Linux annoyance level: none - it is a feature<br />
* Windows annoyance level: none - it is a feature<br />
* Fix: none available<br />
<br />
* Models affected:<br />
** TP-1Y ({{T43}}, {{T43p}}), and others (disengaged mode might not be supported on all ThinkPads)<br />
* Models not affected:<br />
** TP-1G, TP-1N ({{A31}}, {{A31p}})<br />
<br />
When the fan control loop is placed in disengaged mode (bit 6 of EC register 0x2f is set), some ThinkPads will not read the tachometer anymore. On those ThinkPads, the EC does not set the tachometer registers (0x84, 0x85) to 0xFF to signal an invalid reading. Instead, the registers are simply not updated anymore and retain the last valid tachometer reading.<br />
<br />
This bug can be easily worked around in drivers, and it is in fact useful if all you are doing is briefly toggling disengaged mode on to confuse the EC fan control loop to work around the fan pulsing problem.<br />
<br />
= See also =<br />
* [[BIOS Upgrade|BIOS and firmware upgrade information]]<br />
* [[tp_smapi|tp_smapi Linux driver]]<br />
* [[ibm-acpi|ibm-acpi Linux ACPI driver]]</div>Rossv