8.0 KiB
Evidence and Interpretation
Use this reference after the core skill has established device authorization, symptom context, and a safety screen. Commands are read-only unless a section explicitly says otherwise.
Contents
- Evidence quality
- Thermal and battery baseline
- Symptom branches
- Correlation guide
- Controlled Batterystats capture
- Bugreport privacy
- Official references
Evidence Quality
Prefer evidence in this order:
- a controlled comparison that changes only one plausible cause;
- a timestamped trend spanning cool-to-hot or hot-to-cool behavior;
- two independent system signals from the same window;
- a single system snapshot;
- user recollection without device evidence.
Do not elevate a lower-quality signal merely because it names an app or subsystem.
Thermal and Battery Baseline
Capture the full service outputs before extracting fields:
adb -s <serial> shell dumpsys battery
adb -s <serial> shell dumpsys thermalservice
adb -s <serial> shell dumpsys cpuinfo
adb -s <serial> shell top -n 1
adb -s <serial> shell dumpsys power
Interpretation rules:
dumpsys batterydescribes battery and charging state. Its temperature field is commonly expressed in tenths of a degree Celsius, but verify the device's representation instead of blindly dividing.dumpsys thermalserviceis most useful on Android 10 and later. Some OEMs omit detailed sensors, expose only severity, or restrict output.- Framework thermal status ranges from
0(none) through6(shutdown) on implementations that expose the standard service.2means moderate,3severe,4critical, and5emergency thermal stress. - Sensor readings are not interchangeable. Battery, skin, CPU, GPU, modem, and USB sensors describe different locations and policies.
- OEM thresholds differ. Never declare a universal safe temperature from one raw value.
- Thermal throttling is a response to heat, not automatically its cause.
If top -n 1 is rejected, inspect adb -s <serial> shell top --help and use only a syntax supported by that device. Do not install BusyBox or request root as a fallback.
Symptom Branches
Idle or Screen-Off Heat
adb -s <serial> shell dumpsys batterystats
adb -s <serial> shell dumpsys batterystats --history
adb -s <serial> shell dumpsys power
adb -s <serial> shell dumpsys alarm
adb -s <serial> shell dumpsys jobscheduler
adb -s <serial> shell dumpsys sensorservice
adb -s <serial> shell dumpsys location
adb -s <serial> shell dumpsys deviceidle
Look for duration and recurrence, not merely presence. A scheduled alarm, registered sensor, or listed job can be normal. Correlate it with screen-off time, wakeups, process activity, network traffic, and the heat window.
App-Specific Heat
First identify the exact package without guessing from the display name. Then inspect it:
adb -s <serial> shell dumpsys cpuinfo
adb -s <serial> shell dumpsys meminfo <package>
adb -s <serial> shell dumpsys package <package>
adb -s <serial> shell dumpsys jobscheduler <package>
adb -s <serial> shell dumpsys gfxinfo <package>
Package memory is not a heat measurement. High memory can contribute to pressure or churn, but sustained CPU/GPU, radios, camera, sensors, or charging usually provide a stronger causal path.
Cellular, Weak-Signal, or 5G Heat
adb -s <serial> shell dumpsys telephony.registry
adb -s <serial> shell dumpsys connectivity
adb -s <serial> shell dumpsys wifi
adb -s <serial> shell dumpsys batterystats
adb -s <serial> shell getprop | grep -iE 'radio|baseband'
Redact phone numbers, subscriber identifiers, network names, and addresses. Look for a repeated association among poor signal, handovers or radio activity, higher battery drain, and the heat timeline. Confirm with a same-workload Wi-Fi or airplane-mode window when safe and acceptable to the user.
Do not change preferred network type from a copied bitmask. Slot IDs, carrier policy, radio capabilities, and command availability vary by device and Android build.
Charging Heat
adb -s <serial> shell dumpsys battery
adb -s <serial> shell dumpsys usb
adb -s <serial> shell dumpsys thermalservice
Record plugged source, charging status, battery level, workload, charger, cable, case, and ambient conditions. A USB debugging cable can itself change the result. Do not simulate unplugging with dumpsys battery set; that changes framework state without reproducing the physical charging condition.
Camera, Navigation, Gaming, Video, or Tethering
Collect the thermal baseline plus only the relevant services:
adb -s <serial> shell dumpsys media.camera
adb -s <serial> shell dumpsys media.metrics
adb -s <serial> shell dumpsys location
adb -s <serial> shell dumpsys sensorservice
adb -s <serial> shell dumpsys connectivity
adb -s <serial> shell dumpsys wifi
adb -s <serial> shell dumpsys display
adb -s <serial> shell dumpsys SurfaceFlinger
Service names and permissions vary. Record unsupported services rather than replacing them with root-only commands.
Correlation Guide
| Observation | Stronger interpretation | Required counter-check |
|---|---|---|
| Rising thermal severity and sustained package CPU | App/process workload may drive heat | Repeat sample; compare with app inactive |
| Heat plus poor signal and mobile-radio activity | Modem/radio loop may contribute | Same workload on stable Wi-Fi or airplane mode |
| Heat while idle plus long partial wakelock | Background work may prevent sleep | Match wakelock duration to screen-off heat window |
| Heat only while physically charging | Charging path or charge-plus-load may contribute | Safe unplugged comparison with workload controlled |
| Severe thermal state but low visible app CPU | GPU, modem, camera, charging, kernel, or hardware remains plausible | Inspect matching subsystem and OEM blind spots |
| Battery drain without thermal escalation | Energy use may be real but insufficient to cause thermal stress | Compare temperature trend and workload duration |
| High temperature with no exposed activity | Hardware fault or inaccessible vendor activity remains possible | Safe mode/OEM diagnostics or qualified service |
Controlled Batterystats Capture
Resetting Batterystats erases the existing collection window. Do it only after preserving the original output and obtaining approval for a fresh experiment.
Official Android guidance uses this sequence:
- save current Batterystats or a bugreport if needed;
- reset Batterystats;
- disconnect the USB cable so the device runs on battery;
- reproduce a defined workload for a defined duration;
- reconnect and export Batterystats or a bugreport;
- compare the captured window with a control window.
Do not run the reset merely to make output shorter. Record that the reset occurred because it changes the evidence base.
Bugreport Privacy
adb bugreport <local-path>.zip creates a broad diagnostic archive. Before running it:
- explain that it may include identifiers, accounts, app usage, notifications, networks, logs, and recent system activity;
- choose a private local path with the user;
- do not upload or transmit the archive without separate approval;
- extract only the evidence needed for the diagnosis;
- redact sensitive fields before sharing excerpts;
- follow the user's retention or deletion preference.