# 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.