How to read Temperature sensors on TX2 (command line)?

Running “cat /sys/devices/virtual/thermal/thermal_zone*/type” or “cat /sys/devices/virtual/thermal/thermal_zone*/temp” gives expected results, but when I installed lm-sensors package and tried to set it up using “sensors-detect”, no sensors were detected?

What’s the canonical / correct way to get the actual temperature on the command line?

On R28.2 I can run “sensors” (and this works as expected), but 'sensors-detect" resulted in kernel error and eventual reboot from watchdog. The sensors-detect error changes for me and is not consistent. This is just conjecture, but I suspect there sensors-detect uses an i2c probe at an address which is better off not probed.

Example:

[  103.661908] CPU3: SError detected, daif=1c0, spsr=0x800000c5, mpidr=80000101, esr=bf40c000
[  103.661914] CPU4: SError detected, daif=1c0, spsr=0x800000c5, mpidr=80000102, esr=bf40c000
[  103.661919] CPU0: SError detected, daif=1c0, spsr=0x800000c5, mpidr=80000100, esr=bf40c000
[  103.661925] CPU5: SError detected, daif=1c0, spsr=0x800000c5, mpidr=80000103, esr=bf40c000
[  103.661937] CPU1: SError detected, daif=140, spsr=0x20000000, mpidr=80000000, esr=be000000
[  103.661944] CPU2: SError detected, daif=1c0, spsr=0x800000c5, mpidr=80000001, esr=be000000
** 98 printk messages dropped ** [  103.664591] **************************************
** 414 printk messages dropped ** [  103.672636] CPU1: SError detected, daif=140, spsr=0x20000000, mpidr=80000000, esr=be000000
** 595 printk messages dropped ** [  103.684182]        Address Type = Secure DRAM
** 364 printk messages dropped ** [  103.691127]        Address Type = Secure DRAM
** 363 printk messages dropped ** [  103.697985]        Address Type = Secure DRAM
** 353 printk messages dropped ** [  103.704701] Machine check error in DCC:1:
** 374 printk messages dropped ** [  103.711699]        Address Type = Secure DRAM
** 364 printk messages dropped ** [  103.718533]        Address Type = Secure DRAM
** 363 printk messages dropped ** [  103.725308]        Address Type = Secure DRAM
** 353 printk messages dropped ** [  103.731935] Machine check error in DCC:1:
** 374 printk messages dropped ** [  103.738876]        Address Type = Secure DRAM
** 364 printk messages dropped ** [  103.745729]        Address Type = Secure DRAM
** 363 printk messages dropped ** [  103.752529]        Address Type = Secure DRAM
** 364 printk messages dropped ** [  103.759399]        Address Type = Secure DRAM
** 363 printk messages dropped ** [  103.766230]        Address Type = Secure DRAM
** 364 printk messages dropped ** [  103.773070]        Address Type = Secure DRAM
** 361 printk messages dropped ** [  103.779672] CPU1: SError detected, daif=140, spsr=0x20000000, mpidr=80000000, esr=be000000
** 595 printk messages dropped ** [  103.790891]        Address Type = Secure DRAM
** 364 printk messages dropped ** [  103.797759]        Address Type = Secure DRAM
** 363 printk messages dropped ** [  103.804481]        Address Type = Secure DRAM

...snip...

[  110.698724] **************************************
[  110.698724] Machine check error in DCC:1:
[  110.698724] 	Status = 0xf400000100000405
[  110.698725] 	Bank does not have any known errors
[  110.698725] 	Overflow (there may be more errors)
[  110.698725] 	Uncorrected (this is fatal)
[  110.698726] 	Error reporting enabled when error arrived
[  110.698726] 	ADDR = 0xb0
[  110.698758] **************************************
[  110.698758] CPU1: SError detected, daif=140, spsr=0x20000000, mpidr=80000000, esr=be000000
[  110.698760] CPU2: SError detected, daif=1c0, spsr=0x800000c5, mpidr=80000001, esr=be000000
[  110.698900] ROC:IOB Machine Check Error:
[  110.698901] 	Address Type = Secure DRAM
[  110.698903] 	Address = 0x0 (Unknown Device)
[  110.698926] **************************************

In one case where there was a kernel register dump (I missed the log of this).

Scanning some devices can cause “unexpected” behavior. It seems though that if you just run the command:

sensors

…you will get correct behavior (though annoying this is not necessarily a bug to have random address probing do something unexpected). There is a GUI package “xsensors” if you prefer this. If you are looking specifically at measuring these values in a program I’m not sure what to suggest there.

sudo apt-get install sensors
sudo apt-get install xsensors

Unless you have a reason I’d avoid running sensors-detect.

Example output:

# sensors
BCPU-therm-virtual-0
Adapter: Virtual device
temp1:        +33.5°C  (crit = +101.0°C)

MCPU-therm-virtual-0
Adapter: Virtual device
temp1:        +33.5°C  (crit = +101.0°C)

GPU-therm-virtual-0
Adapter: Virtual device
temp1:        +32.5°C  (crit = -40.0°C)

Tboard_tegra-virtual-0
Adapter: Virtual device
temp1:        +30.0°C  (crit = +107.0°C)

Tdiode_tegra-virtual-0
Adapter: Virtual device
temp1:        +30.8°C  (crit = +107.0°C)

thermal-fan-est-virtual-0
Adapter: Virtual device
temp1:        +32.9°C

@linuxdev thanks, this is the exact information I was looking for!