Wifi sur Raspberry Pi

29 mars 2014

 Introduction au WiFi

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 :

  • Les clients
  • Les points d’accès

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 :

  1. Il faut qu’il soit capable de se connecter automatiquement au bon point d’accès.
  2. Il faut toujours avoir un point d’accès avec soi pour se connecter au robot.

C’est pourquoi nous choisissons de configurer notre Raspberry Pi en point d’accès.

 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.

ldusb 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

Installation de hostapd 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.

Ligne à modifier (/etc/default/hostapd) #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.

/etc/default/hostapd # 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.

/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 :

  • L’interface (interface) doit être la carte réseau utilisée, normalement wlan0 si vous n’avez qu’une seule carte Wifi ;
  • Pour le pilote (driver), utilisez nl80211. Si vous rencontrez des problèmes, regarder le pilote qu’il vous faut sur cette page ;
  • Pour le code pays (driver), indiquez le code correspondant à votre pays. Vous pouvez utiliser la table disponible sur Wikipédia pour trouver le code de votre pays ;
  • Le (ssid) définit le nom de votre réseau Wi-Fi ;
  • (hw_mode) définit le type de Wi-Fi, généralement a, b, g ou n ;
  • Pour avoir une sécurité de type WPA2, mettre wpa à 2 ;
  • Enfin, indiquez votre clé wifi dans wpa_passphrase.

Enfin vous pouvez lancer hostapd :

Terminal /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...

 Configuration IP

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 :

  • soit en attribuant une adresse en dur dans son fichier de configuration ;
  • soit en installant un serveur DHCP qui attribuera les adresses aux machines du réseau.

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 :

  • L’adresse IP du Raspberry Pi ;
  • Son masque de sous-réseau.

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

  • y commun à toutes les machines du réseau ;
  • x de manière à ce que chaque machine ait une adresse unique.

Pour configurer votre adresse IP (192.168.10.1) sous Linux, vous pouvez utilisez la commande suivante :

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

 Configuration IP automatique

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 :

Terminal man interfaces

Nous en déduisons que nous devons rajouter le paragraphe suivant dans notre fichier /etc/network/interfaces :

/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 :

Terminal 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 :

/etc/default/ifplugd INTERFACES="eth0" HOTPLUG_INTERFACES="eth0" ARGS="-q -f -u0 -d10 -w -I" SUSPEND_ACTION="stop"

Commentaires

Il n'y a pas de commentaires

Ajouter un commentaire

Pseudo :
Mail :

Texte :

Copyright "POIVRON" 2011-2023, tous droits réservés
Administration du site