🛠 Surveillance thermique et fréquence CPU
Objetivos
Instrumentar la térmica del RK3568B2: leer los sensores del kernel, seguir la frecuencia de los cuatro Cortex-A55 (hasta 2 GHz) bajo carga y verificar que el disipador original aguanta (prueba CNX: un poco más de 50 °C a 35 °C ambiente, 1,3 W en reposo, 4,5 W en carga pesada).
Material
- ODROID-M1 con su disipador original (123 × 100 × 19 mm), carcasa cerrada o abierta
- Armbian o DietPi; paquete cpufrequtils opcional; stress-ng para la carga
- Sonda externa o cámara térmica opcional para reproducir los 35 °C
Código completo
#!/usr/bin/env bash
# monitoring-odroidm1.sh — température + fréquence, 1 ligne / 2 s
while true; do
for z in /sys/class/thermal/thermal_zone*; do
t=$(($(cat $z/temp) / 1000))
echo -n "$(cat $z/type): ${t}C "
done
for c in /sys/devices/system/cpu/cpufreq/policy*; do
f=$(($(cat $c/scaling_cur_freq) / 1000))
echo -n "cpu$(( ${c##*policy} )): ${f}MHz "
done
echo "| load: $(cut -d' ' -f1 /proc/loadavg)"
sleep 2
done
# Dans un second terminal : montée en charge et throttling
sudo apt-get install -y stress-ng
stress-ng --cpu 4 --timeout 300
Verificación esperada
En reposo, unos grados por encima de la temperatura ambiente; bajo carga en 4 núcleos, la temperatura sube y luego se estabiliza hacia 50-60 °C con el disipador original. scaling_cur_freq se mantiene cerca de 2000 MHz mientras no se alcance el umbral de throttling.
Errores frecuentes
- Leer /sys/class/thermal sin dividir entre 1000: el valor está en milésimas de grado.
- Comparar sin disipador: las cifras de CNX suponen el radiador original montado.
- Confundir policy0 (todos los núcleos, cluster único A55) con cuatro ajustes independientes.
- Carcasa mal dimensionada: el disipador sobresale de la placa (123 × 100 mm), algunas carcasas lo aplastan.
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