publish: Relever la température du SoC d'un Raspberry Pi

This commit is contained in:
Cédrix
2026-05-15 21:02:24 +02:00
parent f9e74d7d1d
commit bb11e83131
5 changed files with 148 additions and 150 deletions
@@ -1,16 +0,0 @@
{
"title": "Relever la température du SoC d'un Raspberry Pi",
"_updated_at": "2026-05-15 19:02:23",
"slug": "relever-la-temperature-du-soc-d-un-raspberry-pi",
"published": true,
"published_at": "2020-04-17 20:51",
"category": "Électronique",
"tags": {
"tags": [
"Raspberry Pi",
"devOps"
]
},
"seo_title": "",
"seo_description": ""
}
@@ -1,100 +0,0 @@
# 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.
+61 -28
View File
@@ -1,67 +1,100 @@
# Relever la température dans la GPU et le CPU d'un Raspberry Pi
# Relever la température du SoC d'un Raspberry Pi
Il est judicieux de connaître la température du processeur et de la puce graphique afin de ne pas endommager votre Raspberry Pi. **La température maximale est de 80 °C**, au delà de 93 °C les composants peuvent subir des dommages irréversibles. Le pire ? Griller votre carte !
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.
Voici mes tests réalisés avec un Raspberry Pi 4.
À 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 de la GPU est accessible depuis la commande `vcgencmd` et le paramètre `measure_temp` :
La température rapportée par le firmware VideoCore est accessible via `vcgencmd` :
```
$ vcgencmd measure_temp
temp=43.0'C
```
La température du processeur est stocké dans le fichier `/sys/class/thermal/thermal_zone0/temp`, exprimée en millième de **°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 afficher la valeur en **°C**, il faut effectuer une division par 1000 de la valeur contenue dans `/sys/class/thermal/thermal_zone0/temp` :
Pour l'afficher en **°C**, on divise par 1000 :
```
$ awk '{printf("\ntemp=%.1f°C\n\n",$1/1e3)}' /sys/class/thermal/thermal_zone0/temp
temp=44.7'C
$ awk '{printf("temp=%.1f°C\n", $1/1e3)}' /sys/class/thermal/thermal_zone0/temp
temp=44.7°C
```
## Script évolué
Le script ci-dessous affiche la température de la GPU et du CPU.
```BASH
## Script
Le script ci-dessous affiche les deux mesures côte à côte, avec un formatage homogène.
```bash
#!/bin/bash
# Script: piSensorsTemp
# Purpose: Display the ARM CPU and GPU temperature of Raspberry Pi 2/3/4
# Author: Cédric Abonnel <https:*www.abonnel.fr/start?q=piSensorsTemp&do=search> under CC BY
# -------------------------------------------------------
# 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 "-------------------------------------------"
echo "GPU => $(/opt/vc/bin/vcgencmd measure_temp)"
echo "CPU => $(awk '{printf("temp=%.1f°C\n\n",$1/1e3)}' /sys/class/thermal/thermal_zone0/temp)"
# 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
```
Pour rendre exécutable le code :
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 :
```
$ sudo chmod +x piSensorsTemp
$ chmod +x piSensorsTemp
$ ./piSensorsTemp
```
Pour afficher toutes les secondes, les informations rafraîchies :
Rafraîchir l'affichage toutes les secondes (l'option `-d` surligne les valeurs qui changent) :
```
$ watch -n 1 -d ./piSensorsTemp
```
Exemple d'execution :
Exemple d'exécution :
```
$ ./piSensorsTemp
vendredi 17 janvier 2020, 11:25:31 (UTC+0100) @ rpitst
---
GPU => temp=43.0'C
CPU => temp=43.3°C
vendredi 15 mai 2026, 11:25:31 (UTC+0200) @ rpitst
-------------------------------------------
Firmware (VideoCore) => temp=43.0°C
Kernel (cpu-thermal) => temp=43.3°C
```
## Biblio
[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/)
## Si la température est trop haute
[lm-sensors does not detect integrated temperature sensor on Raspberry Pi](https://github.com/lm-sensors/lm-sensors/issues/30)
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.
+20 -6
View File
@@ -1,18 +1,32 @@
{
"uuid": "96eaaeb7-e04f-472d-b4ed-37ffbdae945f",
"slug": "relever-temperature-cpu-gpu",
"title": "Relever la température dans la GPU et le CPU d'un Raspberry Pi",
"slug": "relever-la-temperature-du-soc-d-un-raspberry-pi",
"title": "Relever la température du SoC d'un Raspberry Pi",
"author": "cedric@abonnel.fr",
"published": true,
"published_at": "2020-04-17 20:51:11",
"featured": false,
"published_at": "2020-04-17 20:51",
"created_at": "2020-04-17 20:51:11",
"updated_at": "2020-04-17 20:51:11",
"revisions": [],
"updated_at": "2026-05-15 19:02:24",
"revisions": [
{
"n": 1,
"date": "2026-05-15 19:02:24",
"comment": "Titre modifié, tags modifiés, contenu modifié",
"title": "Relever la température dans la GPU et le CPU d'un Raspberry Pi"
}
],
"cover": "",
"files_meta": [],
"external_links": [],
"seo_title": "",
"seo_description": "",
"og_image": "",
"category": "Électronique"
"category": "Électronique",
"tags": {
"tags": [
"Raspberry Pi",
"devOps"
]
}
}
@@ -0,0 +1,67 @@
# Relever la température dans la GPU et le CPU d'un Raspberry Pi
Il est judicieux de connaître la température du processeur et de la puce graphique afin de ne pas endommager votre Raspberry Pi. **La température maximale est de 80 °C**, au delà de 93 °C les composants peuvent subir des dommages irréversibles. Le pire ? Griller votre carte !
Voici mes tests réalisés avec un Raspberry Pi 4.
## Fondamentaux
La température de la GPU est accessible depuis la commande `vcgencmd` et le paramètre `measure_temp` :
```
$ vcgencmd measure_temp
temp=43.0'C
```
La température du processeur est stocké dans le fichier `/sys/class/thermal/thermal_zone0/temp`, exprimée en millième de **°C** :
```
$ cat /sys/class/thermal/thermal_zone0/temp
44790
```
Pour afficher la valeur en **°C**, il faut effectuer une division par 1000 de la valeur contenue dans `/sys/class/thermal/thermal_zone0/temp` :
```
$ awk '{printf("\ntemp=%.1f°C\n\n",$1/1e3)}' /sys/class/thermal/thermal_zone0/temp
temp=44.7'C
```
## Script évolué
Le script ci-dessous affiche la température de la GPU et du CPU.
```BASH
#!/bin/bash
# Script: piSensorsTemp
# Purpose: Display the ARM CPU and GPU temperature of Raspberry Pi 2/3/4
# Author: Cédric Abonnel <https:*www.abonnel.fr/start?q=piSensorsTemp&do=search> under CC BY
# -------------------------------------------------------
echo "$(date) @ $(hostname)"
echo "-------------------------------------------"
echo "GPU => $(/opt/vc/bin/vcgencmd measure_temp)"
echo "CPU => $(awk '{printf("temp=%.1f°C\n\n",$1/1e3)}' /sys/class/thermal/thermal_zone0/temp)"
```
Pour rendre exécutable le code :
```
$ sudo chmod +x piSensorsTemp
$ ./piSensorsTemp
```
Pour afficher toutes les secondes, les informations rafraîchies :
```
$ watch -n 1 -d ./piSensorsTemp
```
Exemple d'execution :
```
$ ./piSensorsTemp
vendredi 17 janvier 2020, 11:25:31 (UTC+0100) @ rpitst
---
GPU => temp=43.0'C
CPU => temp=43.3°C
```
## Biblio
[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/)
[lm-sensors does not detect integrated temperature sensor on Raspberry Pi](https://github.com/lm-sensors/lm-sensors/issues/30)