Developer Guide Release

External Thermal Sensor
Remote Temperature Offset
Shutdown Limits
Removing External Thermal Sensor Software Support
NVIDIA DRIVE™ AGX includes support for an external thermal sensor device that measures the SoC and ambient temperatures. This sensor is outside the NVIDIA® SoC, connected over an I2C bus.
The processor core and ambient temperatures are measured as follows:
Remote temperature is the temperature on the hotspot of Tegra chip.
Local temperature is the temperature on the external tmon.
This sensor provides the following modes of operation:
Normal mode: Values or limits written to/read from the temperature registers or temperature limit registers are encoded/decoded as is. The temperature range in which the sensor works in Normal mode is 0 degrees Celsius to 127 degrees Celsius.
Extended mode: Values are encoded/decoded with an offset of 64 degrees Celsius. The temperature range in which the sensor works in Extended mode is -64 degrees Celsius to 191 degrees Celsius.
The temperature and limit registers are 8-bits wide, which normally covers the values from 0 to 255. However, using an offset of 64 enables them to cover the values from -64 to 191, which is the temperature range for Extended mode. Therefore, NVIDIA DRIVE™ software adds an offset of 64 to the values to be written when writing limits in extended mode. Similarly, an offset of 64 is subtracted from the values read, when reading temperatures or limits in extended mode by NVIDIA DRIVE™ software.
The operation mode of the sensor in the software is set to Extended.
Remote Temperature Offset
The remote temperature offset is the offset value applied as a correction to the remote temperature reading from the sensor, to get the real temperature value of Tegra hotspot. This value is obtained after appropriate qualification of the hardware platform.
This offset is configured in MB1 BCT and the kernel (one of Guest OS).
For MB1, the offset is provided via the MB1 BCT configuration file:
Search for THERMAL in the file above to find external thermal sensor configuration settings.
For kernel, offset setting is provided via kernel DTS file. Kernel DTS files can be found in:
For example, the following Device Tree node and property are used to configure the offset:
onsemi,nct72@4c {
compatible = "onsemi,nct72";
offset = <(-44)>; /* Actual offset will be this value/4 */
Theoffset is provided at 0.25 degC resolution.
The actual offset value used by the kernel driver shall be “DT provided value/4”.
For example:
To set offset value -11 degC, provide offset = <(-44)>
To set offset value -11.5 degC, provide offset = <(-46)>
Shutdown Limits
The external thermal sensor is wired to shut down the target after reaching a particular remote temperature limit. This thermal sensor is armed with a shutdown limit.
When the SoC die temperature reaches or exceeds the thermal shutdown limit, the sensor triggers an immediate shutdown, by asserting its own THERM_SHUTDOWN signal. THERM_SHUTDOWN signal is an active low signal, which is connected to the PMIC chip EN0 signal.
External Thermal Sensor shutdown is pre-enabled on power on reset. But in MB1 BCT and the kernel with one of Guest OS, the shutdown limit is updated as per the qualified values.
For MB1, the shutdown setting is provided using the MB1 BCT configuration file at:
Search for THERMAL in the file above to find “external thermal sensor shutdown configuration”.
To locate the configured shutdown limit value, consult the following command in the MB1 BCT configuration file of your platform.
#Program the remote shutdown limit
pmic.thermal.7.block[0].commands[1].0x19.0xFF = 0xB1; # 113 + 64
Since the thermal sensor is configured in extended mode, the value programmed is the shutdown limit (in milli degC) + 64.
For the kernel, the shutdown setting is provided using kernel dtsi file. DTS files are available at:
For example, the following DT nodes and property are used to configure the shutdown values.
onsemi,nct72@4c {
compatible = "onsemi,nct72";
ext {
shutdown-limit = <109>; /* in DegC */
Refer the DT node above in your platform of kernel DT to find the shutdown limit value configured.
sysfs interfaces to read temperature
Execute the following commands.
root@nvidia:~# cat /sys/bus/i2c/devices/<device>/temperature
34 50.75
The output displays two temperatures (in DegC), the first one is the local temperature and second one is the remote temperature in degrees Celsius.
Execute the following commands to read remote temperature (in DegC):
root@nvidia:~# cat /sys/bus/i2c/devices/<device>/ext_temperature
The output displays remote temperature in DegC.
The output displays remote temperature (in DegC).
Alternative sysfs for reading remote temperature
root@nvidia:~# cat /sys/class/thermal/thermal_zone*/type
In above command output, select the zone that is matching type “Tdiode_tegra”.
If that zone is 1, then execute following command to display remote temperature in milliDegC:
root@nvidia:~# cat /sys/class/thermal/thermal_zone1/temp
The remote temperature reading is after applying the remote offset value correction.
Removing External Thermal Sensor Software Support
For non-safety critical platforms, the external thermal sensor device is optional. Without external thermal sensor, Tegra internal thermal sensors can provide the thermal functionality support. If you want to remove the external thermal sensor part from your HW board, then the following changes must be done in the software to remove the external thermal sensor related programming.
MB1 PMIC configuration file
In MB1, external thermal shutdown limit/remote offset is programmed. This must be removed.
The file is located at:
Find the PMIC configuration file corresponding to your platform. For example,
In this file, if you see commands that perform thermal programming to the external thermal sensor’s I2C address , remove them.
The sets of commands below must be removed:
######################## THERMAL (ID = 7) ###############
pmic.thermal.7.block-count = 1;
pmic.thermal.7.block[0].type = 1; # I2C Type
pmic.thermal.7.block[0].i2c-controller-id = 0;
pmic.thermal.7.block[0].slave-add = 0x98; # 7BIt:0x4c
pmic.thermal.7.block[0].reg-data-size = 8;
pmic.thermal.7.block[0].reg-add-size = 8;
pmic.thermal.7.block[0].delay = 10;
pmic.thermal.7.block[0].count = 6;
# Put the sensor in shutdown mode
pmic.thermal.7.block[0].commands[0].0x9.0x40 = 0x40;
#Program the remote shutdown limit
pmic.thermal.7.block[0].commands[1].0x19.0xFF = 0xB1; # 113 + 64
# Program the local shutdown limit
# Set to maximum limit for not having local shutdown
pmic.thermal.7.block[0].commands[2].0x20.0xFF = 0xFE; # 190 + 64
# Remote temperature offset to 1.3750 DegC
pmic.thermal.7.block[0].commands[3].0x11.0xFF = 0x1; # High byte: 1 degC resolution
pmic.thermal.7.block[0].commands[4].0x12.0xF0 = 0x60; # Low byte: 0.0625 DegC resolution
# Places the device in continuous conversion mode
# Set Extended temperature mode
pmic.thermal.7.block[0].commands[5].0x9.0x44 = 0x04;
Kernel Device tree
Thermal shutdown limit/remote offset is also programmed in the kernel.
In the kernel’s device tree file for your board, set the "status" property of below nodes to "disabled" to disable external thermal sensor driver.
i2c@3160000 {
onsemi,nct72@4c {
status = "disabled";
thermal-zones {
Tboard_tegra {
status = "disabled";
Tdiode_tegra {
status = "disabled";