En el trabajo, realizo muchas pruebas de software automatizadas en teléfonos Android. Permanecen permanentemente conectados a una máquina de desarrollo, y se les da trabajos para ejecutar a través de ADB. Me gustaría mucho ser capaz de controlar sus temperaturas, y hacerlo a través de ADB sería la manera más fácil.
Respuesta
¿Demasiados anuncios?Esto es sencillo, en Android 10 o posterior, una vez que descubras cómo.
adb shell dumpsys thermalservice
En mi Samsung A52 5G con Android 12, esto produce, con valores aparentemente 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:
Mi tablet china muy barata con Android 10 dice:
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}
Esa es probablemente la configuración por defecto en Android 10.
El servicio Android subyacente para esto es un poco complicado . Dice que HAL 2.0 apareció en Android 10, y que las versiones anteriores sólo tenían HAL 1.0. El único dispositivo anterior a Android 10 que he probado hasta ahora era un Black Shark 2 con Android 9, donde dumpsys thermalservice
no produjo ninguna salida.
De momento sólo he averiguado parte de los valores de mName. Parece claro que los nombres varían entre fabricantes, pero los valores mType parecen ser consistentes.
- AP = Procesador de aplicaciones - ¿tal vez el SoC, o la CPU? mTipo 0.
- BAT = BATTERY = Batería. mTipo 2, lo que hace muy plausible que SUBBAT y SUBBATRAW estén relacionados con la batería, como sugieren sus nombres.
- CPU = CPU. mTipo 0.
- GPU = GPU. mTipo 1.
- NPU = Unidad de Procesamiento Neural? mTipo 9.
- PA = Amplificador de potencia. mTipo 5.
- SKIN = Caso de dispositivo, presumiblemente. mTipo 3. Eso sugiere que LRB, LRF y LRP en el Samsung tienen que ver con la carcasa o los botones, y que el único sensor de la tablet barata está controlando la carcasa.
- USB = Universal Serial Bus, presumiblemente. mTipo 4.
Fuente para algunos de ellos.
Los valores de mStatus son el estado de estrangulamiento de la energía, de 0 (sin estrangulamiento) a 6 (apagado por calor).