(modifié le 9 décembre 2017 à 18:54)

Pour des questions pratiques j'ai préféré connecté mon Raspberry Pi B+ en WiFi plutôt qu'en ethernet, avec un dongle WiFi.

raspberry-pi-dhcp-wifi

Voyons comment configurer l'interface WiFi avec Raspbian en terminal, pratique si vous n'avez pas accès à l'interface graphique.

Ce billet n'a rien de particulièrement technique, il est là pour répondre à un besoin bien précis. On trouve des configurations aussi nombreuses qu'exotiques sur le web, voici ma contribution et je vous garantis qu'elle fonctionne.

Dongle compatible

Votre clé USB se doit d'être compatible avec Linux pour fonctionner sous Raspbian.

J'ai acheté un dongle Edimax EW-7811Un pour environ 10€ sur Amazon. Je l'ai choisi pour son prix et sa taille nano, il ne dépasse presque pas du Raspberry, et sa compatibilité confirmée sur tous les forums.

Il est compatible b/g/n à 150 mbps, WPA2, WPS, 802.1x.

Mis à jour 12/2017 : je déconseille ce dongle car son pilote n'est plus supporté à partir du noyau 3.9, comme le confirme un commentaire sur amazon :

Le mode ad-hoc (IBSS) fonctionnait à peu près jusqu'à l'arrivée du noyau Linux 3.9. Depuis, c'est la galère. Même les drivers realtek patchés n'y font rien. En gros, le broadcast en mode ad-hoc ne fonctionne pas correctement, et en particulier les broadcast ARP (pour résoudre l'association initiale IP-MAC). Il existe une solution à la main pour renseigner manuellement cette association avec une commande type "arp -s [IP du nœud à contacter] [Adresse MAC du nœud à contacter]" mais c'est une configuration statique et il y reste beaucoup de limitations. Bref, pour ce type d'utilisation, ce modèle est maintenant à proscrire. Préférer soit le dongle TP-Link TL-WN722N soit un dongle sur chipset Ralink RTL5370. Donc ma conclusion est très différente de ce qu'elle était il y a quelques années et j'ai fait passer mon éval de 5 à 2 étoiles. C'est pas forcément de la faute d'Edimax (après tout, rien n'a changé en termes matériels sur ce dongle) mais le driver 8192cu (ou pire rtl8192cu) pour le chipset RTL8188CUS de ce dongle Edimax est à la ramasse. Et encore, j'ai pas tout dit dessus (il y a des bugs de déconnexion qui font qu'on est parfois amené à configurer le dongle en désactivant le mode éco d'énergie, pas top). Bref. Je pense que vous avez compris, si vous souhaitez faire autre chose qu'une connexion à un point d'accès (et encore), regardez un autre dongle.

Détection

Vérifiez que le dongle est bien détecté :

$ lsusb | grep 7811
Bus 001 Device 004: ID 7392:7811 Edimax Technology Co., Ltd EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS]

On continue.

Blacklist

Il faut blacklist le pilote d'origine car celui-ci ne fonctionne pas :

Dans le fichier :

/etc/modprobe.d/blacklist-rtl8192cu.conf

Ajoutez :

blacklist rtl8192cu

Configuration DHCP simple

Notre clé est détectée comme wlan0.

Dans mon cas l'interface ethernet (eth0) et l'interface WiFi sont toutes deux en DHCP.

Voici la configuration à mettre dans /etc/network/interfaces :

auto lo

iface lo inet loopback
iface eth0 inet dhcp

auto wlan0
iface wlan0 inet dhcp
wpa-ssid "votre-ssid"
wpa-psk "votre-clé-wifi"

Le SSID est le nom de votre réseau (Livebox-xxxx, Freebox, etc), respectez impérativement la casse pour que cela fonctionne.

Si cette ligne est présente, commentez-là :

#iface default inet dhcp

Redémarrez le Raspberry Pi pour la prise en compte (ou ifdown wlan0 && ifup wlan0).

Configuration alternative

L'autre configuration fonctionne également :

auto lo

iface lo inet loopback
iface eth0 inet dhcp

auto wlan0
iface wlan0 inet dhcp
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

Puis éditer le fichier /etc/wpa_supplicant/wpa_supplicant.conf :

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
 ssid="votre-ssid"
 psk="votre-clé-wifi"
 proto=RSN
 key_mgmt=WPA-PSK
 pairwise=CCMP TKIP
 group=CCMP TKIP
}

Quelques explications sur les possibilités :

  • proto : RSN (WPA2) ou WPA (WPA1)
  • key_mgmt:  WPA-PSK (si WPA 1 ou WPA2) ou WPA-EAP (en entreprise seulement)
  • pairwise: CCMP (WPA2) ou TKIP (WPA1)
  • auth_alg: OPEN (WPA1 et WPA2), SHARED (pour WEP) ou LEAP (réseau EAP)

A noter qu'il est tout à fait possible de minimiser la configuration :

network={
 ssid="votre-ssid"
 psk="votre-clé-wifi"
}

Redémarrez le Raspberry Pi pour la bonne prise en compte (ou ifdown wlan0 && ifup wlan0).

Configuration pour Raspbian 9

Les 2 méthodes précédentes ne fonctionnent pas pour Raspbian 9 (non testé sous Raspbian 8, dites-le moi en commentaire).

Pour Raspbian 9 ne touchez pas au fichier /etc/network/interfaces. Allez modifier uniquement le fichier :

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Pour y saisir :

network={
ssid="votre-ssid"
psk="votre-clé-wifi"
}

+infos sur la doc officielle

L'astuce bonus

Dans votre routeur vous pouvez configurer une adresse IP en dhcp-statique afin que le Raspberry Pi ait toujours la même IP. Dans mon cas avec Tomato j'ai même configuré la même adresse IP statique pour les deux interfaces (eth0 et wlan0).

Allez dans Basic > Static DHCP :

rpi-tomato-mac

OK > Save.

Redémarrer le Raspberry Pi si vous avez affecté une IP statique différente de l'actuelle. J'utilise le hostname "rpi" et c'est très pratique car je peux toujours atteindre mon Raspberry avec ce nom "rpi" même si son hostname diffère (j'utilise plusieurs cartes microSD).

Ah oui j'oubliais, pour vérifier que votre clé WiFi est bien associée à votre réseau sans fil utilisez la commande iwconfig :

$ iwconfig
 wlan0 IEEE 802.11bgn ESSID:"BLOGMOTION.FR" Nickname:"<WIFI@REALTEK>"
 Mode:Managed Frequency:2.442 GHz Access Point: 00:26:F2:C1:21:F1
 Bit Rate:150 Mb/s Sensitivity:0/0
 Retry:off RTS thr:off Fragment thr:off
 Encryption key:****-****-****-****-****-****-****-**** Security mode:open
 Power Management:off
 Link Quality=100/100 Signal level=99/100 Noise level=0/100
 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
 Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Ici tout fonctionne 🙂

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter