🛠 Surveillance thermique et fréquence du RK3568B2
Objetivos
Implementar una monitorización continua de la temperatura y la frecuencia del RK3568B2: leer las zonas térmicas y las políticas cpufreq, lanzar una alerta mediante script y comprender el comportamiento térmico de la placa (FriendlyElec nunca ha visto el CPU superar los 50 °C en una carcasa metálica pasiva; rango de funcionamiento 0-70 °C). Escribirás un demonio systemd que registre periódicamente y alerte al superar un umbral, útil antes de instalar la placa en un armario de red sin flujo de aire.
Material
- NanoPi R5S bajo Debian/Ubuntu/Armbian, preferiblemente con carcasa metálica (el disipador pasivo forma parte de la carcasa)
- Opcional: ventilador de 5 V en el conector ZH1.5 dedicado
- Paquetes:
apt install lm-sensors(sensores);stress-ngpara la carga de prueba
Código completo
#!/bin/bash
# surveille_r5s.sh — journalise température + fréquences, alerte > 65 °C
# (seuil bas car la spec max est 70 °C ambiants 0-70)
LOG=/var/log/r5s-thermal.csv
THRESH=65000 # milli-°C
[ -f "$LOG" ] || echo "date,temp_mC,cpu0_kHz,cpu3_kHz" > "$LOG"
while :; do
T=$(cat /sys/class/thermal/thermal_zone*/temp 2>/dev/null | head -1)
T=${T:-0}
F0=$(cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq)
F3=$(cat /sys/devices/system/cpu/cpufreq/policy4/scaling_cur_freq 2>/dev/null || echo 0)
echo "$(date -Is),$T,$F0,$F3" >> "$LOG"
if [ "$T" -gt "$THRESH" ]; then
logger -t r5s-thermal "ALERTE température ${T}m°C (seuil ${THRESH}m°C)"
fi
sleep 30
done
# Test de charge : stress-ng --cpu 4 --timeout 300
# Ordonnanceur/gouverneur : cat /sys/.../policy0/scaling_governor (schedutil)
# Installer en service :
# cp surveille_r5s.sh /usr/local/bin/ puis unit systemd Type=simple
Verificación esperada
Después de stress-ng --cpu 4 --timeout 300, el CSV muestra el aumento de temperatura (manteniéndose por debajo de ~50-55 °C en carcasa metálica) y frecuencias cercanas a 2000 MHz mientras no intervenga el throttling. cat /sys/class/thermal/thermal_zone*/type identifica la zona cpu. El servicio systemd se inicia al arrancar (systemctl status r5s-thermal). Si la temperatura se acerca a 65 °C, verificar la carcasa (el metal sirve como disipador), la ubicación confinada, o añadir el ventilador en el conector ZH1.5.
Errores frecuentes
- Equivocarse de unidad: temp está en milicelsius (42000 = 42 °C), scaling_cur_freq en kHz.
- Comparar cadenas con
-gtsin eliminar los saltos de línea: usar$(cat ...)limpio otr -d. - policy0/policy4: en RK3568 los cuatro A55 suelen estar bajo una sola política; probar la existencia de las rutas antes de leerlas.
- Creer que lm-sensors es infalible: en Rockchip, la lectura directa de /sys/class/thermal es más fiable que
sensorssegún los kernels. - Monitorizar sin probar nunca bajo carga: una carcasa mal ventilada solo se revela con stress-ng durante 5-10 minutos.
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