🛠 Surveillance thermique big.LITTLE et ventilateur
Objetivos
Supervisar y controlar la gestión térmica del Exynos5422: bajo mainline, el ventilador PWM (niveles 0/130/170/230) sube por escalones a 50/60/70 °C, el clúster A15 se limita pasivamente a 70 °C (−2 pasos DVFS, ≈1,8/1,2 GHz) y luego a 85 °C (≈600 MHz), siendo crítico a 120 °C, con una zona térmica separada para el Mali-T628. A 2,0 GHz, la refrigeración activa es indispensable.
Material
- ODROID-XU4 con su disipador + ventilador original (el XU4Q pasivo pierde ~16 % de rendimiento bajo sysbench a 2,0 GHz)
sudo apt install stress-ngpara la carga de trabajo
Código completo
#!/usr/bin/env bash
# xu4-thermique.sh — surveillance big.LITTLE + test de chauffe
set -euo pipefail
# 1) Temperatures : un thermal_zone par capteur TMU (cpu0..cpu3 + gpu)
paste <(cat /sys/class/thermal/thermal_zone*/type) \
<(awk '{printf "%.1f C\n", $1/1000}' /sys/class/thermal/thermal_zone*/temp)
# 2) Fréquences courantes par cluster (A15 <= 2.0 GHz, A7 <= 1.4 GHz)
grep . /sys/devices/system/cpu/cpufreq/policy*/scaling_cur_freq
# 3) Politique du ventilateur : pwm-fan, cooling-levels 0/130/170/230
cat /sys/class/thermal/thermal_zone0/trip_point_*_temp 2>/dev/null || true
# 4) Test de chauffe 60 s puis observation du decrochage A15
stress-ng --cpu 8 --timeout 60s &
for i in $(seq 1 12); do sleep 5
echo "--- T+$((i*5))s"; awk '{printf "%.1f C ", $1/1000}' \
/sys/class/thermal/thermal_zone*/temp; echo
grep . /sys/devices/system/cpu/cpufreq/policy*/scaling_cur_freq
done
Verificación esperada
Tras 20-40 s de carga, las frecuencias del clúster A15 caen por debajo de 2,0 GHz (escalones 1,8 → 1,2 GHz) mientras el ventilador sube de régimen; al liberar la carga, todo vuelve a 2000000 kHz. Sin un ventilador en buen estado, el limitamiento permanente confirma el sobrecalentamiento.
Errores frecuentes
- Hacer funcionar la placa sin un ventilador funcional a 2,0 GHz: throttling permanente, el silencio total exige limitar a 1,2 GHz.
- Escribir en /sys/class/pwm/pwm0: el canal está reclamado por pwm-fan, hay que pasar por el governor térmico.
- Confundir las zonas cpu y gpu: el Mali tiene su propia zona térmica con la misma escala.
- Una alimentación de 5 V débil que hace caer la frecuencia independientemente de la temperatura.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash