Difference between revisions of "Thermal Sensors"

From ThinkWiki
Jump to: navigation, search
m (rephrasing)
(ThinkPad {{X120e}}: temp7 is the battery)
 
(73 intermediate revisions by 27 users not shown)
Line 4: Line 4:
 
This page summarizes known information about the locations and properties of thermal sensors on ThinkPad laptops.  
 
This page summarizes known information about the locations and properties of thermal sensors on ThinkPad laptops.  
 
|}
 
|}
 +
 
==Accessing the sensors==
 
==Accessing the sensors==
 +
 
===Basic ACPI system temperature sensors===
 
===Basic ACPI system temperature sensors===
The primary means of accessing the thermal sensors is through the [[ibm-acpi]] module. When the module is loaded, the first 8 sensors (some of which may be inactive) are shown in {{path|/proc/acpi/ibm/thermal}}:
+
The primary means of accessing the thermal sensors is through the [[thinkpad-acpi]] module, up to 16 sensors are supported. When the module is loaded, the sensors (some of which may be inactive) are shown through the standard sysfs hwmon interface used by the lm-sensors utilities, and also in {{path|/proc/acpi/ibm/thermal}} (which is deprecated and has been removed from the latest versions of the module).
 
 
:{{cmdroot|cat /proc/acpi/ibm/thermal}}
 
:{{cmdresult|temperatures:  44 41 33 42 33 -128 30 -128}}
 
  
A value of -128 (i.e., 0x80 hex) means the sensor is not connected. For example, above the two -128 values belong to the UltraBay battery, which is not plugged in.
+
lm-sensors/libsensors uses the hwmon interface exposed through {{path|/sys/bus/platform/devices/thinkpad_hwmon/}} to read the temperatures, note that the sysfs interface returns normal open errors instead of weird values for sensors that are not active (which the simplistic '''sensors''' command ignore). lm-sensors/libsensors can be configured to give proper names to each sensor, which will be used by any properly written sensor applet.
  
===Extra ACPI system temperature sensors===
+
{{cmdroot|sensors}}
 +
{{cmdresult|thinkpad-isa-0000
 +
Adapter: ISA adapter
 +
fan1:                3914 RPM
 +
CPU:                  +45.0°C
 +
LAN/Heatsink/HDAPS:  +44.0°C
 +
PC-CARD slot:        +35.0°C
 +
GPU:                  +48.0°C
 +
Main battery charger: +35.0°C
 +
ERROR: Can't get value of subfeature temp6_input: Can't read
 +
Bay battery charger:  +0.0°C
 +
Main battery cells:  +30.0°C
 +
ERROR: Can't get value of subfeature temp8_input: Can't read
 +
Bay battery cells:    +0.0°C
 +
MCH:                  +42.0°C
 +
PLL clock/ICH/WLAN:  +50.0°C
 +
Voltage regulator:    +43.0°C}}
  
On recent ThinkPad models, three extra sensors are accessible through ACPI at Embedded Controller offsets 0xC0 to 0xC2. There are two ways to access them:
+
To have 'sensors' use describing labels like above, you can add the following section to /etc/sensors3.conf, if not already there. This is an example for the T43. Similar technique apply for the other models. Use the sensor location findings below.
  
====Accessing the extra ACPI sensors through <tt>ecdump</tt>====
+
chip "thinkpad-isa-0000"
 +
  label fan1  "Fan"
 +
  label temp1  "CPU"
 +
  label temp2  "HDAPS"
 +
  label temp3  "PCMCIA"
 +
  label temp4  "GPU"
 +
  label temp5  "System battery (front left, charging circuit)"
 +
  label temp7  "System battery (rear right)"
 +
  label temp9  "Bus between Northbridge and DRAM; Ethernet chip"
 +
  label temp10 "Southbridge, WLAN and clock generator"
 +
  label temp11 "Power circuitry"
  
Load [[ibm-acpi]] with the <tt>experimental=1</tt> option, and parse {{path|/proc/acpi/ibm/ecdump}}:
+
The old method to access the thermal readings is through the {{path|/proc}} interface:
:{{cmdroot|perl -ne 'm/^EC 0xc0: .(..) .(..) .(..) / or next; print hex($1)." ".hex($2)." ".hex($3)."\n"' < /proc/acpi/ibm/ecdump}}
 
