Difference between revisions of "Thermal Sensors"

From ThinkWiki
Jump to: navigation, search
(Harddisks SMART temperature sensor)
m
Line 2: Line 2:
 
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__
 
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__
 
|style="vertical-align:top" |
 
|style="vertical-align:top" |
This page aims to summarize 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==

Revision as of 23:16, 18 July 2006

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

Accessing the sensors

ACPI system temperature sensors

The primary means of accessing the thermal sensors is through the ibm-acpi module, which provides up to 11 thermal sensors (some of which may be inactive) when loaded with the experimental=1 option. Up to eight thermal sensors are exposed at /proc/acpi/ibm/thermal:

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

On some models there are three extra sensors at Embedded Controller offsets 0xC0 to 0xC2, which can be read by parsing /proc/acpi/ibm/ecdump:

# perl -ne 'm/^EC 0xc0: .(..) .(..) .(..) / or next; print hex($1)." ".hex($2)." ".hex($3)."\n"' < /proc/acpi/ibm/ecdump
40 48 43

Future models might be additional extra sensors beyond those three. To see all candidates:

# perl -ne 'print join(" ",map(hex,m/\w+/g))."\n" if s/^EC 0xc0://' < /proc/acpi/ibm/ecdump
40 48 43 128 128 128 128 128 0 0 0 0 0 0 0 0

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

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.

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

Harddisks SMART temperature sensor

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

# smartctl -A /dev/hda
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
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.

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).
  • 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.
  • IBMDoK, another KDE applet. Shows 4 specific sensors (out of up to 11). So far only tested at the T60.

Sensor locations

This information is model specific.

ThinkPad R51

The ibm-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                    Battery (main)
0x7D        6                    Battery (device bay)
0x7E        7                    Battery (main)
0x7F        8                    Battery (device bay)
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        none                 Bus between Northbridge and DRAM
0xC1        none                 Southbridge (under Mini-PCI card, under touchpad)
0xC2        none                 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 0
0x79        2                    HDD
0x7A        3                    HDD
0x7B        4                    GPU
0x7C        5                    Battery
0x7D        6                    n/a
0x7E        7                    Battery
0x7F        8                    n/a
0xC0        none                 ?
0xC1        none                 ?
0xC2        none                 ?

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.