29 mars 2014
Le Wi-Fi désigne une technologie utilisée pour créer des réseaux locaux sans fil à haut débit.
Il est possible de configurer plusieurs type de réseaux et notamment des réseaux de type "infrastructure" ou de type "ad-hoc". Les réseaux de type infrastructure étant les plus répandus, c’est ce type de réseau que nous choisissons. Nous espérons ainsi rencontrer un maximum d’outils à notre disposition.
Le Wi-Fi en mode infrastructure définit deux types d’acteurs :
Ce sont les clients qui doivent se connecter aux points d’accès afin de pouvoir communiquer entre eux ou avec le point d’accès.
Notre Rasperry Pi doit à terme équiper notre robot. Configurer notre robot en tant que client posait deux problèmes :
C’est pourquoi nous choisissons de configurer notre Raspberry Pi en point d’accès.
Avant toute chose, il faut s’assurer d’avoir la carte USB Wi-Fi reconnue par Linux. Le plus simple est de la brancher et d’utiliser lsusb.
poivron@PoivronPi ~ $ lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
Ce détail réglé, nous passons à l’installation de hostapd. C’est ce logiciel qui nous permet de configurer le Raspberry Pi en point d’accès Wi-Fi
sudo apt-get install hostapd
Pour activer le lancement de hostapd au démarrage, vous devez décommenter la ligne suivante dans le fichier /etc/default/hostapd en enlevant le "#" qui se trouve en début de ligne.
#DAEMON_CONF="/etc/hostapd/hostapd.conf"
Cette ligne contient le fichier de configuration pour hostapd. Si l’humeur vous en dit, vous pouvez personnaliser son nom.
# Defaults for hostapd initscript
#
# See /usr/share/doc/hostapd/README.Debian for information about alternative
# methods of managing hostapd.
#
# Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration
# file and hostapd will be started during system boot. An example configuration
# file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz
#
DAEMON_CONF="/etc/hostapd/hostapd_coupe2014.conf"
# Additional daemon options to be appended to hostapd command:-
# -d show more debug messages (-dd for even more)
# -K include key data in debug messages
# -t include timestamps in some debug messages
#
# Note that -B (daemon mode) and -P (pidfile) options are automatically
# configured by the init.d script and must not be added to DAEMON_OPTS.
#
#DAEMON_OPTS=""
Vous allez ensuite pouvoir créer puis éditer votre fichier de configuration, dans notre cas : /etc/hostapd/hostapd_coupe2014.conf.
### Wireless network name ###
interface=wlan0
driver=nl80211
country_code=FR
ssid=LAgeDePoivron
hw_mode=g
channel=6
wpa=2
wpa_passphrase=MaCléWifiSuperLongueImpossibleADeviner
Passons en revue les paramètres :
Enfin vous pouvez lancer hostapd :
/etc/init.d/hostapd start
Si vous avez l’habitude de Linux, vous pouvez vous en douter, les commandes restart et stop marchent aussi. Idéal pour tester une nouvelle configuration !
Arrivé ici, vous devriez voir apparaitre votre réseau sur un autre appareil équipé de WiFi (téléphone, PC, tablette...). Mais ceci ne vous garantira pas de vous pourrez vous connecter à votre Rasperry Pi...
Actuellement vous pouvez rejoindre le réseau WiFi de votre Raspberry Pi, vous connecter à un autre appareil relié à ce même réseau, mais vous ne pouvez pas vous connecter au Raspberry Pi lui-même. En effet, celui-ci ne dispose pas d’adresse IP !
Il y a deux principaux moyens d’attribuer une adresse IP à une machine :
Dans notre cas, le plus simple est de fixer l’adresse IP en dur, car nous avons besoin de la connaitre pour nous connecter à notre Raspberry Pi.
Vous avez besoin de définir 2 paramètres :
Pour faire simple, si vous avez moins de 200 appareils qui se connecte en même temps, vous pouvez utiliser le masque de sous-réseau suivant : 255.255.255.0.
Vous êtes libre de choisir n’importe quelle adresse IP valide. En Europe, on les choisit généralement sous la forme 192.168.y.x, avec
Pour configurer votre adresse IP (192.168.10.1) sous Linux, vous pouvez utilisez la commande suivante :
ifconfig wlan0 192.168.10.1
Seulement la configuration sera oubliée au prochain démarrage.
Maintenant vous devriez pouvoir vous connecter à votre Raspberry Pi en ssh, à condition que votre PC ait une IP appartenant au même sous-réseau (en 192.168.10.x dans notre cas). À vous de la définir manuellement.
C’est bien joli tout ça, mais s’il faut se connecter au Raspberry Pi à chaque démarrage pour définir l’adresse IP wifi, c’est pas très pratique !
Pour fixer une adresse IP en dur, le fichier /etc/network/interfaces peut nous aider. Nous accédons à sa documentation avec la commande suivante :
man interfaces
Nous en déduisons que nous devons rajouter le paragraphe suivant dans notre fichier /etc/network/interfaces :
iface wlan0 inet static
address 192.168.10.1
netmask 255.255.255.0
Le mot clé iface annonce la configuration d’une interface, wlan0 est l’interface à configurer. inet précise qu’il s’agit de la configuration IPv4 et static définit une configuration constante dans le temps.
Nous sauvegardons, redémarrons le Raspberry Pi et découvrons notre adresse IP avec la commande :
ifconfig wlan0
Et nous constatons notre échec. Aucune adresse IP n’est attribuée à notre carte réseau ! La raison précise n’est pas très claire, mais il semblerait que le soucis provienne de ifplugd. Ifplugd est un programme qui configure les cartes réseaux lorsque qu’un câble est branché ou débranché. Sa configuration par défaut surveille toutes les interfaces réseaux. Nous la modifions pour qu’il ne surveille que eth0 et nous laisse la main sur wlan0. Voici notre fichier de configuration, en gras les paramètres modifiés par nos soins :
INTERFACES="eth0"
HOTPLUG_INTERFACES="eth0"
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"