:{{cmdresult|40 48 43}}
 
  
Future models might provide additional extra sensors beyond those three. To see all candidates:
+
:{{cmdroot|cat /proc/acpi/ibm/thermal}}
:{{cmdroot|perl -ne 'print join(" ",map(hex,m/\w+/g))."\n" if s/^EC 0xc0://' < /proc/acpi/ibm/ecdump}}
+
:{{cmdresult|temperatures:  44 41 33 42 33 -128 30 -128}}
:{{cmdresult|40 48 43 128 128 128 128 128 0 0 0 0 0 0 0 0}}
 
  
====Patch for accessing the extra ACPI sensors through <tt>thermal</tt>====
+
A value of -128 (i.e., 0x80 hex) means the sensor is not connected. For example, above the two -128 values belong to the UltraBay battery, which is not plugged in.
 
 
To make the extra 3 sensors show up on {{path|/proc/acpi/ibm/thermal}} just like the 8 basic sensors, apply [http://pastebin.ca/91872 this kernel patch] to [[ibm-acpi]].
 
  
Then:
+
If the ThinkPad supports the extended sensor set, eight more values will be displayed:
  
 
:{{cmdroot|cat /proc/acpi/ibm/thermal}}
 
:{{cmdroot|cat /proc/acpi/ibm/thermal}}
:{{cmdresult|temperatures:  44 41 33 42 33 -128 30 -128 40 48 43}}
+
:{{cmdresult|temperatures:  44 41 33 42 33 -128 30 -128 48 50 49 -128 -128 -128 -128 -128}}
 
 
If you apply this patch in conjunction with [[ACPI_fan_control_script#Comprehensive_bash_script_with_fine_control_over_fan_speed|tp-fancontrol]], you'll need tp-fancontrol 0.2.9 or newer.
 
  
 
===HDAPS temperature sensor===
 
===HDAPS temperature sensor===
The [[Active Protection System]] accelerometer also reports a temperature, which is identical to one of the ACPI sensors. The corresponding sensor is actually not inside the HDAPS chip, but fairly close.
+
The [[Active Protection System]] firmware also reports a temperature, which is identical to one of the ACPI sensors. The corresponding sensor is actually not inside the HDAPS chip, and sometimes not even close to it.
 
:{{cmdroot|cat /sys/bus/platform/drivers/hdaps/hdaps/temp1}}
 
:{{cmdroot|cat /sys/bus/platform/drivers/hdaps/hdaps/temp1}}
 
:{{cmdresult|41}}
 
:{{cmdresult|41}}
  
 
===Harddisks SMART temperature sensor===
 
===Harddisks SMART temperature sensor===
Finally, the system hard disk temperature can be read through the disk's SMART interface:
+
The system hard disk temperature can be read through the disk's SMART interface:
:{{cmdroot|smartctl -A /dev/hda | grep Temperature}}
+
:{{cmdroot|<nowiki>smartctl -A /dev/hda | grep Temperature</nowiki>}}
 
:{{cmdresult|194 Temperature_Celsius    0x0022  145  097  000    Old_age  Always      -      31}}
 
:{{cmdresult|194 Temperature_Celsius    0x0022  145  097  000    Old_age  Always      -      31}}
  
 
Or, for SATA-equipped models running a recent Linux kernel (see [[Problems with SATA and Linux]]):
 
Or, for SATA-equipped models running a recent Linux kernel (see [[Problems with SATA and Linux]]):
  
:{{cmdroot|smartctl -A -d ata /dev/sda | grep Temperature}}
+
:{{cmdroot|<nowiki>smartctl -A -d ata /dev/sda | grep Temperature</nowiki>}}
 
:{{cmdresult|194 Temperature_Celsius    0x0022  145  097  000    Old_age  Always      -      31}}
 
:{{cmdresult|194 Temperature_Celsius    0x0022  145  097  000    Old_age  Always      -      31}}
  
 
When the [[UltraBay Slim HDD Adapter]] or [[UltraBay Slim SATA HDD Adapter]] are used, the second hard disk will typically provide another temperature readout via its SMART interface, analogously to the above.
 
When the [[UltraBay Slim HDD Adapter]] or [[UltraBay Slim SATA HDD Adapter]] are used, the second hard disk will typically provide another temperature readout via its SMART interface, analogously to the above.
 +
 +
Reading this sensor will typically cause a drive spin-up and head unload.
 +
 +
===Hitachi harddisks <tt>SENSE CONDITION</tt> temperature sensor===
 +
 +
Recent Hitachi disks provide a non-standard <tt>SENSE CONDITION</tt> command which reads the disk temperature without causing a spin-up or head load. The reported value is the same as when using SMART. This can be invoked, e.g., using {{cmdroot|hdparm -H}}, or the relevant code in {{CodeRef|tp-fancontrol}}. When using the  <tt>libata</tt> driver, this requires kernel >= 2.6.19-rc1.
  
 
==Utilities for viewing temperatures==
 
==Utilities for viewing temperatures==
Line 59: Line 83:
 
The following utilities display the ThinkPad-specific thermal sensor readouts:
 
The following utilities display the ThinkPad-specific thermal sensor readouts:
 
* The above shell commands.
 
* The above shell commands.
* The "Sensors" builtin of [[gkrellm]] can show 6 specific ACPI sensors (out of up to 11).
+
* The "Sensors" builtin of [[GKrellM]] can show 6 specific ACPI sensors (out of up to 11).
* [http://www.kde-look.org/content/show.php?content=33257 CPU Info] is a KDE applet that can display the 8 first ACPI sensors as well as the HDAPS sensor. Limited to showing one sensor at a time.
+
* [http://kima.sourceforge.net/ Kima] is a KDE applet that can display the 8 first ACPI sensors as well as the HDAPS sensor.
 
* [http://www.kraus.tk/projects/IBMDoK/ IBMDoK], another KDE applet. Shows 4 specific sensors (out of up to 11). So far only tested at the {{T60}}.
 
* [http://www.kraus.tk/projects/IBMDoK/ IBMDoK], another KDE applet. Shows 4 specific sensors (out of up to 11). So far only tested at the {{T60}}.
 +
* There is an [http://munin.projects.linpro.no/wiki/plugin-ibm_acpi ibm_acpi plugin] for [http://munin.projects.linpro.no/ Munin].
 +
* [http://sensors-applet.sourceforge.net/ GNOME Sensors Applet] supports ibm_acpi.
  
 
==Sensor locations==
 
==Sensor locations==
 
This information is model specific.
 
This information is model specific.
 +
 +
===ThinkPad {{A31}}===
 +
Found by Milos Popovic using cooling spray to cool down components on a completely removed, running motherboard, to locate the sensors.  Also reported [http://forum.thinkpads.com/viewtopic.php?t=31837 here].
 +
EC offset  Index in "thermal"  Location (estimated)
 +
0x78        1                    CPU
 +
0x79        2                    Battery        (this one heats up when on battery power)
 +
0x7A        3                    Power          (sensor near power diodes and CPU; heats up
 +
                                                  when high power consumption, has crosstalk
 +
                                                  from CPU)
 +
0x7B        4                    Ultrabay 2000 battery?
 +
0x7C        5                    Northbridge    (sensor next to Northbridge, also somewhat
 +
                                                  near GPU)
 +
0x7D        6                    PCMCIA/ambient (sensor is a National Semiconductor LM75
 +
                                                  Digital Temperature Sensor/Thermal Watchdog
 +
                                                  chip next to the 9-pin VGA connector; sits 
 +
                                                  right under PCMCIA slots but doesn't touch)
 +
0x7E        7                    Battery        (this one stays near ambient temperature,
 +
                                                  even when on battery power)
 +
0x7F        8                    Ultrabay 2000 battery?
 +
0xC0        none                zero
 +
0xC1        none                zero
 +
0xC2        none                zero
 +
The following photos (resolution reduced for server space) show the locations found for the listed temperature sensors.
 +
{{gallery_start}}
 +
{{thumb|A31_2652M3U_systemboardtop_DSCN6105_tempsensors_lores.jpg|ThinkPad A31 sensor locations on top of motherboard.}}
 +
{{thumb|A31_2652M3U_systemboardbottom_DSCN6105_tempsensors_lores.jpg|ThinkPad A31 sensor locations on bottom of motherboard.}}
 +
{{gallery_end}}
 +
On this A31 systemboard (FRU 26P8398), there is a [http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2313 Maxim MAX1668] 5-channel remote/local temperature sensor (4 remote + 1 self temperature) on top of the systemboard, and a [http://www.national.com/pf/LM/LM75.html National Semiconductor LM75] single-channel "digital temperature sensor and thermal watchdog" chip.  It would appear that the LM75 has the ability to hard shutdown the processor (without software intervention) if its temperature exceeds a given threshold.  I'm not sure if it is wired for this, nor whether the Thinkpad changes the threshold temperature from the chip's power-up default of 80°C.  A software application with drivers on the LM75 webpage is available that claims to allow direct access to the thermal sensor chip (this hasn't been tried, but could be useful in other models to determine if this sensor is somewhere on the MB, and which register it corresponds to).  The MAX1668's self-temperature reading does not appear anywhere in the above temperature registers; it's not clear whether it is read at all, and whether it is to be found elsewhere in the EC memory.  These two chips (LM75 and MAX1668) account for some of the sensors.
  
 
===ThinkPad {{R51}}===
 
===ThinkPad {{R51}}===
The [[ibm-acpi]] documentation includes the report by Thomas Gruber:
+
The [[thinkpad-acpi]] documentation includes the report by Thomas Gruber:
 
  EC offset  Index in "thermal"  Location (estimated)
 
  EC offset  Index in "thermal"  Location (estimated)
 
  0x78        1                    CPU
 
  0x78        1                    CPU
Line 104: Line 158:
 
  0x7B        4                    GPU
 
  0x7B        4                    GPU
 
  0x7C        5                    System battery (front left = charging circuit)
 
  0x7C        5                    System battery (front left = charging circuit)
  0x7D        6                    UltraBay battery?
+
  0x7D        6                    UltraBay battery
 
  0x7E        7                    System battery (rear right)
 
  0x7E        7                    System battery (rear right)
  0x7F        8                    UltraBay battery?
+
  0x7F        8                    UltraBay battery
  0xC0        none                Bus between Northbridge and DRAM
+
  0xC0        9                    Bus between Northbridge and DRAM; Ethernet chip
  0xC1        none                Southbridge (under Mini-PCI card, under touchpad)
+
  0xC1        10                  Southbridge, WLAN and clock generator (under Mini-PCI card,
  0xC2        none                Power circuitry, on underside of system board under F2 key
+
                                  under touchpad)
 +
  0xC2        11                  Power circuitry, on underside of system board under F2 key
 
{{gallery_start}}
 
{{gallery_start}}
 
{{thumb|T43-thermal-sensors.jpg|ThinkPad T43 sensor locations}}
 
{{thumb|T43-thermal-sensors.jpg|ThinkPad T43 sensor locations}}
Line 119: Line 174:
 
Found by Marco Kraus for use in [http://www.kraus.tk/projects/IBMDoK/ IBMDok].
 
Found by Marco Kraus for use in [http://www.kraus.tk/projects/IBMDoK/ IBMDok].
 
  EC offset  Index in "thermal"  Location (estimated)
 
  EC offset  Index in "thermal"  Location (estimated)
  0x78        1                    CPU 0
+
  0x78        1                    CPU
  0x79        2                    HDD
+
  0x79        2                    APS
  0x7A        3                    HDD
+
  0x7A        3                    PCM
 
  0x7B        4                    GPU
 
  0x7B        4                    GPU
  0x7C        5                    Battery
+
  0x7C        5                    BAT
 
  0x7D        6                    n/a
 
  0x7D        6                    n/a
  0x7E        7                    Battery
+
  0x7E        7                    BAT
 
  0x7F        8                    n/a
 
  0x7F        8                    n/a
  0xC0        none                ?
+
  0xC0        9                    n/a
  0xC1        none                ?
+
  0xC1        10                  n/a
  0xC2        none                ?
+
  0xC2        11                  n/a
 +
0xC3        12                  n/a
 +
0xC4        13                  n/a
 +
0xC5        14                  n/a
 +
0xC6        15                  n/a
 +
0xC7        16                  n/a
 +
 
 +
/etc/sensors.d/tpsensors
 +
chip "acpitz-virtual-0"
 +
  label temp1 "CPU_0"
 +
  label temp2 "CPU_1"
 +
chip "thinkpad-isa-0000"
 +
  label fan1  "FAN"
 +
  label temp1  "CPU"
 +
  label temp2  "APS"
 +
  label temp3  "PCM"
 +
  label temp4  "GPU"
 +
  label temp5  "BAT"
 +
  ignore temp6  "n/a"
 +
  label temp7  "BAT"
 +
  ignore temp8  "n/a"
 +
  label temp9  "BUS"
 +
  label temp10 "PCI"
 +
  label temp11 "PWR"
 +
  ignore temp12  "n/a"
 +
  ignore temp13  "n/a"
 +
  ignore temp14  "n/a"
 +
  ignore temp15  "n/a"
 +
  ignore temp16  "n/a"
  
 
The CPU thermal sensors seem to be exposed in both {{path|/proc/acpi/thermal_zone/THM0/temperature}} and {{path|/proc/acpi/thermal_zone/THM1/temperature}}, though the latter curiously seems to exist only in this file and nowhere in {{path|/proc/acpi/ibm/ecdump}}.
 
The CPU thermal sensors seem to be exposed in both {{path|/proc/acpi/thermal_zone/THM0/temperature}} and {{path|/proc/acpi/thermal_zone/THM1/temperature}}, though the latter curiously seems to exist only in this file and nowhere in {{path|/proc/acpi/ibm/ecdump}}.
 +
 +
===ThinkPad {{T61}}===
 +
 +
'''Sensor numbering correlated with {{path|/sys/devices/platform/thinkpad_hwmon/temp*_input}}'''
 +
 +
{| border="1" cellspacing="0" cellpadding="2"
 +
! Thermal ID !! Location/Related Hardware !! Confirmed !! Notes
 +
|-
 +
| 1 || CPU || {{Cyes}} ||
 +
|-
 +
| 2 || North-bridge || {{Cpart}} ||
 +
|-
 +
| 3 || Cardbus/ExpressCard Bay || {{Cyes}} ||
 +
|-
 +
| 4 || GPU || {{Cyes}} || seperate from GPU's integrated sensor
 +
|-
 +
| 5 || 9-Cell Battery - Secondary || {{Cyes}} || static @ 50C on 6-cell
 +
|-
 +
| 6 || Ultrabay - Secondary || {{Cyes}} || Available only when device present
 +
|-
 +
| 7 || 6/9-Cell Battery - Primary || {{Cyes}} ||
 +
|-
 +
| 8 || UltraBay - Primary || {{Cyes}} || Available only when device present
 +
|-
 +
| 9 || RAM || {{Cyes}} ||
 +
|-
 +
| 10 || Right of RAM, Under Touchpad || {{Cyes}} ||
 +
|-
 +
| 11 || Mini-PCI Area || {{Cpart}} ||
 +
|}
 +
{{Todo|determine sensor 6 and 8 relavence for other UltraBay accessories}}
 +
{{Todo|confirm sensor 11}}
 +
 +
'''Contributors:''' ''Daniel Castro, [[User:Lunatico|Lunatico]], [[User:andrewcbates|Andrew C Bates]]''
 +
 +
===ThinkPad {{T61p}}===
 +
 +
'''Sensor numbering correlated with {{path|/sys/devices/platform/thinkpad_hwmon/temp*_input}}'''
 +
 +
{| border="1" cellspacing="0" cellpadding="2"
 +
! Thermal ID !! Location/Related Hardware !! Confirmed !! Notes
 +
|-
 +
| 1 || CPU || {{Cyes}} ||
 +
|-
 +
| 2 || North-bridge || {{Cpart}} ||
 +
|-
 +
| 3 || Cardbus/ExpressCard Bay || {{Cyes}} ||
 +
|-
 +
| 4 || GPU || {{Cyes}} || seperate from GPU's integrated sensor
 +
|-
 +
| 5 || 9-Cell Battery - Secondary || {{Cyes}} || static @ 50C on 6-cell
 +
|-
 +
| 6 || Ultrabay - Secondary || {{Cyes}} || Available only when device present
 +
|-
 +
| 7 || 6/9-Cell Battery - Primary || {{Cyes}} ||
 +
|-
 +
| 8 || UltraBay - Primary || {{Cyes}} || Available only when device present
 +
|-
 +
| 9 || RAM || {{Cyes}} ||
 +
|-
 +
| 10 || Right of RAM, Under Touchpad || {{Cyes}} ||
 +
|-
 +
| 11 || Mini-PCI Area || {{Cpart}} ||
 +
|}
 +
{{Todo|determine sensor 6 and 8 relavence for other UltraBay accessories}}
 +
{{Todo|confirm sensor 11}}
 +
 +
'''Contributors:''' ''[[User:andrewcbates|Andrew C Bates]]''
 +
 +
===ThinkPad {{T400}}===
 +
Experimenting with a hair dryer, fgl_glxgears, grep and tools like that I ([[User:Dummyaccount|Dummyaccount]]) came to the following conclusions for the sensor-index mapping. More comments are provided at [http://www.cosy.sbg.ac.at/~shuber/misc-t400.php#temp_sensors].
 +
 +
Index in "thermal"  Location
 +
1                    CPU neighbourhood (also via ACPI THM0)
 +
2                    Ultrabay
 +
3                    Express card
 +
4                    ATI graphics module
 +
5                    Main battery (always around 50°C)
 +
6                    n/a (probably ultrabay battery)
 +
7                    Main Battery (fits about the value reported by smapi)
 +
8                    n/a (probably ultrabay battery)
 +
9                    Hard disc
 +
10                  Intel graphics module
 +
11                  Heatsink?
 +
12                  n/a
 +
13                  n/a
 +
14                  n/a
 +
15                  n/a
 +
16                  n/a
 +
 +
'''sensors3.conf''' ready sniplet:
 +
<code>
 +
    chip "thinkpad-isa-0000"
 +
    label fan1  "Fan"
 +
    label temp1  "CPU neighbourhood (also via ACPI THM0)"
 +
    label temp2  "Ultrabay"
 +
    label temp3  "Express card"
 +
    label temp4  "ATI graphics module"
 +
    label temp5  "Main battery (always around 50°C)"
 +
    label temp6  "n/a (probably ultrabay battery)"
 +
    label temp7  "Main Battery (fits about the value reported by smapi)"
 +
    label temp8  "n/a (probably ultrabay battery)"
 +
    label temp9  "Hard disc"
 +
    label temp10 "Intel graphics module"
 +
    label temp11 "Heatsink?"
 +
    label temp12 "n/a"
 +
    label temp13 "n/a"
 +
    label temp14 "n/a"
 +
    label temp15 "n/a"
 +
    label temp16 "n/a"
 +
</code>
 +
 +
===ThinkPad {{T400s}}===
 +
 +
Index in "thermal"  Location
 +
1                    CPU neighbourhood (same as ACPI THM0)
 +
2                    ?
 +
3                    ?
 +
4                    n/a
 +
5                    Main battery
 +
6                    Ultrabay battery
 +
7                    Main Battery
 +
8                    Ultrabay battery
 +
9                    ?
 +
10                  n/a
 +
11                  ?
 +
12                  n/a
 +
13                  n/a
 +
14                  n/a
 +
15                  n/a
 +
16                  n/a
 +
 +
None of the these matches ACPI THM1, which (judging by the dramatic response to CPU load) is probably the CPU's on-die thermal sensor.
 +
 +
===ThinkPad {{T500}}===
 +
According to [http://forum.thinkpads.com/viewtopic.php?f=45&t=75032], the sensors in the T500 "may be identical to those reported for the [[#ThinkPad T61|T61]]", with the possibility that #11 may be the CPU heatsink. "It is very closely correlated to cpu load but shows a lot more inertia than sensor 1 which changes almost instantaneously with cpu load."
 +
 +
I ([[User:Nandhp]]) experimented with running glxgears, this produces a spike in #9, which does not occur under regular CPU load. #5 and #7 both belong to the main battery, for they disappear when it is removed. [http://www.kernel.org/doc/Documentation/laptops/thinkpad-acpi.txt] suggests #6 and #8 should be for the UltraBay battery. It also implies that #4 should be for the GPU, however, my model (which has an integrated GPU) does not have a #4 sensor. --[[User:Nandhp|Nandhp]] 19:27, 17 June 2009 (UTC)
 +
 +
I ([[User:jal2]]) had a look into the schematics of the T500/W500 mainboard. There are thermal sensors at the CPU (internal diode), WWAN (Q21), under dem SO-DIMM slots (Q31), graphics chip (discrete only, internal diode), at the WLAN slot (Q104) and at the bottom side below the ICH (Q93). All Qxx are small, three pin transistors marked in the silk screen. These sensors are connected to a MAX6693 (U4), which also measures its own temperature. U4 in turn is connected via SMB to the EC. No idea about the mapping of the sensors to the indices in thermal, maybe someone wants to determine it using cooling spray?
 +
 +
Index in "thermal"  Location
 +
1                    CPU (also via ACPI THM0)
 +
2                    WLAN PCIe slot (Q104)
 +
3                    HDD ?
 +
4                    n/a
 +
5                    Main Battery A
 +
6                    n/a (probably Second Battery A)
 +
7                    Main Battery B
 +
8                    n/a (probably Second Battery B)
 +
9                    SO-DIMM slot (Q31)
 +
10                  integrated graphics chip
 +
11                  WWAN PCIe slot (Q21)
 +
12                  n/a
 +
13                  n/a
 +
14                  n/a
 +
15                  n/a
 +
16                  n/a
 +
 +
Put this in /etc/sensors.d/tpsensors
 +
chip "acpitz-virtual-0"
 +
    label temp1 "CPU_0"
 +
    label temp2 "CPU_1"
 +
chip "thinkpad-isa-0000"
 +
    label fan1  "FAN"
 +
    label temp1  "CPU"
 +
    label temp2  "WLAN"
 +
    label temp3  "HDD?"
 +
    ignore temp4
 +
    label temp5  "BAT1"
 +
    ignore temp6
 +
    label temp7  "BAT2"
 +
    ignore temp8
 +
    label temp9  "RAM"
 +
    label temp10 "VGA"
 +
    label temp11 "WWAN"
 +
    ignore temp12
 +
    ignore temp13
 +
    ignore temp14
 +
    ignore temp15
 +
    ignore temp16
 +
 +
===ThinkPad {{X22}} {{X23}} {{X24}}===
 +
There is a chip very close to the CPU, which monitors the processor and its own temperature, reports as temperatures 1 and 2 respectively.  In X22, this sensor is ADM1023ARQ.  In X24, the chip is NE1618.  I think the sensor for temperature 3 is on the underside.  Temperature 3 is high while charging battery.
 +
 +
EC offset  Index in "thermal"  Location
 +
0x78        1                    CPU
 +
0x79        2                    just in front of CPU
 +
0x7A        3                    ? gets hot when charging battery
 +
 +
{{gallery_start}}
 +
{{thumb|X22_heatsink.JPG|location of CPU thermal monitor}}
 +
{{thumb|X22_planar_charge_volt_regulate_chips.JPG|temperature 3 is somewhere near battery prongs}}
 +
{{gallery_end}}
 +
 +
===ThinkPad {{X31}}===
 +
I figured these out by myself ([[User:BDKMPSS|BDKMPSS]]), as there are just a few available, this wasn't a huge problem. I verified my presumptions with a contactless thermometer.
 +
EC offset  Index in "thermal"  Location (estimated)
 +
0x78        1                    CPU
 +
0x79        2                    n/a
 +
0x7A        3                    GPU?
 +
0x7B        4                    near or the ICH4M Southbrige, on the back of the Motherboard
 +
0x7C        5                    Battery
 +
0x7D        6                    Extended-Life-Battery; may also UltraBay battery
 +
0x7E        7                    Battery
 +
0x7F        8                    Extended-Life-Battery; may also UltraBay battery
 +
0xC0        none                n/a
 +
0xC1        none                n/a
 +
0xC2        none                n/a
 +
 +
0x7A "GPU?" is pretty hot and seems like the GPU, but as the Chipset and the GPU are cooled with the same heatsink it is difficult to separate them without roasting the machine. However the left and GPU side of the heatsink is much closer to the shown value than the right Chipset side.
 +
 +
===ThinkPad {{X60}}===
 +
These sensors were found on my X60:
 +
Index    Location      Sensor*      Idle**    Idle***      Comments
 +
1        CPU          CPU (0x78)  62 C      39 C
 +
3        Card?        Crd (0x7A)  --        --
 +
2        ??            APS (0x97)  43 C      46 C
 +
4        GPU          GPU (0x7B)  59 C      39 C
 +
5        Battery      No5 (0x7c)                            Disappears when battery removed
 +
7        Battery      Bat (0x7E)                            Disappears when battery removed
 +
9        ??            Bus (0xC0)  44 C      41 C
 +
10        ??            PCI (0xC1)  50 C      35 C
 +
11        ??            Pwr (0xC2)  --        --
 +
 
 +
Unused/-known sensor numbers:
 +
6        --            Value N/A
 +
8        --            Value N/A
 +
12-16    --            Value N/A
 +
 +
*    Sensor names taken from "TPFanControl V0.62 by troubadix" for Windows
 +
**  Idle values when running under TPFanControl's "Smart" mode; fan never engages if the machine just sits idle
 +
***  Mostly idle values when running in Linux Mint with the machine's firmware-based fan control
 +
 +
===ThinkPad {{X61}}===
 +
[[User:Jdthood|I]] have started to figure out which sensors are which.
 +
 +
Index    Location  How known?
 +
  1        CPU      Increases immediately on computationally intensive task
 +
  2        HDAPS    Always the same value as /sys/bus/platform/drivers/hdaps/hdaps/temp1
 +
  3
 +
  4
 +
  5        Battery  Disappears if battery removed
 +
  7        Battery  Disappears if battery removed
 +
  9
 +
10
 +
 +
===ThinkPad {{X120e}}===
 +
That is what I think is right for the ThinkPad X120e notebook. Since it has an integrated graphics card, CPU and GPU temerpatures are always equal. I am guessing that temp7 shows the battery temperature as it follows the values in <tt>/sys/devices/platform/smapi/BAT0/temperature</tt> from [[Tp_smapi#X_series|tp_smapi]] 0.41 (without the comma: a value of 26700 representing 26.7 in tp_smapi shows 26.0 in temp7 at the same time), however removing the battery leaves it at the last reported value. Values for temp2, temp4, temp5, temp6 and temp8 always stay at 0. Put the following in /etc/sensors.d/ThinkPadX120e:
 +
chip "thinkpad-isa-0000"
 +
  label  fan1  "Fan"
 +
  label  temp1  "CPU"
 +
  ignore temp2
 +
  label  temp3  "GPU"
 +
  ignore temp4
 +
  ignore temp5
 +
  ignore temp6
 +
  label  temp7  "System battery"
 +
  ignore temp8
 +
 +
chip "acpitz-virtual-0"
 +
  label  temp1  "CPU"
 +
 +
chip "k10temp-pci-00c3"
 +
  label  temp1  "CPU"
 +
 +
chip "radeon-pci-0008"
 +
  label  temp1  "GPU"
 +
Contributed by [[User:TpUser0|TpUser0]].
 +
 +
===ThinkPad {{X200 Tablet}}===
 +
That's what [[User:Jdthood|I]] found out so far. Hope the guys in the german tp-forum have some more details. [http://thinkpad-forum.de/threads/143790-Temperatursensoren-im-X200-Tablet thread]
 +
 +
Sensors  Location  How known?
 +
temp1    CPU      Increases immediately on computationally intensive task
 +
temp5    Battery  Disappears if battery removed
 +
temp7    Battery  Disappears if battery removed
 +
 +
===ThinkPad {{X220}}===
 +
On [[User:Jdthood|my]] X220 there is only one sensor, named <tt>fan1</tt>.
 +
 +
<pre>
 +
$ sensors
 +
acpitz-virtual-0
 +
Adapter: Virtual device
 +
temp1:      +49.0°C  (crit = +99.0°C)                 
 +
 +
thinkpad-isa-0000
 +
Adapter: ISA adapter
 +
fan1:      1954 RPM
 +
 +
$ lsmod | grep '^t[hp]'
 +
thinkpad_acpi          81587  0
 +
tpm_tis                18537  1
 +
tpm                    22267  1 tpm_tis
 +
tpm_bios              13684  1 tpm
 +
tp_smapi              28471  0
 +
thinkpad_ec            14450  2 hdaps,tp_smapi
 +
 +
$ modinfo thinkpad-acpi|grep vers
 +
filename:      /lib/modules/2.6.38-11-generic/kernel/drivers/platform/x86/thinkpad_acpi.ko
 +
version:        0.24
 +
srcversion:    0B6457473BB90551EE1D20F
 +
vermagic:      2.6.38-11-generic SMP mod_unload modversions
 +
</pre>
 +
 +
 +
I am seeing more sensors on a '''X220 Tablet''':
 +
<pre>
 +
$ sensors
 +
acpitz-virtual-0
 +
Adapter: Virtual device
 +
temp1:        +52.0°C  (crit = +99.0°C)
 +
 +
coretemp-isa-0000
 +
Adapter: ISA adapter
 +
Physical id 0:  +60.0°C  (high = +86.0°C, crit = +100.0°C)
 +
Core 0:        +55.0°C  (high = +86.0°C, crit = +100.0°C)
 +
Core 1:        +60.0°C  (high = +86.0°C, crit = +100.0°C)
 +
 +
thinkpad-isa-0000
 +
Adapter: ISA adapter
 +
fan1:        1853 RPM
 +
 +
pkg-temp-0-virtual-0
 +
Adapter: Virtual device
 +
temp1:        +55.0°C 
 +
 +
$ modinfo thinkpad_acpi|grep vers
 +
filename:      /lib/modules/3.11.0-19-generic/kernel/drivers/platform/x86/thinkpad_acpi.ko
 +
version:        0.25
 +
srcversion:    61CA19938CD5679D7FEE38B
 +
vermagic:      3.11.0-19-generic SMP mod_unload modversions
 +
</pre>

Latest revision as of 18:21, 21 May 2015

This page summarizes known information about the locations and properties of thermal sensors on ThinkPad laptops.

Accessing the sensors

Basic ACPI system temperature sensors

The primary means of accessing the thermal sensors is through the thinkpad-acpi module, up to 16 sensors are supported. When the module is loaded, the sensors (some of which may be inactive) are shown through the standard sysfs hwmon interface used by the lm-sensors utilities, and also in /proc/acpi/ibm/thermal (which is deprecated and has been removed from the latest versions of the module).

lm-sensors/libsensors uses the hwmon interface exposed through /sys/bus/platform/devices/thinkpad_hwmon/ to read the temperatures, note that the sysfs interface returns normal open errors instead of weird values for sensors that are not active (which the simplistic sensors command ignore). lm-sensors/libsensors can be configured to give proper names to each sensor, which will be used by any properly written sensor applet.

# sensors
thinkpad-isa-0000
Adapter: ISA adapter
fan1:                3914 RPM
CPU:                  +45.0°C
LAN/Heatsink/HDAPS:   +44.0°C
PC-CARD slot:         +35.0°C
GPU:                  +48.0°C
Main battery charger: +35.0°C
ERROR: Can't get value of subfeature temp6_input: Can't read
Bay battery charger:   +0.0°C
Main battery cells:   +30.0°C
ERROR: Can't get value of subfeature temp8_input: Can't read
Bay battery cells:     +0.0°C
MCH:                  +42.0°C
PLL clock/ICH/WLAN:   +50.0°C
Voltage regulator:    +43.0°C

To have 'sensors' use describing labels like above, you can add the following section to /etc/sensors3.conf, if not already there. This is an example for the T43. Similar technique apply for the other models. Use the sensor location findings below.

chip "thinkpad-isa-0000"
  label fan1   "Fan"
  label temp1  "CPU"
  label temp2  "HDAPS"
  label temp3  "PCMCIA"
  label temp4  "GPU"
  label temp5  "System battery (front left, charging circuit)"
  label temp7  "System battery (rear right)"
  label temp9  "Bus between Northbridge and DRAM; Ethernet chip"
  label temp10 "Southbridge, WLAN and clock generator"
  label temp11 "Power circuitry"

The old method to access the thermal readings is through the /proc interface:

# cat /proc/acpi/ibm/thermal
temperatures: 44 41 33 42 33 -128 30 -128

A value of -128 (i.e., 0x80 hex) means the sensor is not connected. For example, above the two -128 values belong to the UltraBay battery, which is not plugged in.

If the ThinkPad supports the extended sensor set, eight more values will be displayed:

# cat /proc/acpi/ibm/thermal
temperatures: 44 41 33 42 33 -128 30 -128 48 50 49 -128 -128 -128 -128 -128

HDAPS temperature sensor

The Active Protection System firmware also reports a temperature, which is identical to one of the ACPI sensors. The corresponding sensor is actually not inside the HDAPS chip, and sometimes not even close to it.

# cat /sys/bus/platform/drivers/hdaps/hdaps/temp1
41

Harddisks SMART temperature sensor

The system hard disk temperature can be read through the disk's SMART interface:

# smartctl -A /dev/hda | grep Temperature
194 Temperature_Celsius 0x0022 145 097 000 Old_age Always - 31

Or, for SATA-equipped models running a recent Linux kernel (see Problems with SATA and Linux):

# smartctl -A -d ata /dev/sda | grep Temperature
194 Temperature_Celsius 0x0022 145 097 000 Old_age Always - 31

When the UltraBay Slim HDD Adapter or UltraBay Slim SATA HDD Adapter are used, the second hard disk will typically provide another temperature readout via its SMART interface, analogously to the above.

Reading this sensor will typically cause a drive spin-up and head unload.

Hitachi harddisks SENSE CONDITION temperature sensor

Recent Hitachi disks provide a non-standard SENSE CONDITION command which reads the disk temperature without causing a spin-up or head load. The reported value is the same as when using SMART. This can be invoked, e.g., using # hdparm -H, or the relevant code in tp-fancontrol (download). When using the libata driver, this requires kernel >= 2.6.19-rc1.

Utilities for viewing temperatures

The following utilities display the ThinkPad-specific thermal sensor readouts:

  • The above shell commands.
  • The "Sensors" builtin of GKrellM can show 6 specific ACPI sensors (out of up to 11).
  • Kima is a KDE applet that can display the 8 first ACPI sensors as well as the HDAPS sensor.
  • IBMDoK, another KDE applet. Shows 4 specific sensors (out of up to 11). So far only tested at the T60.
  • There is an ibm_acpi plugin for Munin.
  • GNOME Sensors Applet supports ibm_acpi.

Sensor locations

This information is model specific.

ThinkPad A31

Found by Milos Popovic using cooling spray to cool down components on a completely removed, running motherboard, to locate the sensors. Also reported here.

EC offset   Index in "thermal"   Location (estimated)
0x78        1                    CPU
0x79        2                    Battery        (this one heats up when on battery power)
0x7A        3                    Power          (sensor near power diodes and CPU; heats up 
                                                 when high power consumption, has crosstalk
                                                 from CPU)
0x7B        4                    Ultrabay 2000 battery?
0x7C        5                    Northbridge    (sensor next to Northbridge, also somewhat
                                                 near GPU)
0x7D        6                    PCMCIA/ambient (sensor is a National Semiconductor LM75 
                                                 Digital Temperature Sensor/Thermal Watchdog
                                                 chip next to the 9-pin VGA connector; sits  
                                                 right under PCMCIA slots but doesn't touch)
0x7E        7                    Battery        (this one stays near ambient temperature, 
                                                 even when on battery power)
0x7F        8                    Ultrabay 2000 battery?
0xC0        none                 zero
0xC1        none                 zero
0xC2        none                 zero

The following photos (resolution reduced for server space) show the locations found for the listed temperature sensors.


Photos (click to see full size)
ThinkPad A31 sensor locations on top of motherboard.
ThinkPad A31 sensor locations on bottom of motherboard.

On this A31 systemboard (FRU 26P8398), there is a Maxim MAX1668 5-channel remote/local temperature sensor (4 remote + 1 self temperature) on top of the systemboard, and a National Semiconductor LM75 single-channel "digital temperature sensor and thermal watchdog" chip. It would appear that the LM75 has the ability to hard shutdown the processor (without software intervention) if its temperature exceeds a given threshold. I'm not sure if it is wired for this, nor whether the Thinkpad changes the threshold temperature from the chip's power-up default of 80°C. A software application with drivers on the LM75 webpage is available that claims to allow direct access to the thermal sensor chip (this hasn't been tried, but could be useful in other models to determine if this sensor is somewhere on the MB, and which register it corresponds to). The MAX1668's self-temperature reading does not appear anywhere in the above temperature registers; it's not clear whether it is read at all, and whether it is to be found elsewhere in the EC memory. These two chips (LM75 and MAX1668) account for some of the sensors.

ThinkPad R51

The thinkpad-acpi documentation includes the report by Thomas Gruber:

EC offset   Index in "thermal"   Location (estimated)
0x78        1                    CPU
0x79        2                    Mini-PCI
0x7A        3                    HDD
0x7B        4                    GPU
0x7C        5                    System battery
0x7D        6                    UltraBay battery
0x7E        7                    System battery
0x7F        8                    UltraBay battery
0xC0        none                 ?
0xC1        none                 ?
0xC2        none                 ?

ThinkPad T40

The location of one of the sensors is identified here.

EC offset   Index in "thermal"   Location (estimated)
0x78        1                    CPU
0x79        2                    System board under rear left corner of Mini-PCI module
0x7A        3                    ?
0x7B        4                    GPU
0x7C        5                    Battery
0x7D        6                    n/a
0x7E        7                    Battery
0x7F        8                    n/a
0xC0        none                 n/a
0xC1        none                 n/a
0xC2        none                 n/a

ThinkPad T43, T43p

Found by Shmidoax using cooling spray to cool down components and observe the effect on the sensors.

EC offset   Index in "thermal"   Location (estimated)
0x78        1                    CPU
0x79        2                    Between PCMCIA slot and CPU (same as HDAPS module)
0x7A        3                    PCMCIA slot
0x7B        4                    GPU
0x7C        5                    System battery (front left = charging circuit)
0x7D        6                    UltraBay battery
0x7E        7                    System battery (rear right)
0x7F        8                    UltraBay battery
0xC0        9                    Bus between Northbridge and DRAM; Ethernet chip
0xC1        10                   Southbridge, WLAN and clock generator (under Mini-PCI card,
                                 under touchpad)
0xC2        11                   Power circuitry, on underside of system board under F2 key

Photos (click to see full size)
ThinkPad T43 sensor locations
ThinkPad T43 sensor locations detail
ThinkPad T43/p 26xx Embedded Controller Renesas H8S/2161BV

ThinkPad T60

Found by Marco Kraus for use in IBMDok.

EC offset   Index in "thermal"   Location (estimated)
0x78        1                    CPU
0x79        2                    APS
0x7A        3                    PCM
0x7B        4                    GPU
0x7C        5                    BAT
0x7D        6                    n/a
0x7E        7                    BAT
0x7F        8                    n/a
0xC0        9                    n/a
0xC1        10                   n/a
0xC2        11                   n/a
0xC3        12                   n/a
0xC4        13                   n/a
0xC5        14                   n/a
0xC6        15                   n/a
0xC7        16                   n/a

/etc/sensors.d/tpsensors

chip "acpitz-virtual-0"
  label temp1 "CPU_0"
  label temp2 "CPU_1"
chip "thinkpad-isa-0000"
  label fan1   "FAN"
  label temp1  "CPU"
  label temp2  "APS"
  label temp3  "PCM"
  label temp4  "GPU"
  label temp5  "BAT"
  ignore temp6  "n/a"
  label temp7  "BAT"
  ignore temp8  "n/a"
  label temp9  "BUS"
  label temp10 "PCI"
  label temp11 "PWR"
  ignore temp12  "n/a"
  ignore temp13  "n/a"
  ignore temp14  "n/a"
  ignore temp15  "n/a"
  ignore temp16  "n/a"

The CPU thermal sensors seem to be exposed in both /proc/acpi/thermal_zone/THM0/temperature and /proc/acpi/thermal_zone/THM1/temperature, though the latter curiously seems to exist only in this file and nowhere in /proc/acpi/ibm/ecdump.

ThinkPad T61

Sensor numbering correlated with /sys/devices/platform/thinkpad_hwmon/temp*_input

Thermal ID Location/Related Hardware Confirmed Notes
1 CPU yes
2 North-bridge partial
3 Cardbus/ExpressCard Bay yes
4 GPU yes seperate from GPU's integrated sensor
5 9-Cell Battery - Secondary yes static @ 50C on 6-cell
6 Ultrabay - Secondary yes Available only when device present
7 6/9-Cell Battery - Primary yes
8 UltraBay - Primary yes Available only when device present
9 RAM yes
10 Right of RAM, Under Touchpad yes
11 Mini-PCI Area partial
TODO
determine sensor 6 and 8 relavence for other UltraBay accessories
TODO
confirm sensor 11

Contributors: Daniel Castro, Lunatico, Andrew C Bates

ThinkPad T61p

Sensor numbering correlated with /sys/devices/platform/thinkpad_hwmon/temp*_input

Thermal ID Location/Related Hardware Confirmed Notes
1 CPU yes
2 North-bridge partial
3 Cardbus/ExpressCard Bay yes
4 GPU yes seperate from GPU's integrated sensor
5 9-Cell Battery - Secondary yes static @ 50C on 6-cell
6 Ultrabay - Secondary yes Available only when device present
7 6/9-Cell Battery - Primary yes
8 UltraBay - Primary yes Available only when device present
9 RAM yes
10 Right of RAM, Under Touchpad yes
11 Mini-PCI Area partial
TODO
determine sensor 6 and 8 relavence for other UltraBay accessories
TODO
confirm sensor 11

Contributors: Andrew C Bates

ThinkPad T400

Experimenting with a hair dryer, fgl_glxgears, grep and tools like that I (Dummyaccount) came to the following conclusions for the sensor-index mapping. More comments are provided at [1].

Index in "thermal"   Location
1                    CPU neighbourhood (also via ACPI THM0)
2                    Ultrabay
3                    Express card
4                    ATI graphics module
5                    Main battery (always around 50°C)
6                    n/a (probably ultrabay battery)
7                    Main Battery (fits about the value reported by smapi)
8                    n/a (probably ultrabay battery)
9                    Hard disc
10                   Intel graphics module
11                   Heatsink?
12                   n/a
13                   n/a
14                   n/a
15                   n/a
16                   n/a

sensors3.conf ready sniplet:

   chip "thinkpad-isa-0000"
   label fan1   "Fan"
   label temp1  "CPU neighbourhood (also via ACPI THM0)"
   label temp2  "Ultrabay"
   label temp3  "Express card"
   label temp4  "ATI graphics module"
   label temp5  "Main battery (always around 50°C)"
   label temp6  "n/a (probably ultrabay battery)"
   label temp7  "Main Battery (fits about the value reported by smapi)"
   label temp8  "n/a (probably ultrabay battery)"
   label temp9  "Hard disc"
   label temp10 "Intel graphics module"
   label temp11 "Heatsink?"
   label temp12 "n/a"
   label temp13 "n/a"
   label temp14 "n/a"
   label temp15 "n/a"
   label temp16 "n/a"

ThinkPad T400s

Index in "thermal"   Location
1                    CPU neighbourhood (same as ACPI THM0)
2                    ?
3                    ?
4                    n/a
5                    Main battery
6                    Ultrabay battery
7                    Main Battery
8                    Ultrabay battery
9                    ?
10                   n/a
11                   ?
12                   n/a
13                   n/a
14                   n/a
15                   n/a
16                   n/a

None of the these matches ACPI THM1, which (judging by the dramatic response to CPU load) is probably the CPU's on-die thermal sensor.

ThinkPad T500

According to [2], the sensors in the T500 "may be identical to those reported for the T61", with the possibility that #11 may be the CPU heatsink. "It is very closely correlated to cpu load but shows a lot more inertia than sensor 1 which changes almost instantaneously with cpu load."

I (User:Nandhp) experimented with running glxgears, this produces a spike in #9, which does not occur under regular CPU load. #5 and #7 both belong to the main battery, for they disappear when it is removed. [3] suggests #6 and #8 should be for the UltraBay battery. It also implies that #4 should be for the GPU, however, my model (which has an integrated GPU) does not have a #4 sensor. --Nandhp 19:27, 17 June 2009 (UTC)

I (User:jal2) had a look into the schematics of the T500/W500 mainboard. There are thermal sensors at the CPU (internal diode), WWAN (Q21), under dem SO-DIMM slots (Q31), graphics chip (discrete only, internal diode), at the WLAN slot (Q104) and at the bottom side below the ICH (Q93). All Qxx are small, three pin transistors marked in the silk screen. These sensors are connected to a MAX6693 (U4), which also measures its own temperature. U4 in turn is connected via SMB to the EC. No idea about the mapping of the sensors to the indices in thermal, maybe someone wants to determine it using cooling spray?

Index in "thermal"   Location
1                    CPU (also via ACPI THM0)
2                    WLAN PCIe slot (Q104)
3                    HDD ?
4                    n/a
5                    Main Battery A
6                    n/a (probably Second Battery A)
7                    Main Battery B
8                    n/a (probably Second Battery B)
9                    SO-DIMM slot (Q31)
10                   integrated graphics chip
11                   WWAN PCIe slot (Q21)
12                   n/a
13                   n/a
14                   n/a
15                   n/a
16                   n/a

Put this in /etc/sensors.d/tpsensors

chip "acpitz-virtual-0"
   label temp1 "CPU_0"
   label temp2 "CPU_1"
chip "thinkpad-isa-0000"
   label fan1   "FAN"
   label temp1  "CPU"
   label temp2  "WLAN"
   label temp3  "HDD?"
   ignore temp4
   label temp5  "BAT1"
   ignore temp6
   label temp7  "BAT2"
   ignore temp8
   label temp9  "RAM"
   label temp10 "VGA"
   label temp11 "WWAN"
   ignore temp12
   ignore temp13
   ignore temp14
   ignore temp15
   ignore temp16

ThinkPad X22 X23 X24

There is a chip very close to the CPU, which monitors the processor and its own temperature, reports as temperatures 1 and 2 respectively. In X22, this sensor is ADM1023ARQ. In X24, the chip is NE1618. I think the sensor for temperature 3 is on the underside. Temperature 3 is high while charging battery.

EC offset   Index in "thermal"   Location
0x78        1                    CPU
0x79        2                    just in front of CPU
0x7A        3                    ? gets hot when charging battery

Photos (click to see full size)
location of CPU thermal monitor
temperature 3 is somewhere near battery prongs

ThinkPad X31

I figured these out by myself (BDKMPSS), as there are just a few available, this wasn't a huge problem. I verified my presumptions with a contactless thermometer.

EC offset   Index in "thermal"   Location (estimated)
0x78        1                    CPU
0x79        2                    n/a
0x7A        3                    GPU?
0x7B        4                    near or the ICH4M Southbrige, on the back of the Motherboard
0x7C        5                    Battery
0x7D        6                    Extended-Life-Battery; may also UltraBay battery
0x7E        7                    Battery
0x7F        8                    Extended-Life-Battery; may also UltraBay battery
0xC0        none                 n/a
0xC1        none                 n/a
0xC2        none                 n/a

0x7A "GPU?" is pretty hot and seems like the GPU, but as the Chipset and the GPU are cooled with the same heatsink it is difficult to separate them without roasting the machine. However the left and GPU side of the heatsink is much closer to the shown value than the right Chipset side.

ThinkPad X60

These sensors were found on my X60:

Index     Location      Sensor*      Idle**    Idle***       Comments
1         CPU           CPU (0x78)   62 C      39 C
3         Card?         Crd (0x7A)   --        --
2         ??            APS (0x97)   43 C      46 C
4         GPU           GPU (0x7B)   59 C      39 C
5         Battery       No5 (0x7c)                            Disappears when battery removed
7         Battery       Bat (0x7E)                            Disappears when battery removed
9         ??            Bus (0xC0)   44 C      41 C
10        ??            PCI (0xC1)   50 C      35 C
11        ??            Pwr (0xC2)   --        --
 
Unused/-known sensor numbers:
6         --            Value N/A
8         --            Value N/A
12-16     --            Value N/A

*    Sensor names taken from "TPFanControl V0.62 by troubadix" for Windows
**   Idle values when running under TPFanControl's "Smart" mode; fan never engages if the machine just sits idle
***  Mostly idle values when running in Linux Mint with the machine's firmware-based fan control

ThinkPad X61

I have started to figure out which sensors are which.

Index     Location  How known?
 1        CPU       Increases immediately on computationally intensive task
 2        HDAPS     Always the same value as /sys/bus/platform/drivers/hdaps/hdaps/temp1
 3
 4
 5        Battery   Disappears if battery removed
 7        Battery   Disappears if battery removed
 9
10

ThinkPad X120e

That is what I think is right for the ThinkPad X120e notebook. Since it has an integrated graphics card, CPU and GPU temerpatures are always equal. I am guessing that temp7 shows the battery temperature as it follows the values in /sys/devices/platform/smapi/BAT0/temperature from tp_smapi 0.41 (without the comma: a value of 26700 representing 26.7 in tp_smapi shows 26.0 in temp7 at the same time), however removing the battery leaves it at the last reported value. Values for temp2, temp4, temp5, temp6 and temp8 always stay at 0. Put the following in /etc/sensors.d/ThinkPadX120e:

chip "thinkpad-isa-0000"
  label  fan1   "Fan"
  label  temp1  "CPU"
  ignore temp2
  label  temp3  "GPU"
  ignore temp4
  ignore temp5
  ignore temp6
  label  temp7  "System battery"
  ignore temp8

chip "acpitz-virtual-0"
  label  temp1  "CPU"

chip "k10temp-pci-00c3"
  label  temp1  "CPU"

chip "radeon-pci-0008"
  label  temp1  "GPU"

Contributed by TpUser0.

ThinkPad X200 Tablet

That's what I found out so far. Hope the guys in the german tp-forum have some more details. thread

Sensors   Location  How known?
temp1     CPU       Increases immediately on computationally intensive task
temp5     Battery   Disappears if battery removed 
temp7     Battery   Disappears if battery removed

ThinkPad X220

On my X220 there is only one sensor, named fan1.

$ sensors
acpitz-virtual-0
Adapter: Virtual device
temp1:       +49.0°C  (crit = +99.0°C)                  

thinkpad-isa-0000
Adapter: ISA adapter
fan1:       1954 RPM

$ lsmod | grep '^t[hp]'
thinkpad_acpi          81587  0 
tpm_tis                18537  1 
tpm                    22267  1 tpm_tis
tpm_bios               13684  1 tpm
tp_smapi               28471  0 
thinkpad_ec            14450  2 hdaps,tp_smapi

$ modinfo thinkpad-acpi|grep vers
filename:       /lib/modules/2.6.38-11-generic/kernel/drivers/platform/x86/thinkpad_acpi.ko
version:        0.24
srcversion:     0B6457473BB90551EE1D20F
vermagic:       2.6.38-11-generic SMP mod_unload modversions 


I am seeing more sensors on a X220 Tablet:

$ sensors
acpitz-virtual-0
Adapter: Virtual device
temp1:        +52.0°C  (crit = +99.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +60.0°C  (high = +86.0°C, crit = +100.0°C)
Core 0:         +55.0°C  (high = +86.0°C, crit = +100.0°C)
Core 1:         +60.0°C  (high = +86.0°C, crit = +100.0°C)

thinkpad-isa-0000
Adapter: ISA adapter
fan1:        1853 RPM

pkg-temp-0-virtual-0
Adapter: Virtual device
temp1:        +55.0°C  

$ modinfo thinkpad_acpi|grep vers
filename:       /lib/modules/3.11.0-19-generic/kernel/drivers/platform/x86/thinkpad_acpi.ko
version:        0.25
srcversion:     61CA19938CD5679D7FEE38B
vermagic:       3.11.0-19-generic SMP mod_unload modversions