How to Inspect Hardware Temperatures and CPU Throttling on Android Using ADB dumpsys hardware_properties

Modern Android smartphones and tablets operate within tight thermal envelopes. During intensive workloads—such as 3D rendering, extended camera recording, machine learning model inference, or rapid charging—temperatures across the System-on-Chip (SoC) and battery rise rapidly. To protect lithium-ion batteries from thermal degradation and prevent physical user discomfort, Android incorporates an internal thermal management framework. When temperature thresholds are breached, the operating system aggressively throttles CPU clock frequencies, caps display refresh rates, dims screen brightness, and in extreme cases, forces an emergency thermal shutdown.

For Android developers, hardware engineers, and device testers, monitoring these thermal thresholds without relying on uncalibrated third-party applications is essential. Through the Android Debug Bridge (ADB), the command dumpsys hardware_properties queries the low-level HardwarePropertiesManagerService to reveal live sensor readings across CPU clusters, GPU cores, battery cells, and device chassis surfaces.

Thermal Architecture and the HardwarePropertiesManager Subsystem

The Android thermal framework operates by aggregating readings from multiple on-die thermal zones exposed via the Linux kernel’s /sys/class/thermal/ interface. The HardwarePropertiesManager normalises these values across different hardware manufacturers into standardised telemetry categories:

  • DEVICE_TEMPERATURE_CPU: Temperature readings sampled from temperature sensors embedded within high-performance (Big) and high-efficiency (LITTLE) CPU core clusters.
  • DEVICE_TEMPERATURE_GPU: Thermal sensor readings situated within the graphics processing core.
  • DEVICE_TEMPERATURE_BATTERY: Battery pack thermal sensors monitored directly by the fuel gauge IC and power management integrated circuit (PMIC).
  • DEVICE_TEMPERATURE_SKIN: Thermistors placed near the external surface or frame of the device to approximate temperatures felt by the user’s hand.

Alongside raw temperature values, the subsystem monitors throttling thresholds, including current operating temperatures, warning thresholds, severe throttling points, and emergency shutdown limits.

Connecting via ADB and Verifying Thermal Support

Establish a debugging connection between your terminal workstation and the Android device via USB or Wireless debugging:

# Verify connected device
adb devices -l

# Ensure device shell access is operational
adb get-state

To verify that the OEM kernel and HAL implement the hardware properties interface, query the service dump directly:

# Query HardwarePropertiesManagerService diagnostic telemetry
adb shell dumpsys hardware_properties

On compliant devices, the output lists active thermal zones, reporting current temperature in degrees Celsius alongside warning and shutdown thresholds.

Inspecting CPU, GPU, and Battery Temperatures

Review the output of dumpsys hardware_properties to examine specific sensor domains:

-------------------------------------------------------------------------------
HARDWARE PROPERTIES SERVICE (dumpsys hardware_properties)
CPU temperatures: [42.5, 43.0, 48.2, 49.0]
CPU throttling temperatures: [75.0, 75.0, 85.0, 85.0]
CPU shutdown temperatures: [105.0, 105.0, 105.0, 105.0]
GPU temperatures: [46.0]
GPU throttling temperatures: [80.0]
GPU shutdown temperatures: [100.0]
Battery temperatures: [33.4]
Battery throttling temperatures: [45.0]
Battery shutdown temperatures: [60.0]
Skin temperatures: [35.2]
Skin throttling temperatures: [42.0]
Skin shutdown temperatures: [55.0]
Fan speeds: []
-------------------------------------------------------------------------------

Key observations from this telemetry:

  • CPU Cluster Discrepancy: Notice how performance cores (cores 2 and 3) typically operate at higher temperatures (48–49°C) compared to efficiency cores (42–43°C).
  • Throttling Margin: Subtract current readings from throttling temperatures to calculate thermal headroom. In this example, the CPU has ~26°C of headroom before frequency throttling engages.
  • Battery Safety Thresholds: Notice that battery shutdown temperatures are set much lower (60°C) than silicon cores (105°C) due to chemical instability risks in lithium cells.

Correlating Thermal Telemetry with Kernel Thermal Zones

To inspect real-time sensor updates with millisecond granularity during automated stress testing, compare the hardware properties dump against kernel thermal zones:

# List kernel thermal zones and associated sensor types
adb shell 'for zone in /sys/class/thermal/thermal_zone*; do echo "$zone: $(cat $zone/type) = $(cat $zone/temp) mC"; done'

The kernel reports raw values in millidegrees Celsius (e.g. 42500 represents 42.5°C), allowing continuous polling without incurring high CPU overhead.

Simulating Thermal Throttling for App Performance Audits

When profiling mobile games or demanding applications, developers must ensure graceful degradation (such as dropping graphic quality or pausing background synchronization) when thermal limits are reached. You can simulate thermal throttling states on Android 10+ using the companion thermal service:

# Override thermal status to SEVERE throttling
adb shell cmd thermalservice override-status 3

# Verify app behavior and check current thermal status
adb shell cmd thermalservice get-thermal-status

# Reset simulated status back to normal hardware monitoring
adb shell cmd thermalservice reset

The status codes correspond to standard API levels: 0 (None), 1 (Light), 2 (Moderate), 3 (Severe), 4 (Critical), 5 (Emergency), and 6 (Shutdown).

Continuous Thermal Logging During Benchmarks

To log temperature trends across an extended benchmark session, script a simple ADB loop writing timestamps and temperatures to a CSV file:

# Log temperatures every 5 seconds to a local monitoring file
while true; do
    echo -n "$(date +%T), " >> thermal_log.csv
    adb shell dumpsys hardware_properties | grep -E "CPU temperatures|Battery temperatures" | tr '\n' ' ' >> thermal_log.csv
    echo "" >> thermal_log.csv
    sleep 5
done

Using dumpsys hardware_properties ensures Android engineers obtain verified, OEM-calibrated hardware telemetry to diagnose performance bottlenecks and build thermally resilient mobile software.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.