Depuis la version de Raspbian Wheezy publiée 5 mai 2015, le fonctionnement du réseau a changé, et en particulier celle du WiFi.
Cela vaut également pour les versions de Raspbian Jessie datées du 24 septembre 2015 et du 21 novembre 2015 et sans doute pour les prochaines versions de Jessie.
WiFi en ligne de commande avec Raspbian Jessie
Je vous propose de lire dans un premier temps une traduction d’un post paru sur StackExchange, suivie d’un tutoriel basé sur les tests que j’ai effectués. Jacques un lecteur fidèle du blog vous propose également sa solution, vous la trouverez en fin d’article. |
Article paru sur StackExchange
Cette modification rend tous les tutoriels existants obsolètes, eh oui même ceux que vous trouvez sur framboise314
Notez que les anciens didacticiels peuvent encore être utilisés si vous souhaitez utiliser l’ancienne méthode de configuration manuelle, mais ne vous y amusez pas si vous avez seulement des connaissances de base en Linux.
La méthode de configuration actuelle (basé sur dhcpcd) présente de nombreux avantages (mais aussi quelques inconvénients mineurs) et son utilisation est vivement recommandée pour les nouveaux utilisateurs.
Comment configurer le réseau sur Raspbian Jessie
Si vous utilisez une connexion Ethernet derrière une Box ou un routeur il ne devrait y avoir aucune configuration à faire et tout devrait fonctionner « out of the box » (au sortir de la boîte !)
Si vous utilisez le WiFi avec l’interface graphique de Raspbian (LXDE), référez vous à l’article que j’ai publié il y a quelque temps sur framboise314.
Si vous utilisez le WiFi à partir de la ligne de commande configurez le fichier /etc/wpa_supplicant/wpa_supplicant.conf mis en place en suivant les indication publiées par la Fondation. C’est la seule façon de configurer le réseau lorsque le SSID n’est pas diffusé.
Cela peut également être utilisé pour mettre en place un système » Headless » (sans clavier ni écran) qui utiliserait un câble console par exemple, mais ce sera beaucoup plus facile si vous pouvez connecter un moniteur et un clavier lors de la configuration. Vous trouverez ci-dessous une autre méthode grâce à la quelle il est possible de se connecter un PC au Raspberry Pi à l’aide d’un câble Ethernet.
Fichiers de configuration réseau
Si vous utilisez une version récente de Raspbian le fichier /etc/network/interfaces devrait ressembler à celui qui est ci-dessous. Si vous l’avez modifié, il faut ABSOLUMENT le remettre comme celui-ci !.
auto lo iface lo inet loopback auto eth0 allow-hotplug eth0 iface eth0 inet manual auto wlan0 allow-hotplug wlan0 iface wlan0 inet manual wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf auto wlan1 allow-hotplug wlan1 iface wlan1 inet manual wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
Si la Fondation avait configuré dhcpcd comme son auteur l’a prévu, le fichier /etc/network/interfaces n’aurait plus été nécessaire. Le hook (crochet) 10 wpa_supplicant (normalement présent dans /usr/lib/dhcpcd/dhcpcd-hooks/) lance automatiquement WPA Supplicant sur les interfaces sans fil et il peut être installé si on souhaite l’utiliser.
Le fichier /etc/wpa_supplicant/wpa_supplicant.conf sera créé/modifié avec les méthodes de configuration recommandées, mais il peut aussi être configuré à la main. Il devrait contenir quelque chose comme ce qui suit :
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="ESSID" psk="Your_wifi_password" }
Si vous avez besoin de vous connecter à un réseau privé (qui ne diffuse pas son SSID) ajoutez la ligne scan_ssid=1 à l’intérieur du bloc network= {} ⋯.
NOTE : il y a de nombreuses autres options qui peuvent être utilisés. Lisez la page man wpa_supplicant.conf.
Configurer une adresse IP statique
L’utilisation d’une adresse statique est rarement la meilleure chose à faire. Si vous voulez/avez besoin d’une adresse IP fixe, définissez une réservation statique dans votre routeur (si possible) ou utiliser une implémentation libre de Zeroconf comme avahi.
Modifier le fichier /etc/dhcpcd.conf comme suit (extrait de la page man de dhcpcd.conf) :
Si vous définissez ip_address, dhcpcd ne tentera pas d’obtenir un bail auprès d’un DHCP et utilisera la valeur que vous avez indiquée pour l’adresse avec une durée de bail infinie.
Voici un exemple qui configure une adresse statique, la passerelle et un DNS.
interface eth0 static ip_address=192.168.0.10/24 static routers=192.168.0.1 static domain_name_servers=192.168.0.1
Il y a un bon article à propos de dhcpcd sur https://wiki.archlinux.org/index.php/dhcpcd Le fallback profile (profil de repli) est une alternative à l’adresse IP statique.
Connexion d’un ordinateur au Rapberry Pi
Les versions récentes de Raspbian (qui utilisent dhcpcd) permettent à ssh de travailler sur une adresse de liaison locale (link-locale) et avahi (qui est une implémentation de zeroconf) permet aux programmes de découvrir les hôtes (ordinateurs) présents sur un réseau local.
Cela signifie que vous pouvez relier le Raspberry Pi à un ordinateur (avec un câble Ethernet) ou à un routeur et vous y connecter sans en connaître l’adresse IP.
Vous pouvez facilement vous connecter depuis Linux et OS X en tapant ssh pi@hostname.local (le nom d’hôte par défaut est raspberrypi). Cela devrait fonctionner avec les interfaces graphiques (GUI) les plus populaires pour ssh. C’est parfois plus problématique avec certaines versions de Windows et avec des réseaux qui utilisent .local d’une manière non-standard. (Voir https://en.wikipedia.org/wiki/.local)
Si vous avez plusieurs Raspberry Pi sur le réseau assurez vous que chaque Raspberry Pi possède un nom d’hôte unique.
Vous pouvez utiliser un câble croisé (c’est la norme entre deux ordinateurs ou entre un ordinateur et un routeur), mais ce n’est pas obligatoire (la plupart des interfaces grand-public modernes détectent automatiquement le type de câble).
Un inconvénient de la connexion directe est que le Raspberry Pi n’aura pas d’accès à Internet et que la date ne sera pas correcte. Vous pouvez copier la date de l’hôte en exécutant
ssh pi@hostname.local sudo date -s$(date -Ins)
avant la connexion.
Configurer une adresse IP statique sur une connexion Ethernet :
Editez le fichier /etc/dhcpcd.conf
sudo nano /etc/dhcpcd.conf
Tapez les lignes suivantes au début du fichier :
interface eth0 static ip_address=192.168.1.XX/24 static routers=192.168.1.1 static domain_name_servers=192.168.1.1
Remplacez XX par l’adresse que vous souhaitez attribuer à votre machine. Le Masque de sous-réseau (subnet mask) est ici indiqué sous la forme /24. Cela signifie que les 24 premiers bits du masque sont à 1. C’est à dire que le masque vaut 255.255.255.0
(si ça ne vous dit rien faites un peu de binaire, ça s’éclaircira )
Maintenant redémarrez votre Raspberry Pi :
sudo reboot
Ceci est valable pour les mises à jour récentes de Jessie. Le fichier /etc/network/interfaces devrait être laissé de côté. Ouvrez votre navigateur et saisissez l’adresse de votre box/routeur (192.168.1.1 pour la plupart des box). Vérifiez les données de votre réseau pour vous assurer que le Raspberry Pi est bien reconnu avec une adresse «statique».
Les tests sur Jessie Lite et un Raspberry Pi 2
Bon, maintenant qu’on a vu la théorie, on passe à la pratique?
J’ai préparé une Jessie Lite toute propre que j’ai installée sur une carte micro SD 16 Go Samsung EVO. Je n’ai même pas fait un expand file system pour occuper toute la place disponible sur la carte.
C’est vrai que vu le faible espace occupé par Jessie (1Go) on pourrait penser qu’il est possible de réutiliser des anciennes cartes microSD genre 2Go ou 4Go. Ouaille note ? Binnnn… N’oublions pas que le système utilise la carte SD comme disque dur. Vous en avez vous, des carte micro SD 2Go en classe 10 ? Moi non. Vous risquez en utilisant des cartes antiques de ralentir votre RasPi dernière génération.
Alors je me rabats sur des cartes 16Go EVO que je trouve autour de 9€ voire moins au supermarché du coin.
Des 2Go ? Ils z’en ont plus, mon pôv monsieur… ça s’fait plus… qu’est ce que vous voulez stocker là d’sus avec la résolution actuelle des smartphones, la vidéo HD et tout et tout…
« Bin… moi c’est pour utiliser comme disque dur sur mon ordinateur. »
Et là vous voyez la tête du vendeur méfiant qui se demande dans quelle brocante vous avez bien pu trouver un ordinateur qui utilise comme HDD une SD card de 2Go… Ou alors si vous n’êtes pas en train de vous foutre de sa gu…le
Eh non, mon Raspberry avec une ch’tite carte de 2Go il fonctionne ! Et sans devoir payer la redevance obligatoire (la comment? ah oui la licence) liée au système d’exploitation qui équipe vos machines. En général c’est à ce moment là qu’il appelle la sécurité et qu’on vous prie -fermement- de ne plus importuner le gentil vendeur du rayon informatique
Bon, allez, je diverge ! Revenons à nos moutons…
Installation et démarrage de Jessie Lite
Commencez par télécharger l’image de Jessie Lite (ou pas) sur la page Download du site de la Fondation.
Décompressez l’archive dans un dossier, puis transférez l’image obtenue (ici 2015-11-21-raspbian-jessie-lite.img) sur la carte SD. Je ne vous détaille pas cette opération maintes fois décrite par ailleurs.
Un df -h montre l’utilisation de la carte SD avec Jessie Lite (1,3 Mo), pas d’expansion de Root File System.
pi@raspberrypi:~ $ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 1.3G 945M 248M 80% / devtmpfs 459M 0 459M 0% /dev tmpfs 463M 0 463M 0% /dev/shm tmpfs 463M 6.3M 457M 2% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 463M 0 463M 0% /sys/fs/cgroup /dev/mmcblk0p1 60M 20M 41M 34% /boot
Sur ma maquette j’ai connecté un ensemble clavier/souris sans fil (Logitech Unifying) ainsi qu’une clé USB WiFi équipée d’une antenne (TP LINK TL-WN722N). Il y a aussi une liaison Ethernet filaire qui me permet de prendre la main à distance avec putty et d’inclure les copies de l’écran en mode texte dans cet article. On ajoute un câble HDMI équipé d’un adaptateur DVI qui envoie l’image en local sur un antique écran Dell.
Allez, on met le feu branche la prise micro USB d’alimentation sur le Raspberry Pi.
Démarrage du RasPi, login de l’utilisateur par défaut (pi / raspberry) et on peut commencer. (je ne laisse que les lignes utiles pour ne pas surcharger…)
pi@raspberrypi:~ $ ifconfig eth0 Link encap:Ethernet HWaddr b8:27:eb:b3:12:08 inet addr:192.168.1.107 Bcast:192.168.1.255 Mask:255.255.255.0 ... RX bytes:19962 (19.4 KiB) TX bytes:17504 (17.0 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 ... RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) wlan0 Link encap:Ethernet HWaddr e8:94:f6:1b:f6:3c inet6 addr: fe80::111c:2b8a:5001:608/64 Scope:Link UP BROADCAST MULTICAST MTU:1500 Metric:1 ... RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Premier ifconfig : eth0 a récupéré une adresse via le DHCP. Par contre wlan0 même si la clé WiFi est bien détectée (e8:94:f6 est le code constructeur de TP-LINK) n’a pas récupéré d’adresse IP.
L’affichage des périphériques USB confirme la bonne détection de la clé WiFi :
La clé wifi est détectée dès la mise en route
pi@raspberrypi:~ $ lsusb Bus 001 Device 005: ID 046d:c52b Logitech, Inc. Unifying Receiver Bus 001 Device 004: ID 0cf3:9271 Atheros Communications, Inc. AR9271 802.11n Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
C’est ce qu’indique la ligne
Bus 001 Device 004: ID 0cf3:9271 Atheros Communications, Inc. AR9271 802.11n
Connecter la clé WiFi au point d’accès
Si vous regardez le contenu du fichier /etc/wpa_supplicant/wpa_supplicant.conf, vous verrez qu’il contient :
pi@raspberrypi:/etc/wpa_supplicant $ sudo cat wpa_supplicant.conf ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1
Modifiez le en ajoutant ces lignes à la fin du fichier :
network={ ssid="Votre_SSID" psk="Votre_Mot_De_Passe" }
Après un reboot (avec le reboot toutes les clés seront correctement configurées ce qui n’est pas forcément le cas avec un redémarrage du service réseau) votre clé devrait se connecter à votre point d’accès. Vérifiez d’abord que wlan0 a récupéré une adresse :
pi@raspberrypi:~ $ ifconfig eth0 Link encap:Ethernet HWaddr b8:27:eb:b3:12:08 addr:192.168.1.107 Bcast:192.168.1.255 Mask:255.255.255.0 ... wlan0 Link encap:Ethernet HWaddr e8:94:f6:1b:f6:3c inet addr:192.168.1.108 Bcast:192.168.1.255 Mask:255.255.255.0
La clé WiFi a récupéré l’adresse 192.168.1.108.
Pour les tests j’ai ensuite débranché le câble Ethernet. Après être sorti de putty, je me suis reconnecté sans problème au Raspberry Pi sur l’adresse de la clé WiFi.
Attribuer une adresse statique à la clé WiFi
Reste à donner une adresse statique à notre framboise pour avoir un aperçu des possibilités.
Attention, si vous êtes connecté(e) uniquement en WiFi, l’opération que vous allez faire s’appelle « couper la branche sur laquelle on est assis(e) »…
Si vous attribuez une adresse fixe à wlan0 ne soyez pas surpris de ne pas pouvoir vous reconnecter avec l’adresse précédente (obtenue via DHCP). Rebranchez le câble Ethernet en plus du WiFi si vous avez fait le test précédent, vous aurez au moins cette voie d’accès :).
Dans mon cas, le DHCP distribue des adresses à partir de 100. Les quelques premiers octets sont occupés (j’ai un tableau avec les adresses fixes distribuées ça évite de faire des conn bêtises).
J’ai choisi 42 comme adresse Ethernet filaire et 43 comme adresse WiFi, pour les tests.
Mon Raspberry Pi devra prendre l’adresse 192.168.1.42 sur eth0 une fois qu’il aura redémarré.
Retournons dans notre fichier /etc/dhcpcd.conf
sudo nano /etc/dhcpcd.conf
Tapez les lignes suivantes au début du fichier :
interface eth0 static ip_address=192.168.1.42/24 static routers=192.168.1.254 static domain_name_servers=192.168.1.254
Vérification :
pi@raspberrypi:~ $ ifconfig eth0 Link encap:Ethernet HWaddr b8:27:eb:b3:12:08 inet addr:192.168.1.42 Bcast:192.168.1.255 Mask:255.255.255.0 wlan0 Link encap:Ethernet HWaddr e8:94:f6:1b:f6:3c inet addr:192.168.1.108 Bcast:192.168.1.255 Mask:255.255.255.0
On modifie maintenant le fichier /etc/dhcpcd.conf pour mettre une adresse statique à wlan0 :
sudo nano /etc/dhcpcd.conf
Tapez les lignes suivantes au début du fichier :
interface wlan0 static ip_address=192.168.1.43/24 static routers=192.168.1.254 static domain_name_servers=192.168.1.254
et cette fois on obtient :
Vous voyez ici une copie d’écran avec 2 putty connectés au RasPi, un en Ethernet filaire et l’autre en WiFi.
La solution proposée par Jacques
Modèle Raspberry Pi 2 Type B
Version Jessie : 2015-11-21-raspbian-jessie.img
Kernel Version : 4.1
Wifi dongle : Belkin components F7D1102 N150/surf Micro Wireless adapter v1000 [Realteck RTL8188CUS]
J’ai testé sur Raspberry pi 2./ Raspbian Jessie
La connexion WiFi avec la nouvelle interface graphique ne fonctionnait pas complétement, Impossible de se connecter….
Solution proposée :
– Mises à jour
sudo apt-get update
– Installer l’ancien gestionnaire graphique WiFi wpagui
sudo apt-get install wpagui
– Editer le fichier d’interfaces et compléter ainsi la partie Wlan0 :
sudo nano /etc/network/interfaces
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
– Vèrifier le contenu du fichier wpa_supplicant.conf
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
– Donner les permissions suivantes :
sudo chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf sudo adduser pi netdev
– Mettre un raccourci du gestionnaire graphique sur Le bureau
cp /usr/share/applications/wpa_gui.desktop ~/Desktop
– Lancer Le gestionnaire graphique wpagui
- Lancer un scan…
- Selectionner le reseau …double cliquer dessus
- Selectionner “Static WEP (Shared Key Authentication) »
- Key0 : saisir le code et faire Add pour terminer.
Vérifier que l’icône réseau sur laquelle figuraient deux écrans s’est transformée en symbole WiFi
Merci à Jacques pour cette procédure qui est un modèle du genre… Je m’explique : On y trouve le modèle de Raspberry Pi utilisé, la version de Jessie, celle du noyau et le type de clé WiFi. Un bon exemple de procédure bien documentée !
Conclusion
Pas la peine de râler ! « Pfff ça n’arrête pas de changer !« . Si, par la suite, vous voulez que l’informatique devienne votre métier –de toute façon quel que soit votre métier, vous utiliserez certainement l’informatique– faites vous tout de suite à cette idée :
« Ce que je sais aujourd’hui ne sera plus valable dans 1 an » (des fois moins ).
C’est aussi ce qui fait (à mes yeux) l’intérêt de cette « discipline »… On apprend tous les jours, on se remet en question continuellement. On se rend compte que plus on en sait, plus il reste à apprendre ! Allez je ne vais pas philosopher. Je l’ai déjà dit, et je le maintiens le métier du technicien consiste à utiliser au mieux le matériel/logiciel qui lui est fourni, pas à le critiquer ou à trouver tous les prétextes pour le dénigrer. Si vous pensez que les solutions choisies ne sont pas les bonnes, sortez votre fer à souder et faites nous une carte meilleure que tout ce qui existe, ou alors créez un projet open-source pour développer (enfin) le logiciel parfait !
Cet article permettra à ceux qui éprouvent des difficultés avec le réseau de Jessie de pouvoir démarrer. Il est loin d’avoir épuisé toutes les possibilités offertes par les différents fichiers de configuration.
Si cet article vous a aidé ou si vous trouvez que certaines parties ne sont pas claires et demandent à être modifiées…. Pas d’hésitation, un commentaire sera le bienvenu !
Sources
- http://raspberrypi.stackexchange.com/questions/37920/how-do-i-set-up-networking-wifi-static-ip
- https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md
- https://wiki.archlinux.org/index.php/Dhcpcd#10-wpa_supplicant