Au travail, je réalise beaucoup de tests automatisés de logiciels sur des téléphones Android. Ils sont branchés en permanence sur une machine de développement, et on leur donne des tâches à exécuter via ADB. J'aimerais beaucoup pouvoir surveiller leurs températures, et le faire via ADB serait le moyen le plus simple.
Réponse
Trop de publicités?C'est simple, sur Android 10 ou plus, une fois que vous avez trouvé comment faire.
adb shell dumpsys thermalservice
Sur mon Samsung A52 5G avec Android 12, cela donne, avec des valeurs apparemment en Celsius.
IsStatusOverride: false
ThermalEventListeners:
callbacks: 1
killed: false
broadcasts count: -1
ThermalStatusListeners:
callbacks: 4
killed: false
broadcasts count: -1
Thermal Status: 0
Cached temperatures:
Temperature{mValue=0.0, mType=2, mName=SUBBAT, mStatus=0}
Temperature{mValue=0.0, mType=2, mName=SUBBATRAW, mStatus=0}
Temperature{mValue=25.6, mType=0, mName=AP, mStatus=0}
Temperature{mValue=25.7, mType=5, mName=PA, mStatus=0}
Temperature{mValue=23.8, mType=2, mName=BAT, mStatus=0}
Temperature{mValue=24.7, mType=3, mName=LRB, mStatus=0}
Temperature{mValue=24.7, mType=3, mName=LRF, mStatus=0}
Temperature{mValue=24.7, mType=3, mName=LRP, mStatus=0}
Temperature{mValue=0.0, mType=4, mName=USB, mStatus=0}
HAL Ready: true
HAL connection:
ThermalHAL 2.0 connected: yes
Current temperatures from HAL:
Temperature{mValue=25.6, mType=0, mName=AP, mStatus=0}
Temperature{mValue=23.8, mType=2, mName=BAT, mStatus=0}
Temperature{mValue=24.7, mType=3, mName=LRB, mStatus=0}
Temperature{mValue=24.7, mType=3, mName=LRF, mStatus=0}
Temperature{mValue=24.7, mType=3, mName=LRP, mStatus=0}
Temperature{mValue=25.7, mType=5, mName=PA, mStatus=0}
Temperature{mValue=0.0, mType=2, mName=SUBBAT, mStatus=0}
Temperature{mValue=0.0, mType=2, mName=SUBBATRAW, mStatus=0}
Temperature{mValue=0.0, mType=4, mName=USB, mStatus=0}
Current cooling devices from HAL:
Temperature static thresholds from HAL:
Ma tablette chinoise Android 10 très bon marché dit :
IsStatusOverride: false
ThermalEventListeners:
callbacks: 1
killed: false
broadcasts count: -1
ThermalStatusListeners:
callbacks: 2
killed: false
broadcasts count: -1
Thermal Status: 0
Cached temperatures:
Temperature{mValue=30.8, mType=3, mName=test temperature sensor, mStatus=0}
HAL Ready: true
HAL connection:
ThermalHAL 2.0 connected: yes
Current temperatures from HAL:
Temperature{mValue=30.8, mType=3, mName=test temperature sensor, mStatus=0}
Current cooling devices from HAL:
CoolingDevice{mValue=100, mType=0, mName=test cooling device}
C'est probablement la configuration par défaut dans Android 10.
Le service Android sous-jacent pour cela est un peu compliqué . Il est dit que HAL 2.0 est apparu à Android 10, et que les versions précédentes n'avaient que HAL 1.0. Le seul appareil pré-Android 10 que j'ai essayé jusqu'à présent était un Black Shark 2 avec Android 9, où dumpsys thermalservice
n'a produit aucun résultat.
Jusqu'à présent, je n'ai compris qu'une partie des valeurs de mName. Il semble évident que les noms varient d'un fabricant à l'autre, mais les valeurs mType semblent être cohérentes.
- AP = Application Processor - peut-être le SoC, ou le CPU ? mType 0.
- BAT = BATTERY = Batterie. mType 2, ce qui rend très plausible le fait que SUBBAT et SUBBATRAW soient liés à une batterie, comme leurs noms le suggèrent.
- CPU = CPU. mType 0.
- GPU = GPU. mType 1.
- NPU = Neural Processing Unit ? mType 9.
- PA = Amplificateur de puissance. mType 5.
- SKIN = boîtier de l'appareil, vraisemblablement. mType 3. Cela suggère que LRB, LRF et LRP sur le Samsung ont quelque chose à voir avec le boîtier ou les boutons, et que le seul capteur sur la tablette bon marché surveille le boîtier.
- USB = Universal Serial Bus, vraisemblablement. mType 4.
Fuente pour certains d'entre eux.
Les valeurs mStatus correspondent à l'état d'étranglement de la puissance, de 0 (pas d'étranglement) à 6 (arrêt pour cause de chaleur).