Thermal Sensors
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 will be removed someday).
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) |
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 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 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 X61
I have started to figure out which sensors are which.
Index Location How known? 1 2 or 3 HDAPS Always the same value as /sys/bus/platform/drivers/hdaps/hdaps/temp1 4 5 Battery Disappears if battery removed 7 Battery Disappears if battery removed 9 10
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
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)
Index in "thermal" Location 1 CPU (also via ACPI THM0) 2 ? (very similar to HDD smart temp) 3 ? (also via ACPI THM1) 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 ? (possibly (integrated) GPU) 10 ? 11 ? (possibly heatsink) 12 n/a 13 n/a 14 n/a 15 n/a 16 n/a