🛠 Surveiller température et fréquence CPU
Objectifs
Le H3 est connu pour chauffer : sans refroidissement, une charge soutenue sur les quatre Cortex-A7 provoque du throttling. Ce tutorale met en place une surveillance complète sous Armbian/mainline : lecture du capteur thermique sunxi THS, observation du DVFS (fréquences et tensions pilotées via le régulateur SY8106A), et test de charge contrôlé pour trouver le point d'écrêtage de votre carte — avec ou sans dissipateur.
Matériel
- Orange Pi PC sous Armbian, alimentation 5 V / 2 A (jack DC)
- Optionnel mais recommandé : dissipateur adhésif, petit ventilateur USB
- Accès SSH (tutoriel Ethernet+SSH)
- Paquets : sudo apt install stress-ng
Code complet
- Script de contrôle sanitaire (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
- Test de charge avec échantillonnage 1 Hz pendant 2 minutes :
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
- Comparer nu vs dissipateur : relancer le test, sauvegarder les sorties dans un fichier, tracer la courbe.
Vérification attendue
Au repos : 35-50 °C environ. En stress : la fréquence monte à ~1200 MHz puis la courbe température plafonne et la fréquence retombe par paliers — c'est le throttling. Avec dissipateur, le palier arrive plus tard ou disparaît. Les seuils exacts de throttling ne sont pas documentés par une source fiable.
Erreurs fréquentes
- Lire thermal_zone sans vérifier le capteur : confirmer que thermal_zone0 est bien « sun8i-ths » (sinon parcourir /sys/class/thermal/thermal_zone*/type).
- Conclure à un défaut quand la fréquence baisse en charge : c'est le DVFS qui protège la puce, pas un bug.
- Croire le régulateur réglable librement : le mainline force le minimum du SY8106A à 1.0 V car les tables vendor descendaient sous les 1.1 V de la datasheet — ne pas forcer manuellement.
- Oublier que la carte chauffe dans un boîtier fermé : le H3 nu en l'air libre n'a rien à voir avec un boîtier plastique hermétique.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash