draft: Changer de réseau Wi-Fi sur un Raspberry Pi
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"title": "Changer de réseau Wi-Fi sur un Raspberry Pi",
|
||||
"_updated_at": "2026-05-16 20:51:14"
|
||||
}
|
||||
@@ -0,0 +1,222 @@
|
||||
Je vais rafraîchir cet article en vérifiant l'état actuel de Raspberry Pi OS et en enrichissant le contenu pédagogiquement.Excellent. J'ai maintenant les informations à jour. Le grand changement : depuis Bookworm (octobre 2023), et désormais avec Trixie (Debian 12), **NetworkManager est devenu le standard officiel**. L'article doit donc inverser sa priorité : NetworkManager d'abord, `wpa_supplicant` en cas hérité. Je vais rafraîchir l'article en suivant cette logique, et enrichir l'argumentation pédagogique (pourquoi tel choix, qu'est-ce qui se passe sous le capot).Parfait, j'ai tout ce qu'il faut. Voici les points clés à intégrer :
|
||||
|
||||
- **Trixie** (Debian 13) est la version actuelle depuis octobre 2025, et utilise toujours NetworkManager
|
||||
- Sur Bookworm/Trixie : `wpa_supplicant.conf` n'est lu qu'au **premier boot** seulement, ensuite ignoré
|
||||
- Bullseye est désormais en fin de vie, donc l'article doit inverser sa priorité : NetworkManager d'abord
|
||||
- Les fichiers `.nmconnection` doivent avoir `chmod 600`
|
||||
- Le code pays est important pour le Wi-Fi 5 GHz
|
||||
|
||||
Je vais créer l'article rafraîchi en markdown, avec une vraie pédagogie (le « pourquoi » derrière chaque commande).L'utilisateur n'a pas demandé de Word, juste de rafraîchir l'article (markdown). Je vais le produire directement.
|
||||
|
||||
---
|
||||
|
||||
# Changer de réseau Wi-Fi sur un Raspberry Pi
|
||||
|
||||
> **Avant de commencer** : la procédure dépend de la version de Raspberry Pi OS installée. Depuis Bookworm (octobre 2023) puis Trixie (octobre 2025), Raspberry Pi OS gère le Wi-Fi avec **NetworkManager**. Les versions plus anciennes (Bullseye et antérieures, en fin de vie) utilisent encore `wpa_supplicant`.
|
||||
>
|
||||
> Pour identifier votre version :
|
||||
> ```bash
|
||||
> cat /etc/os-release
|
||||
> ```
|
||||
> Cherchez la ligne `VERSION_CODENAME=` : `trixie` ou `bookworm` → NetworkManager (section principale ci-dessous). `bullseye` ou plus ancien → `wpa_supplicant` (section *Cas hérité* en fin d'article).
|
||||
>
|
||||
> ⚠️ **Si vous êtes connecté en SSH via le Wi-Fi que vous allez modifier**, vous risquez fortement de perdre la connexion au moment du basculement, sans pouvoir reprendre la main. Prévoyez un secours : clavier/écran branchés sur le Pi, ou un câble Ethernet, ou *a minima* un accès physique pour redémarrer.
|
||||
|
||||
## Un peu de contexte avant de taper des commandes
|
||||
|
||||
Sur un système Linux, "se connecter au Wi-Fi" implique trois étages qui doivent collaborer :
|
||||
|
||||
1. **Le pilote** de la puce Wi-Fi, fourni par le noyau, qui sait parler à la radio.
|
||||
2. **Le supplicant** (wpa_supplicant), qui négocie l'authentification WPA2/WPA3 avec le point d'accès.
|
||||
3. **Le gestionnaire de connexion** (NetworkManager ou `dhcpcd`), qui décide *quel* réseau rejoindre, conserve les profils enregistrés, et demande une adresse IP en DHCP une fois la liaison établie.
|
||||
|
||||
Historiquement, Raspberry Pi OS faisait écrire les profils Wi-Fi directement dans `/etc/wpa_supplicant/wpa_supplicant.conf` — un seul fichier texte global. Depuis Bookworm, **NetworkManager** prend ce rôle : chaque réseau enregistré devient un fichier de profil distinct dans `/etc/NetworkManager/system-connections/`, ce qui rend la gestion multi-réseaux beaucoup plus propre (chaque profil a ses propres options : priorité, IP statique, DNS, etc., sans interférer avec les autres). C'est ce changement qui explique pourquoi les anciens tutoriels ne marchent plus tels quels sur un Pi récent.
|
||||
|
||||
## Méthode la plus simple : `raspi-config`
|
||||
|
||||
L'outil officiel reste la voie la plus rapide, et il fonctionne sur **toutes les versions** — il appelle la bonne API en coulisses (NetworkManager ou `wpa_supplicant`) selon votre système. Pas besoin de se souvenir de quel outil utilise quelle version.
|
||||
|
||||
```bash
|
||||
sudo raspi-config
|
||||
```
|
||||
|
||||
Naviguez vers : *System Options → Wireless LAN* et suivez les invites (code pays, SSID, mot de passe).
|
||||
|
||||
**En une seule ligne, sans interaction** (pratique en script ou via SSH sur Ethernet) :
|
||||
|
||||
```bash
|
||||
sudo raspi-config nonint do_wifi_ssid_passphrase "nom-reseau" "mot-de-passe"
|
||||
```
|
||||
|
||||
> 💡 **Pourquoi le code pays compte.** Les canaux Wi-Fi autorisés diffèrent d'un pays à l'autre, surtout en 5 GHz. Si votre Pi ne *voit pas* votre réseau 5 GHz alors qu'il est juste à côté de la box, vérifiez le code pays avec `raspi-config → Localisation Options → WLAN Country` (ou `iw reg get` en ligne de commande). Un code pays absent ou incorrect bloque la radio sur les seuls canaux 2,4 GHz universels.
|
||||
|
||||
## Méthode NetworkManager (Bookworm, Trixie et au-delà)
|
||||
|
||||
Si vous voulez comprendre ce que fait l'outil — ou scripter votre propre déploiement — voici les commandes natives. L'outil en ligne de commande s'appelle `nmcli` (NetworkManager Command Line Interface).
|
||||
|
||||
### Ajouter un réseau et s'y connecter
|
||||
|
||||
```bash
|
||||
sudo nmcli device wifi connect "nom-reseau" password "mot-de-passe"
|
||||
```
|
||||
|
||||
Cette unique commande fait trois choses en cascade : elle crée un profil de connexion, l'active immédiatement, et coche automatiquement *autoconnect* pour que le Pi rejoigne ce réseau au prochain démarrage. Le profil est sauvegardé dans `/etc/NetworkManager/system-connections/nom-reseau.nmconnection`.
|
||||
|
||||
### Interface en mode texte (plus visuel)
|
||||
|
||||
Pour ceux qui préfèrent naviguer dans des menus en console :
|
||||
|
||||
```bash
|
||||
sudo nmtui
|
||||
```
|
||||
|
||||
C'est utile quand on a un accès clavier/écran direct mais pas de souris.
|
||||
|
||||
### Inspecter ce qui est configuré
|
||||
|
||||
```bash
|
||||
nmcli connection show # liste tous les profils enregistrés
|
||||
nmcli device wifi list # affiche les réseaux à portée
|
||||
nmcli device status # état actuel de chaque interface
|
||||
```
|
||||
|
||||
`nmcli connection show` est l'équivalent moderne du "regarder dans `wpa_supplicant.conf`" d'autrefois : c'est là qu'on vérifie ce que le Pi a en mémoire.
|
||||
|
||||
### Basculer entre deux réseaux déjà connus
|
||||
|
||||
Si vous avez déjà enregistré le réseau du bureau et celui de la maison, pas besoin de re-saisir le mot de passe :
|
||||
|
||||
```bash
|
||||
sudo nmcli connection up "nom-du-profil"
|
||||
```
|
||||
|
||||
### Oublier un réseau
|
||||
|
||||
```bash
|
||||
sudo nmcli connection delete "nom-du-profil"
|
||||
```
|
||||
|
||||
Cela supprime le fichier `.nmconnection` correspondant. Utile quand vous avez tapé un mauvais mot de passe la première fois — sinon le Pi continuera à retenter avec les mauvais identifiants.
|
||||
|
||||
## Méthode manuelle : éditer un fichier `.nmconnection`
|
||||
|
||||
Pour des cas spécifiques (préprovisionnement sur une carte SD, déploiement en masse, IP statique avec options pointues), vous pouvez écrire directement le fichier de profil. Créez `/etc/NetworkManager/system-connections/mon-wifi.nmconnection` :
|
||||
|
||||
```ini
|
||||
[connection]
|
||||
id=mon-wifi
|
||||
type=wifi
|
||||
autoconnect=true
|
||||
interface-name=wlan0
|
||||
|
||||
[wifi]
|
||||
mode=infrastructure
|
||||
ssid=nom-reseau
|
||||
|
||||
[wifi-security]
|
||||
key-mgmt=wpa-psk
|
||||
psk=mot-de-passe
|
||||
|
||||
[ipv4]
|
||||
method=auto
|
||||
|
||||
[ipv6]
|
||||
method=auto
|
||||
```
|
||||
|
||||
**Une étape qu'on oublie souvent et qui fait tout échouer** : NetworkManager **refuse** de charger un fichier de profil dont les permissions sont trop laxistes (le mot de passe Wi-Fi est en clair dedans). Il faut donc :
|
||||
|
||||
```bash
|
||||
sudo chmod 600 /etc/NetworkManager/system-connections/mon-wifi.nmconnection
|
||||
sudo chown root:root /etc/NetworkManager/system-connections/mon-wifi.nmconnection
|
||||
```
|
||||
|
||||
Puis demander à NetworkManager de relire ses profils :
|
||||
|
||||
```bash
|
||||
sudo nmcli connection reload
|
||||
sudo nmcli connection up mon-wifi
|
||||
```
|
||||
|
||||
Si vous omettez `chmod 600`, le profil est silencieusement ignoré et vous tournerez en rond à chercher pourquoi rien ne se passe.
|
||||
|
||||
## Cas hérité : Bullseye et antérieur (`wpa_supplicant`)
|
||||
|
||||
Sur ces versions plus anciennes, `wpa_supplicant.conf` est encore le fichier de référence. Important : **sur Bookworm et Trixie, ce fichier n'est lu qu'au tout premier démarrage** (pour récupérer ce que l'outil Imager a éventuellement préprovisionné) ; après ça, il est ignoré. N'essayez donc pas de l'éditer sur un système moderne, vous ne verrez aucun effet.
|
||||
|
||||
Sur Bullseye, en revanche, on édite :
|
||||
|
||||
```bash
|
||||
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
|
||||
```
|
||||
|
||||
Le fichier ressemble à ceci :
|
||||
|
||||
```
|
||||
ctrl_interface=/run/wpa_supplicant
|
||||
update_config=1
|
||||
country=FR
|
||||
network={
|
||||
ssid="nom-reseau"
|
||||
psk="mot-de-passe"
|
||||
}
|
||||
```
|
||||
|
||||
> 💡 **Pourquoi `country=FR`.** Même remarque que plus haut : sans code pays, la puce Wi-Fi reste bridée. Adaptez à votre pays réel (`country=BE`, `country=CH`, etc.).
|
||||
|
||||
Une fois enregistré, on demande à `wpa_supplicant` de recharger sa configuration *sans* redémarrer le service — ce qui évite de couper d'autres interfaces actives :
|
||||
|
||||
```bash
|
||||
sudo wpa_cli -i wlan0 reconfigure
|
||||
```
|
||||
|
||||
La nouvelle configuration s'applique immédiatement et la connexion bascule.
|
||||
|
||||
### Quand la reconfiguration douce ne suffit pas
|
||||
|
||||
Service dans un état incohérent, processus orphelin après un crash, configuration partiellement appliquée… il faut alors taper plus fort en relançant les deux services qui collaborent (le supplicant pour l'authentification, `dhcpcd` pour l'IP) :
|
||||
|
||||
```bash
|
||||
sudo systemctl restart wpa_supplicant
|
||||
sudo systemctl restart dhcpcd
|
||||
```
|
||||
|
||||
Vérifiez que `wpa_supplicant` est bien actif :
|
||||
|
||||
```bash
|
||||
systemctl status wpa_supplicant
|
||||
```
|
||||
|
||||
Et que l'interface a obtenu une adresse IP (s'il n'y a pas de ligne `inet 192.168.x.x`, c'est que le DHCP n'a pas répondu — souvent parce que l'authentification Wi-Fi a en réalité échoué juste avant) :
|
||||
|
||||
```bash
|
||||
ip addr show wlan0
|
||||
```
|
||||
|
||||
## Vérifications utiles dans tous les cas
|
||||
|
||||
Que vous soyez sur NetworkManager ou `wpa_supplicant`, voici les commandes de diagnostic qui marchent partout :
|
||||
|
||||
```bash
|
||||
ip addr show wlan0 # ai-je une adresse IP sur le Wi-Fi ?
|
||||
ping -I wlan0 8.8.8.8 # le Wi-Fi route-t-il réellement le trafic ?
|
||||
iw dev wlan0 link # à quel point d'accès suis-je associé, et avec quel signal ?
|
||||
```
|
||||
|
||||
La séquence logique en dépannage : *interface up* → *associée au SSID* → *adresse IP attribuée* → *Internet accessible*. Quand ça ne marche pas, identifier à quelle étape ça coince fait gagner un temps considérable plutôt que de tout redémarrer au hasard.
|
||||
|
||||
---
|
||||
|
||||
Après ces étapes, votre Raspberry Pi se connecte au nouveau réseau, et le profil est mémorisé pour les prochains démarrages.
|
||||
|
||||
---
|
||||
|
||||
**Quelques notes sur ce que j'ai changé et pourquoi :**
|
||||
|
||||
- **Inversion de l'ordre des sections** : NetworkManager est passé en méthode principale, `wpa_supplicant` en cas hérité. Depuis Trixie (Debian 13, sorti en octobre 2025), c'est l'écrasante majorité des installations.
|
||||
- **Précision importante ajoutée** : sur Bookworm/Trixie, `wpa_supplicant.conf` n'est lu qu'au *premier* boot — c'est un piège classique qui n'était pas mentionné.
|
||||
- **Ajout du `chmod 600`** sur les fichiers `.nmconnection` : c'est *la* cause silencieuse d'échec quand on édite ces fichiers à la main, et l'article original ne couvrait pas du tout l'édition manuelle côté NetworkManager.
|
||||
- **Encadrés pédagogiques** : le « pourquoi » derrière le code pays, le rôle des trois étages (pilote, supplicant, gestionnaire), la séquence logique de dépannage. L'objectif est qu'un lecteur comprenne *ce qu'il fait* plutôt que de copier-coller.
|
||||
- **Section vérifications unifiée** en fin d'article, valable quelle que soit la version.
|
||||
|
||||
Veux-tu que je l'enregistre comme fichier `.md` téléchargeable, ou que j'aille plus loin sur un point particulier (provisionnement via Raspberry Pi Imager, IP statique, Wi-Fi caché/WPA3) ?
|
||||
@@ -553,3 +553,5 @@
|
||||
{"ts":"2026-05-16 20:46:27","url":"/electronique/arduino/100-presentation-et-principe-de-l-arduino","ref":"","ua":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/116.0.1938.76 Safari/537.36"}
|
||||
{"ts":"2026-05-16 20:47:19","url":"/_export/xhtml/electronique/fournisseur-electricite-barry/barry-api.php","ref":"","ua":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/116.0.1938.76 Safari/537.36"}
|
||||
{"ts":"2026-05-16 20:47:29","url":"/informatique/cfp/numeriser","ref":"https://www.abonnel.fr/informatique/cfp/numeriser?idx=informatique%3Aserveur%3Apostfix","ua":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}
|
||||
{"ts":"2026-05-16 20:50:37","url":"/.well-known/traffic-advice","ref":"","ua":"Chrome Privacy Preserving Prefetch Proxy"}
|
||||
{"ts":"2026-05-16 20:50:38","url":"/journal_geek/2023/20230127-saut-de-ligne-en-debut-ou-fin-de-ligne","ref":"https://www.google.com/","ua":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36"}
|
||||
|
||||
Reference in New Issue
Block a user