# Relever la température du SoC d'un Raspberry Pi Surveiller la température de votre Raspberry Pi permet d'anticiper les ralentissements et d'éviter les dommages matériels. **À partir de 80 °C, le Pi réduit automatiquement sa fréquence** (throttling) pour se protéger ; au-delà de 85 °C, le throttling devient plus agressif. Les composants ne risquent pas de griller dans des conditions normales — la protection thermique est intégrée — mais une température qui plafonne haut indique qu'un meilleur refroidissement s'impose. À noter : sur un Raspberry Pi, le CPU et le GPU partagent le même SoC (Broadcom). Les deux commandes ci-dessous renvoient donc des valeurs quasi identiques, issues de capteurs très proches. On parle plus justement de « température du SoC ». Tests réalisés sur un Raspberry Pi 4 sous Raspberry Pi OS Bookworm. ## Fondamentaux La température rapportée par le firmware VideoCore est accessible via `vcgencmd` : ``` $ vcgencmd measure_temp temp=43.0'C ``` La température exposée par le kernel se trouve dans `/sys/class/thermal/thermal_zone0/temp`, en millièmes de **°C** : ``` $ cat /sys/class/thermal/thermal_zone0/temp 44790 ``` Pour l'afficher en **°C**, on divise par 1000 : ``` $ awk '{printf("temp=%.1f°C\n", $1/1e3)}' /sys/class/thermal/thermal_zone0/temp temp=44.7°C ``` ## Script Le script ci-dessous affiche les deux mesures côte à côte, avec un formatage homogène. ```bash #!/bin/bash # Script : piSensorsTemp # Objet : Afficher la température du SoC d'un Raspberry Pi (2/3/4/5) # Auteur : Cédric Abonnel — https://www.abonnel.fr — licence CC BY # ------------------------------------------------------------------ echo "$(date) @ $(hostname)" echo "-------------------------------------------" # Température rapportée par le firmware (VideoCore) gpu_temp=$(vcgencmd measure_temp | sed "s/'C/°C/") echo "Firmware (VideoCore) => $gpu_temp" # Température rapportée par le kernel (zone thermique cpu-thermal) for zone in /sys/class/thermal/thermal_zone*; do if [[ "$(cat "$zone/type" 2>/dev/null)" == "cpu-thermal" ]]; then awk '{printf("Kernel (cpu-thermal) => temp=%.1f°C\n", $1/1e3)}' "$zone/temp" break fi done ``` Trois améliorations par rapport à la version originale : - `vcgencmd` est appelé sans chemin absolu — `/opt/vc/bin/` n'existe plus depuis Raspberry Pi OS Bullseye et a totalement disparu sur le Pi 5. - La zone thermique est détectée dynamiquement plutôt que codée en dur sur `thermal_zone0`, ce qui évite les surprises selon les configurations kernel. - Le symbole degré est harmonisé (`°C` partout) via un simple `sed` sur la sortie de `vcgencmd`. Rendre le script exécutable : ``` $ chmod +x piSensorsTemp $ ./piSensorsTemp ``` Rafraîchir l'affichage toutes les secondes (l'option `-d` surligne les valeurs qui changent) : ``` $ watch -n 1 -d ./piSensorsTemp ``` Exemple d'exécution : ``` $ ./piSensorsTemp vendredi 15 mai 2026, 11:25:31 (UTC+0200) @ rpitst ------------------------------------------- Firmware (VideoCore) => temp=43.0°C Kernel (cpu-thermal) => temp=43.3°C ``` ## Si la température est trop haute Quelques pistes si vous observez du throttling régulier : - **Dissipateurs passifs** : utiles, mais insuffisants seuls sur un Pi 4 sous charge soutenue. - **Ventilateur** : la solution la plus efficace ; le boîtier officiel du Pi 4 en intègre un, piloté par le kernel. - **Boîtier dissipateur** (type Argon ONE, FLIRC) : tout le boîtier sert de radiateur. - **Vérifier la ventilation de la pièce** et éviter les boîtiers fermés sans circulation d'air. ## Pour aller plus loin - [How to find out Raspberry Pi GPU and ARM CPU temperature on Linux](https://www.cyberciti.biz/faq/linux-find-out-raspberry-pi-gpu-and-arm-cpu-temperature-command/) — l'article qui m'a servi de point de départ. - [lm-sensors does not detect integrated temperature sensor on Raspberry Pi](https://github.com/lm-sensors/lm-sensors/issues/30) — pourquoi `sensors` ne suffit pas sur Pi.