linux/Documentation/hwmon
Guenter Roeck 5b46903d8b hwmon: Driver for disk and solid state drives with temperature sensors
Reading the temperature of ATA drives has been supported for years
by userspace tools such as smarttools or hddtemp. The downside of
such tools is that they need to run with super-user privilege, that
the temperatures are not reported by standard tools such as 'sensors'
or 'libsensors', and that drive temperatures are not available for use
in the kernel's thermal subsystem.

This driver solves this problem by adding support for reading the
temperature of ATA drives from the kernel using the hwmon API and
by adding a temperature zone for each drive.

With this driver, the hard disk temperature can be read using the
unprivileged 'sensors' application:

$ sensors drivetemp-scsi-1-0
drivetemp-scsi-1-0
Adapter: SCSI adapter
temp1:        +23.0°C

or directly from sysfs:

$ grep . /sys/class/hwmon/hwmon9/{name,temp1_input}
/sys/class/hwmon/hwmon9/name:drivetemp
/sys/class/hwmon/hwmon9/temp1_input:23000

If the drive supports SCT transport and reports temperature limits,
those are reported as well.

drivetemp-scsi-0-0
Adapter: SCSI adapter
temp1:        +27.0°C  (low  =  +0.0°C, high = +60.0°C)
                       (crit low = -41.0°C, crit = +85.0°C)
                       (lowest = +23.0°C, highest = +34.0°C)

The driver attempts to use SCT Command Transport to read the drive
temperature. If the SCT Command Transport feature set is not available,
or if it does not report the drive temperature, drive temperatures may
be readable through SMART attributes. Since SMART attributes are not well
defined, this method is only used as fallback mechanism.

Cc: Chris Healy <cphealy@gmail.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Martin K. Petersen <martin.petersen@oracle.com>
Cc: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2020-01-23 13:15:10 -08:00
..
ab8500.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
abituguru3.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
abituguru-datasheet.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
abituguru.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
abx500.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
acpi_power_meter.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
ad7314.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
adc128d818.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
adm1021.rst docs: i2c: convert to ReST and add to driver-api bookset 2019-07-31 13:25:27 -06:00
adm1025.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
adm1026.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
adm1031.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
adm1275.rst docs: i2c: convert to ReST and add to driver-api bookset 2019-07-31 13:25:27 -06:00
adm9240.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
ads7828.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
adt7410.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
adt7411.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
adt7462.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
adt7470.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
adt7475.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
amc6821.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
asb100.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
asc7621.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
aspeed-pwm-tacho.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
bel-pfe.rst docs: hwmon: Document bel-pfe pmbus driver 2019-11-06 14:37:19 -08:00
coretemp.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
da9052.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
da9055.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
dell-smm-hwmon.rst dell-smm-hwmon: Add documentation 2019-11-22 20:47:43 -08:00
dme1737.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
drivetemp.rst hwmon: Driver for disk and solid state drives with temperature sensors 2020-01-23 13:15:10 -08:00
ds620.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
ds1621.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
emc6w201.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
emc1403.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
emc2103.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
f71805f.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
f71882fg.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
fam15h_power.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
ftsteutates.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
g760a.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
g762.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
gl518sm.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
hih6130.rst docs: i2c: convert to ReST and add to driver-api bookset 2019-07-31 13:25:27 -06:00
hwmon-kernel-api.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
ibm-cffps.rst docs: i2c: convert to ReST and add to driver-api bookset 2019-07-31 13:25:27 -06:00
ibmaem.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
ibmpowernv.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
ina2xx.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
ina209.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
ina3221.rst hwmon: (ina3221) Add summation feature support 2019-11-06 14:37:19 -08:00
index.rst hwmon: Driver for disk and solid state drives with temperature sensors 2020-01-23 13:15:10 -08:00
inspur-ipsps1.rst Linux 5.4-rc4 2019-10-29 04:43:29 -06:00
ir35221.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
ir38064.rst docs: hwmon: convert three docs to ReST format 2019-04-22 15:27:27 -07:00
isl68137.rst docs: hwmon: convert three docs to ReST format 2019-04-22 15:27:27 -07:00
it87.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
jc42.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
k8temp.rst hwmon: (k8temp) documentation: update URL of datasheet 2019-07-21 19:18:45 -07:00
k10temp.rst hwmon: (k10temp) Update documentation and add temp2_input info 2019-10-02 06:35:57 -07:00
lineage-pem.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
lm63.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
lm70.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
lm73.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
lm75.rst hwmon: (lm75) add support for PCT2075 2019-09-03 12:47:17 -07:00
lm77.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
lm78.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
lm80.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
lm83.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
lm85.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
lm87.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
lm90.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
lm92.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
lm93.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
lm25066.rst docs: i2c: convert to ReST and add to driver-api bookset 2019-07-31 13:25:27 -06:00
lm95234.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
lm95245.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
lochnagar.rst docs: hwmon: convert three docs to ReST format 2019-04-22 15:27:27 -07:00
ltc2945.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
ltc2947.rst hwmon: Add support for ltc2947 2019-11-06 14:37:19 -08:00
ltc2978.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
ltc2990.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
ltc3815.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
ltc4151.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
ltc4215.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
ltc4245.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
ltc4260.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
ltc4261.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
max197.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
max1619.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
max1668.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
max6639.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
max6642.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
max6650.rst docs: i2c: convert to ReST and add to driver-api bookset 2019-07-31 13:25:27 -06:00
max6697.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
max8688.rst docs: i2c: convert to ReST and add to driver-api bookset 2019-07-31 13:25:27 -06:00
max16064.rst docs: i2c: convert to ReST and add to driver-api bookset 2019-07-31 13:25:27 -06:00
max16065.rst docs: i2c: convert to ReST and add to driver-api bookset 2019-07-31 13:25:27 -06:00
max20730.rst hwmon: (pmbus) Driver for MAX20730, MAX20734, and MAX20743 2020-01-23 13:15:10 -08:00
max20751.rst docs: i2c: convert to ReST and add to driver-api bookset 2019-07-31 13:25:27 -06:00
max31722.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
max31730.rst hwmon: Driver for MAX31730 2020-01-23 13:15:09 -08:00
max31785.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
max31790.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
max34440.rst docs: i2c: convert to ReST and add to driver-api bookset 2019-07-31 13:25:27 -06:00
mc13783-adc.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
mcp3021.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
menf21bmc.rst docs: i2c: convert to ReST and add to driver-api bookset 2019-07-31 13:25:27 -06:00
mlxreg-fan.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
nct6683.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
nct6775.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
nct7802.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
nct7904.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
npcm750-pwm-fan.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
nsa320.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
ntc_thermistor.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
occ.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
pc87360.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
pc87427.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
pcf8591.rst docs: i2c: convert to ReST and add to driver-api bookset 2019-07-31 13:25:27 -06:00
pmbus-core.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
pmbus.rst hwmon: (pmbus) Add MAX20796 to devices supported by generic pmbus driver 2020-01-23 13:15:09 -08:00
powr1220.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
pwm-fan.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
pxe1610.rst docs: hwmon: pxe1610: convert to ReST format and add to the index 2019-09-03 12:47:17 -07:00
raspberrypi-hwmon.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
sch5627.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
sch5636.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
scpi-hwmon.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
sht3x.rst docs: i2c: convert to ReST and add to driver-api bookset 2019-07-31 13:25:27 -06:00
sht15.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
sht21.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
shtc1.rst It's a somewhat calmer cycle for docs this time, as the churn of the mass 2019-09-17 16:22:26 -07:00
sis5595.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
smm665.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
smsc47b397.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
smsc47m1.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
smsc47m192.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
submitting-patches.rst hwmon: submitting-patches: Add note on comment style 2019-09-13 05:43:06 -07:00
sysfs-interface.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
tc74.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
tc654.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
thmc50.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
tmp102.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
tmp103.rst docs: i2c: convert to ReST and add to driver-api bookset 2019-07-31 13:25:27 -06:00
tmp108.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
tmp401.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
tmp421.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
tmp513.rst hwmon: Add driver for Texas Instruments TMP512/513 sensor chips. 2019-11-21 21:26:40 -08:00
tps40422.rst docs: i2c: convert to ReST and add to driver-api bookset 2019-07-31 13:25:27 -06:00
twl4030-madc-hwmon.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
ucd9000.rst hwmon: (pmbus/ucd9000) Add support for UCD90320 Power Sequencer 2020-01-23 13:15:09 -08:00
ucd9200.rst docs: i2c: convert to ReST and add to driver-api bookset 2019-07-31 13:25:27 -06:00
userspace-tools.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
vexpress.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
via686a.rst docs: i2c: convert to ReST and add to driver-api bookset 2019-07-31 13:25:27 -06:00
vt1211.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
w83l785ts.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
w83l786ng.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
w83627ehf.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
w83627hf.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
w83773g.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
w83781d.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
w83791d.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
w83792d.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
w83793.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
w83795.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
wm831x.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
wm8350.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
xgene-hwmon.rst docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
zl6100.rst docs: i2c: convert to ReST and add to driver-api bookset 2019-07-31 13:25:27 -06:00