🛠 Surveiller la thermique big.LITTLE et piloter les fréquences CPU
Objectifs
Surveiller la température et la fréquence des 8 cœurs big.LITTLE du RK3588 (4 Cortex-A76 jusqu'à 2,4 GHz + 4 Cortex-A55 jusqu'à 1,8 GHz), comprendre la politique thermique du device-tree mainline (ventilateur déclenché à 55 °C, plein régime à 65 °C, seuil package_thermal) et choisir un gouverneur de fréquence. La carte n'a pas de plage de température officielle publiée : le refroidissement actif (connecteur ventilateur 5 V PWM ou dissipateur) est attendu en charge soutenue.
Matériel
- Orange Pi 5 Plus avec dissipateur et/ou ventilateur 5 V sur le connecteur dédié
- Alimentation 5 V / 4 A minimum (les pics A76 à 2,4 GHz + NVMe + 2,5 GbE sollicitent l'entrée)
sudo apt install -y stress-ng linux-tools-common linux-cpupower
Code complet
# 1. Températures en continu (une ligne par zone thermique)
watch -n1 'paste <(cat /sys/class/thermal/thermal_zone*/type 2>/dev/null) \
<(cat /sys/class/thermal/thermal_zone*/temp 2>/dev/null)'
# 2. Fréquences par policy cpufreq (une policy par cluster big.LITTLE)
for p in /sys/devices/system/cpu/cpufreq/policy*; do
echo "$(basename $p) : $(cat $p/scaling_cur_freq) Hz (max $(cat $p/cpuinfo_max_freq))"
done
# 3. Gouverneurs : performance en bench, powersched/ondemand au quotidien
sudo apt install -y linux-cpupower
sudo cpupower frequency-set -g performance
cat /sys/devices/system/cpu/cpufreq/policy*/scaling_governor
# 4. Stress 8 cœurs pendant 60 s et observation du throttling
sudo apt install -y stress-ng
stress-ng --cpu 8 --timeout 60s &
for i in $(seq 1 12); do
paste <(cat /sys/class/thermal/thermal_zone*/temp) \
<(cat /sys/devices/system/cpu/cpufreq/policy*/scaling_cur_freq)
sleep 5
done
# 5. Seuils thermiques déclarés par le device-tree
sudo apt install -y lm-sensors && sensors
paste <(cat /sys/class/thermal/thermal_zone*/type) \
<(cat /sys/class/thermal/thermal_zone*/trip_type 2>/dev/null)
Vérification attendue
Au repos : 30–50 °C. Sous stress-ng, les fréquences montent (jusqu'à 2 400 000 kHz sur le cluster A76, 1 800 000 kHz sur le cluster A55) puis la température grimpe vers les paliers 55/65 °C où le ventilateur embarqué accélère ; en cas de saturation, scaling_cur_freq retombe sous le maximum (throttling visible dans la boucle).
Erreurs fréquentes
- Confondre policy cpufreq et cœurs : chaque policy couvre un cluster (les index cpu0..cpu7 des clusters big.LITTLE ne sont pas garantis entre images) — vérifier avec
cat $p/related_cpus. - Gouverneur performance laissé en permanence : chauffe et consommation inutiles en service.
- Carte sans flux d'air dans un boîtier fermé : les paliers 55/65 °C sont atteints en quelques minutes ; prévoir le ventilateur sur le connecteur 5 V PWM.
- >
Autres tutoriels pour cette carte
- Allumer une LED via le GPIO 40 broches (libgpiod)
- Lire un bouton poussoir et afficher dans la console
- Premier script Python : fiche signalétique de la carte et LED
- Variation d'intensité d'une LED avec PWM (sysfs pwm)
- Lire un capteur I2C (BMP280) depuis le bus du connecteur
- Exploiter le double Ethernet 2,5 GbE et sécuriser le SSH
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash