#854·gopsutil

SensorsTemperatures should provide a unique sensor identity

Author: danielnelsonCreated Mar 24, 2020Updated Jun 18, 2026
Labelsos:linuxpackage:host

Describe the bug This issue is somewhere between a bug report and a feature request. When using the host.SensorsTemperatures() call it is possible for multiple TemperatureStat objects to have the same SensorKey. In order to distinguish temperature sensors and in particular when making multiple calls over time, it would be useful if we could guarantee each sensor will have a unique sensor key or provide an additional field that would be unique and not change between calls.

To Reproduce

go
package main

import (
        "fmt"

        "github.com/shirou/gopsutil/host"
)

func main() {
        sensors, err := host.SensorsTemperatures()
        if err != nil {
                fmt.Println(err)
        }

        for _, s := range sensors {
                fmt.Printf("%+v\n", s)
        }
}

Output:

$ go run cmd/temp/main.go
{"sensorKey":"acpitz_crit","sensorTemperature":128}
{"sensorKey":"acpitz_input","sensorTemperature":46}
{"sensorKey":"coretemp_packageid0_crit","sensorTemperature":100}
{"sensorKey":"coretemp_packageid0_critalarm","sensorTemperature":0}
{"sensorKey":"coretemp_packageid0_input","sensorTemperature":50}
{"sensorKey":"coretemp_packageid0_max","sensorTemperature":100}
{"sensorKey":"coretemp_core0_crit","sensorTemperature":100}
{"sensorKey":"coretemp_core0_critalarm","sensorTemperature":0}
{"sensorKey":"coretemp_core0_input","sensorTemperature":47}
{"sensorKey":"coretemp_core0_max","sensorTemperature":100}
{"sensorKey":"coretemp_core1_crit","sensorTemperature":100}
{"sensorKey":"coretemp_core1_critalarm","sensorTemperature":0}
{"sensorKey":"coretemp_core1_input","sensorTemperature":49}
{"sensorKey":"coretemp_core1_max","sensorTemperature":100}
{"sensorKey":"iwlwifi_input","sensorTemperature":30}

Expected behavior Each sensor should have a unique SensorKey or way of identification.

Environment (please complete the following information):

  • Windows: [paste the result of ver]
  • Linux: [paste contents of /etc/os-release and the result of uname -a]
  • Mac OS: [paste the result of sw_vers and uname -a
  • FreeBSD: [paste the result of freebsd-version -k -r -u and uname -a]
  • OpenBSD: [paste the result of uname -a]
$ cat /etc/os-release 
NAME=Gentoo
ID=gentoo
PRETTY_NAME="Gentoo/Linux"
ANSI_COLOR="1;32"
HOME_URL="https://www.gentoo.org/"
SUPPORT_URL="https://www.gentoo.org/support/"
BUG_REPORT_URL="https://bugs.gentoo.org/"
$ uname -a
Linux loaner 4.19.97-gentoo #2 SMP Mon Feb 10 01:05:38 PST 2020 x86_64 Intel(R) Core(TM) i7-6600U CPU @ 2.60GHz GenuineIntel GNU/Linux

Additional context

$ for x in /sys/class/hwmon/hwmon2/temp*_*; do echo $x; cat $x; done
/sys/class/hwmon/hwmon2/temp1_crit
100000
/sys/class/hwmon/hwmon2/temp1_crit_alarm
0
/sys/class/hwmon/hwmon2/temp1_input
45000
/sys/class/hwmon/hwmon2/temp1_label
Package id 0
/sys/class/hwmon/hwmon2/temp1_max
100000
/sys/class/hwmon/hwmon2/temp2_crit
100000
/sys/class/hwmon/hwmon2/temp2_crit_alarm
0
/sys/class/hwmon/hwmon2/temp2_input
43000
/sys/class/hwmon/hwmon2/temp2_label
Core 0
/sys/class/hwmon/hwmon2/temp2_max
100000
/sys/class/hwmon/hwmon2/temp3_crit
100000
/sys/class/hwmon/hwmon2/temp3_crit_alarm
0
/sys/class/hwmon/hwmon2/temp3_input
44000
/sys/class/hwmon/hwmon2/temp3_label
Core 1
/sys/class/hwmon/hwmon2/temp3_max
100000