🛠 Surveiller température et fréquence CPU
Objetivos
El H3 es conocido por calentarse: sin refrigeración, una carga sostenida en los cuatro Cortex-A7 provoca throttling. Este tutorial implementa una supervisión completa bajo Armbian/mainline: lectura del sensor térmico sunxi THS, observación del DVFS (frecuencias y tensiones controladas mediante el regulador SY8106A), y prueba de carga controlada para encontrar el punto de estrangulamiento de su placa — con o sin disipador.
Material
- Orange Pi PC bajo Armbian, fuente de alimentación 5 V / 2 A (conector DC)
- Opcional pero recomendado: disipador adhesivo, pequeño ventilador USB
- Acceso SSH (tutorial Ethernet+SSH)
- Paquetes: sudo apt install stress-ng
Código completo
- Script de control sanitario (health.sh):
#!/usr/bin/env bash
# health.sh — température, governor, fréquence max (Orange Pi PC / H3)
echo "CPU temp: $(($(cat /sys/class/thermal/thermal_zone0/temp) / 1000)) °C" # sunxi THS
echo "Governor: $(cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor)"
echo "Fréq act: $(cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq) kHz"
echo "Fréq max: $(cat /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_max_freq) kHz"
# Le quad A7 est nominal à 1.2 GHz sur les images Armbian :
sudo ethtool end0 2>/dev/null | grep Speed || true # lien réseau à 100 Mbit/s attendu
- Prueba de carga con muestreo a 1 Hz durante 2 minutos:
sudo apt install -y stress-ng
stress-ng --cpu 4 --timeout 120 &
while sleep 1; do
printf '%s temp=%s°C freq=%sMHz\n' "$(date +%T)" \
"$(($(cat /sys/class/thermal/thermal_zone0/temp)/1000))" \
"$(($(cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq)/1000))"
done
wait
# Vue temps réel fournie par Armbian :
armbianmonitor -m
- Comparar sin disipador vs con disipador: relanzar la prueba, guardar las salidas en un archivo, trazar la curva.
Verificación esperada
En reposo: aproximadamente 35-50 °C. Bajo estrés: la frecuencia sube a ~1200 MHz, luego la curva de temperatura se estabiliza y la frecuencia cae por escalones — esto es el throttling. Con disipador, el escalón aparece más tarde o desaparece. Los umbrales exactos de throttling no están documentados por una fuente fiable.
Errores frecuentes
- Leer thermal_zone sin verificar el sensor: confirmar que thermal_zone0 sea efectivamente « sun8i-ths » (si no, recorrer /sys/class/thermal/thermal_zone*/type).
- Concluir que hay un defecto cuando la frecuencia baja bajo carga: es el DVFS protegiendo el chip, no un bug.
- Creer que el regulador se puede ajustar libremente: mainline fuerza el mínimo del SY8106A a 1.0 V porque las tablas del fabricante bajaban por debajo de los 1.1 V de la hoja de datos — no forzar manualmente.
- Olvidar que la placa se calienta en una carcasa cerrada: el H3 desnudo al aire libre no tiene nada que ver con una carcasa de plástico hermética.
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