Un serveur Nabaztag autonome avec le Raspberry Pi

J’en ai parlé récemment, j’ai un serveur dédié pour mon Nabaztag, fabriqué à partir d’un Raspberry Pi. Le problème, c’est que le lapin original ne se connecte que sur un réseau WEP, et c’est un peu dommage en 2013 de se limiter à cette technologie, qui n’est pas vraiment sécurisée. J’ai donc décidé de régler le problème.

L’idée est simple : installer le serveur sur le Raspberry Pi et émettre le réseau Wi-Fi depuis le Raspberry Pi. Ce n’est pas très compliqué : les contrôleurs Wi-Fi USB sont bien supportés sous Linux et pour cet usage précis — du 802.11b pour un appareil qui communique peu —, les limites de débits ne sont pas gênantes.

J’ai utilisé ce tutorial avec quelques modifications. La principale, c’est que la connexion à Internet n’est pas accessible à travers le réseau Wi-Fi (si vous utilisez un Raspberry Pi modèle B). Il y a plusieurs raisons : la première, c’est que j’ai utilisé un modèle A pour mes tests, donc avec uniquement du Wi-Fi. La seconde, c’est que le but est de faire un serveur autonome, donc c’est un peu inutile. Enfin, l’idée de départ était de se passer d’un réseau WEP, donc créer un réseau WEP avec un accès à Internet est contre-productif.

Concrètement, le réseau ne donnera donc accès qu’au Raspberry Pi et au lapin (pour le configurer).

Première chose, il faut un contrôleur Wi-Fi USB avec la bonne puce. Il faut une puce RaLink RT5370, un modèle compatible avec les fonctions point d’accès. Ce n’est pas la puce la plus courante, mais ça se trouve assez facilement : j’ai utiliser une TENDA W311MI achetée sur Amazon pour environ 15 €. On peut sûrement trouver un peu moins cher, mais ce modèle fonctionne.

SONY DSC

Maintenant, il faut se connecter sur le Raspberry Pi en SSH.

sudo apt-get install hostapd udhcpd

On modifie la configuration du programme.

sudo nano /etc/udhcpd.conf

Il faut entrer les valeurs suivantes. 192.168.42.1 est l’adresse du Pi, le reste est pour régler un DHCP.

start 192.168.42.3
end 192.168.42.10
interface wlan0
opt dns 192.168.42.1
opt router 192.168.42.1

On sauve, on quitte.

sudo nano /etc/default/udhcpd

Commenter la ligne DHCPD_ENABLED="no" en mettant un # devant.

Maintenant, on configure le Pi.

sudo nano /etc/network/interfaces

Il faut entrer les valeurs suivantes. Si une ligne commençant par iface wlan0 existe (a priori le cas), il faut remplacer.

iface wlan0 inet static
address 192.168.42.1
netmask 255.255.255.0
network 192.168.42.0
broadcast 192.168.42.255
gateway 192.168.42.2
dns-nameservers 192.168.42.1

Il faut ensuite commenter les trois lignes suivantes en plaçant un # devant.

allow-hotplug wlan0
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

On sauve, on quitte.

sudo nano /etc/hostapd/hostapd.conf

Vu que le réseau ne sera pas connecté à Internet, on va simplement créer un réseau ouvert, c’est plus simple. Son SSID est Nabaztag, il est en 802.11b, sans protection. On peut éventuellement changer le canal dans les environnements chargés.

interface=wlan0
ssid=Nabaztag
hw_mode=b
channel=6
auth_algs=1
wmm_enabled=0

On sauve, on quitte.
On applique la configuration.

sudo nano /etc/default/hostapd

Il faut changer #DAEMON_CONF="" en DAEMON_CONF="/etc/hostapd/hostapd.conf"

Maintenant, on doit juste lancer les services au démarrage, avec les lignes suivantes.

sudo service hostapd start
sudo service udhcpd start

sudo update-rc.d hostapd enable
sudo update-rc.d udhcpd enable

Enfin, il suffit de redémarrer le Raspberry Pi.

Maintenant, il suffit de connecter le lapin au réseau Nabaztag, de mettre la bonne IP dans sa config (expliqué dans le tuto précédent) et ça devrait fonctionner.

Attention à un point : je vous conseille d’acheter un contrôleur RTC pour le Raspberry Pi ou d’utiliser un modèle B connecté à Internet pour régler l’heure automatiquement. En effet, le Raspberry Pi n’a pas d’horloge et donc rester en serveur autonome risque de poser des soucis.

Enfin, le tutorial devrait aussi fonctionner pour les lapins Nabaztag/tag, mais je n’ai pas essayé : ils sont capables de se connecter sur un réseau protégé en WPA, donc je n’ai pas l’utilité du serveur autonome.