🛠 Surveillance thermique et fréquence CPU
Objectifs
Instrumenter la thermique du RK3568B2 : lire les capteurs du noyau, suivre la fréquence des quatre Cortex-A55 (jusqu'à 2 GHz) sous charge, et vérifier que le dissipateur d'origine tient (test CNX : un peu plus de 50 °C à 35 °C ambiant, 1,3 W au repos, 4,5 W en charge lourde).
Matériel
- ODROID-M1 avec son dissipateur d'origine (123 × 100 × 19 mm), boîtier fermé ou ouvert
- Armbian ou DietPi ; paquet cpufrequtils optionnel ; stress-ng pour la charge
- Sonde externe ou chambre chaude optionnelle pour reproduire les 35 °C
Code complet
#!/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
Vérification attendue
Au repos, quelques degrés au-dessus de l'ambiant ; en charge sur 4 coeurs, la température grimpe puis se stabilise vers 50-60 °C avec le dissipateur d'origine. scaling_cur_freq reste proche de 2000 MHz tant que le seuil de throttling n'est pas atteint.
Erreurs fréquentes
- Lire /sys/class/thermal sans diviser par 1000 : la valeur est en millièmes de degré.
- Comparer sans dissipateur : les chiffres CNX supposent le radiateur d'origine monté.
- Confondre policy0 (tous les coeurs, cluster unique A55) avec quatre réglages indépendants.
- Boîtier mal dimensionné : le dissipateur dépasse la carte (123 × 100 mm), certains boîtiers l'écrasent.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash