Procédure pour la configuration sans-fil du Raspberry Pi

Introduction

Ce document va vous guider étape par étape pour la configuration d’un Raspberry PI comme point d’accès. Cette configuration réseau va supporter le système de commande et contrôle d’un véhicule robotique mobile. Ce processus d’installation a été testé sur le Raspberry Pi Zéro, Pi 3 A+. La version stretch de Raspbian a été utilisée.

Référence

Robot, Raspberry Pi et le sans-fil

Documentation officielle

Setting up a Raspberry Pi as a Wireless Access Point
Setting up a Raspberry Pi headless

Configuration client

Les configurations du client sans-fil sont inscrites dans ce fichier;

/etc/wpa_supplicant/wpa_supplicant.conf

Vous devez spécifier les informations suivantes;

Le champ ssid est l’identifiant du point d’accès.
Le champ psk est le mot de passe.

country=CA
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid='moinpointdacces'
psk='monmotdepasse'
key_mgmt=WPA-PSK
}

L’accès au réseau sans-fil est maintenant configuré. Le Raspberry Pi va se connecter au point d’accès lors du démarrage si celui-ci est accessible. Les opérations de mise à jour et les activités nécessitant un accès internet utiliseront cette interface.

Ajout d’une interface réseau

Le choix d’une interface réseau pour assurer la connectivité du point d’accès n’est pas simple. Il ne suffit pas d’être compatible avec Raspbian pour fonctionner correctement. Ce ne sont pas toutes les interfaces sans-fil qui supportent l’opération d’un point d’accès virtuel (SoftAP). Pour savoir si ce mode est disponible, entrez la commande suivante dans la console votre Raspberry Pi avec votre carte réseau insérée dans un port USB.

iw list
(...)
    Supported interface modes:
         * IBSS
         * managed
         * AP
         * P2P-client
         * P2P-GO
         * P2P-device
(...)

La mention AP doit être présente dans le résultat de la requête pour confirmer la compatibilité avec le mode Point d’accès.

J’utiliserai l’interface TPLink TL-WN823N pour cette démonstration. L’interface sans-fil native du Raspberry Pi peut fonctionner en mode point d’accès mais l’absence d’antenne extérieure et sa faible puissance limite son utilité pour le contrôle d’un véhicule robotique.

Vérification des interfaces disponibles

Il est important de s’assurer que le pilote de la carte réseau est installé. La commande ip link fera l’énumération de toutes les interfaces visibles par le noyau Linux du Raspberry Pi.

pi@raspberrypi:~ $ ip link
(...)
4: wlan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc ...
link/ether 50:3e:aa:01:24:93 brd ff:ff:ff:ff:ff:ff

L’interface wlan1 est reconnue par le système d’opération et pourra être utilisée pour supporter le fonctionnement du point d’accès hybride.

Configuration du point d’accès

1 – Mise à jour du système d’opération Raspbian.

sudo apt-get update && sudo apt-get upgrade

2 – Installation des logiciels dnsmask et hostapd.

Dnsmask est un logiciel qui offre les services d’infrastructure DHCP et DNS pour un réseau local. Hostapd est un serveur de point d’accès 802.11 et est responsable de l’établissement et du maintien de la connexion radio avec le client.

sudo apt-get -y install dnsmasq hostapd

Redémarrer le Raspberry Pi pour assurer l’application des nouvelles configurations.

sudo reboot

3 – Définir une adresse IP statique pour l’interface assignée au point d’accès.

Ouvrir le fichier /etc/dhcpcd.conf dans un éditeur de texte.

sudo nano /etc/dhcpcd.conf

Ajouter les informations suivantes dans le fichier.

interface wlan1
static ip_address=192.168.99.1/24
nohook wpa_supplicant

4 – Configurer le service d’adresse DHCP.

Sauvegarder le fichier original s’il existe.

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

Créer un nouveau fichier pour la configuration qui sera active.

sudo nano /etc/dnsmasq.conf

Ajouter les informations concernant les paramètes d’attribution des addresses DHCP.

interface=wlan1
dhcp-range=192.168.99.50,192.168.99.100,255.255.255.0,24h

5 – Configurer les paramètres de connexion du point d’accès en ouvrant le document /etc/hostapd

/hostapd.conf dans un éditeur de texte.

sudo nano /etc/hostapd/hostapd.conf

Ajouter les informations suivantes dans le fichier.

interface=wlan1
driver=nl80211
ssid=rover
hw_mode=g
channel=6
wmm_enabled=0
macaddr_acl=0
auth_algs=1 
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=motdepasse
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Configurer hostapd pour le démarrage.

sudo nano /etc/default/hostapd

Ajouter les informations suivantes à la fin du fichier

DAEMON_CONF="/etc/hostapd/hostapd.conf"

6 – Autoriser les services dnsmask et hostapd.

sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl start hostapd
sudo systemctl start dnsmasq

Redémarrer pour appliquer la nouvelle configuration.

Vérification de la configuration

Connectez-vous au point d’accès virtuel du Raspberry Pi à partir de votre station de contrôle. Si cela réussi, votre système est prêt à recevoir un contrôleur de moteur. Les commandes suivantes vous permettront de vérifier les principaux paramètres qui sont appliqués.

pi@raspberrypi:~ $ iw wlan1 info
Interface wlan1
        ifindex 4
        wdev 0x100000001
        addr b8:27:eb:82:d4:2a
    [1] ssid rover
    [2] type AP
        wiphy 1
    [3] channel 6 (2437 MHz), width: 20 MHz, center1: 2437 MHz
        txpower 31.00 dBm

pi@raspberrypi:~ $ ip addr show
(...)
4: wlan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 50:3e:aa:01:24:93 brd ff:ff:ff:ff:ff:ff
[4] inet 192.168.99.1/24 brd 192.168.99.255 scope global wlan1

Par ces 2 commandes, les 4 points de configurations suivant sont vérifiés

[1] Nom du point d’accès.
[2] mode de fonctionnement.
[3] Canal/fréquence radio.
[4] Adresse IP de l’interface.

Conclusion

Le lecteur intéressé constatera ici que les fonctions NAT ne sont pas appliquées. Le point d’accès n’est pas configuré pour jouer le rôle de passerelle. La station de contrôle qui se connecte au Raspberry Pi ne pourra accéder à internet par son entremise. Le Raspberry Pi peut toutefois accéder à internet par son interface client et son point d’accès désigné. Si celui-ci est hors de portée, internet n’est pas accessible. Le lien entre le robot et la station de contrôle est actif en tout temps.