• Guenter Roeck's avatar
    hwmon: Driver for disk and solid state drives with temperature sensors · 5b46903d
    Guenter Roeck authored
    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: default avatarLinus Walleij <linus.walleij@linaro.org>
    Tested-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
    5b46903d
drivetemp.c 15.5 KB