🛠 Surveillance thermique et fréquence : DVFS, seuils et bridage
Objectifs
Comprendre la gestion thermique du Pi 4B : limite materielle a 85 degres C, etrangement ARM entre 80 et 85, aucun soft limit (contrairement au 3B+), moteur DVFS avec paliers 1500/1000/750/600 MHz. Vous construirez un moniteur qui journalise temperature, fréquence et bits de bridage.
Materiel
- Raspberry Pi 4B (dissipateur ou ventilateur fortement recommande)
- sudo apt install stress-ng
- Terminal ou session SSH
Code complet
#!/usr/bin/env bash
# thermal-log.sh - journalise temperature, fréquence DVFS et état de bridage
while true; do
T=$(vcgencmd measure_temp | cut -d= -f2)
F=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq)
TH=$(vcgencmd get_throttled | cut -d= -f2)
V=$(vcgencmd pmic_read_adc | grep EXT5V_V | awk '{print $NF}')
echo "$(date +%T) temp=$T freq=${F}Hz throttled=$TH 5V=${V}"
sleep 1
done
# Dans un autre terminal, monter en charge :
sudo stress-ng --cpu 4 --timeout 120s
# Decoder get_throttled : bit0 sous-tension, bit2 bridage thermique,
# bit3 fréquence sous le max, bit16 sous-tension passee, bit20 bridage passe.
Verification attendue
Sous stress-ng, la fréquence chute par paliers (1500 puis 1000 MHz) quand la temperature approche 80 degres, get_throttled devient 0x50005 (bridage thermique + fréquence bridee), puis revient a 0x0 au refroidissement. EXT5V_V doit rester près de 5.0 V.
Erreurs frequentes
- Croire a un bridage matériel a 80 : le dur cut est 85, la zone 80-85 est le bridage progressif.
- Ne pas lire get_throttled : les bits 16/20 signalent des incidents passes invisibles sinon.
- Boitier ferme sans dissipateur : le Pi 4 marche chaud, c'est documente.
- Confondre scaling_cur_freq (instantane) et la fréquence max config arm_freq=1500.
- Sous-alimenter : une sous-tension provoque le même bridage que la chaleur.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython