Accueil > hack, Linux > Un NSLU2 à moustache

Un NSLU2 à moustache

NSLU2 équipé de son dongle Wifi

J’utilisais jadis un nslu2 reflashé avec une Debian pour mon Nas.
Depuis, l’adoption d’un Ts212 avait laissé ce matériel disponible pour autre chose.
Parallèlement, j’ai une vieille imprimante HP5850 initialement réseau (et wifi) mais qui depuis d’hasardeuses modifications de firmware pour lui faire adopter le cryptage WPA refusait tout simplement toutes connectique réseau; seul l’usb me permettait encore de l’utiliser sur mon poste principal.
L’idée était donc d’utiliser le NSLU2 adjoint d’un adaptateur wifi usb comme serveur d’impression.
Tout n’est pas si simple quand il s’agit de dongle Wifi surtout pour du matériel embarqué mais avec la magie d’ OpenWrt et du matériel correctement choisi tout est réalisable … Voyons cela en détail.
J’adorrrrre les sushis mais aussi OpenWrt. J’avais connu cette distro spécialisée en bidouillant sur des Fonera.
Pour l’application visée, il me fallait un linux embarqué résidant entièrement dans la flash (contrairement à Debian qui nécessite un support de stockage).
L’objectif premier d’OpenWrt est de fournir un routeur wireless complet pour votre Lan. Mais vu le nombre de paquets disponibles et le support sans cesse grandissant de différentes plateforme matérielle, OpenWrt peut très bien former une base complète pour vos projets embarqués.
Le NSLU2 tourne sur un proc arm XScale-IXP42x. Je récupère le daily snapshot d’ OpenWrt pour la plateforme concernée:
~$ wget http://downloads.openwrt.org/snapshots/trunk/ixp4xx/openwrt-nslu2-squashfs.bin
Pour flasher il faut l’utilitaire upslug2 avec le paquet Debian du même nom que j’installe:
#apt-get install upslug2

La procédure du flashage est bien décrite ici.
A l’issue du flash, le slug reboote, initialise ses partitions jffs2 et doit vous donner un prompt root sur le serveur telnet à l’écoute:

_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
ATTITUDE ADJUSTMENT (bleeding edge, r29561) ----------
* 1/4 oz Vodka Pour all ingredients into mixing
* 1/4 oz Gin tin with ice, strain into glass.
* 1/4 oz Amaretto
* 1/4 oz Triple sec
* 1/4 oz Peach schnapps
* 1/4 oz Sour mix
* 1 splash Cranberry juice
-----------------------------------------------------
root@OpenWrt:/#

Comme souvent dans l’embarqué une console série sera beaucoup plus confortable pour vos premiers pas dans la configuration. En effet, à l’issu du flash, l’adressage réseau s’est initialisé à l’adresse 192.168.1.1 qui est chez moi l’adresse de mon routeur/serveur dhcp donc inutilisable en l’espèce.
Pour adjoindre une console série sur le slug, suivez les instructions ici.
Rentrons maintenant dans la configuration proprement dite. Tout d’abord l’interface réseau eth0 avec quelquechose qui devra ressembler à:
root@OpenWrt:/# vim /etc/config/network
config interface loopback
option ifname lo
option proto static
option ipaddr 127.0.0.1
option netmask 255.0.0.0

config interface lan
option ifname eth0
#option type bridge
option proto dhcp
#option proto static
#option ipaddr 192.168.1.1
option netmask 255.255.255.0

On voit bien le précédent adressage en statique au 192.168.1.1 et le bridge qui sont supprimés.
On arrête les règles de filtrage ip_table pour être plus tranquille et puis pas besoin de firewall ici:
root@OpenWrt:/# /etc/init.d/firewall stop
root@OpenWrt:/# /etc/init.d/firewall disable

On relance la conf réseau: et normalement eth0 se verra doté d’une adresse réseau attribuée par votre dhcp. Vous pouvez vous connecter en telnet à cette adresse et abandonner votre console série.
Bon, rentrons dans le vif du sujet; le dongle Wifi. Inutile de céder à l’envie compulsive de foncer dans la première grande surface venue et d’acheter une clef usb Wifi. Cela se traduirait sûrement par un échec. Il faut tout d’abord trouver un matériel compatible, c’est à dire une matériel dont les drivers sont disponibles (et fonctionnels) pour OpenWrt.
Pour Openwrt, on peut soit faire un
root@OpenWrt:/# opkg update
root@OpenWrt:/# opkg list | grep kmod

soit regarder directement dans la liste des paquets les drivers disponibles.
Mon choix s’est porté sur une DLINK DWL-G122 pour le prix (19 €), la disponibilité et le support assuré me semblait-il par le module kmod-rt73-usb.
Pour le support de l’usb on installe tour à tour:
kmod-usb-core
kmod-usb-ohci
kmod-usb2
usbutils
libusb-1

En insérant la clef, un lsusb devrait vous renvoyer:
Bus 002 Device 002: ID 07d1:3c0f D-Link System AirPlus G DWL-G122 Wireless Adapter(rev.E) [Ralink RT2870]

Contrairement à ce qu’on peut lire sur le Web, le driver rt73-usb ne vous sera d’aucune utilité ici car il y a eu plusieurs révisions du matériel (ici la version 5 ou ‘E’) et le chipset Ralink n’est plus basé sur un rt73 mais sur un 2870. Comme quoi, même en se renseignant au préalable, ou peut se trouver bloqué.
Heureusement, OpenWrt est bonheur et on trouvera (dans la trunk) le driver kmod-rt2800usb qui fonctionne à merveille. On s’empresse de l’installer:
root@OpenWrt:/# opkg install kmod-rt2800-usb

. Lors de l’installation on remarquera l’installation du firmware rt2870.bin dans /lib/firmware. On reboote, et un ifconfig -a devrait vous cracher quelque chose du genre:
root@OpenWrt:/# ifconfig -a
...
wlan0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:22386 errors:0 dropped:4423 overruns:0 frame:0
TX packets:7649 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:32
RX bytes:10109036 (9.6 MiB) TX bytes:1277170 (1.2 MiB)

C’est gagné ! Intéressons nous maintenant à la configuration en mode client de cette interface.
Rappelez-vous, openWrt est à la base un acces point Wifi (ap mode) donc sa configuration part défaut va être à modifier pour utliser l’interface Wifi comme simple client.
La commande:
root@OpenWrt:/#wifi detect > /etc/config/wireless
Va tout d’abord générer un fichier /etc/config/wireless que l’on va modifier pour qu’il s’adapte à votre config Wifi.Dans la cadre de mon réseau servi par une Fonera voila à quoi ça ressemble:

config wifi-device radio0
option type mac80211
option channel auto
option macaddr XX:XX:XX:XX:XX
option hwmode 11bg

# REMOVE THIS LINE TO ENABLE WIFI:
#option disabled 1

config wifi-iface
option device 'radio0'
option network 'wifi'
option mode 'sta'
option ssid 'VOTRE_SSID'
option encryption 'psk'
option key 'VOTRE_PASS_PHRASE'

Les différents modes et options supportées sont décrits ici.
On s’intéresse maintenant à la configuration réseau de cette nouvelle interface en ajoutant ceci au fichier /etc/config/network:

config interface wifi
option ifname wlan0
option proto dhcp
option netmask 255.255.255.0

On relance la configuration réseau:
root@OpenWrt:/# /etc/init.d/network restart
et voila vous êtes reliés en Wifi, souriez et dites merci aux gros barbus d’OpenWrt.
Reste plus qu’à gérer le serveur d’impression.
Bien que Cups soit disponible en paquet, son usage est plutôt déconseillé pour notre usage. En effet, cups utilise un spooler d’impression situé soit en mémoire, soit en dur (HDD, clef usb etc…). Dans notre cas la RAM est limitée (32M) et on aurait tôt fait de la saturer. On se rabattra plutôt sur p910nd qui je cite: « p910nd is a small daemon that copies any data received on the port it is listening on to the corresponding printer port. It is primarily intended for diskless Linux hosts running as printer drivers… » et qui de plus est packagé pour OpenWrt. La configuration est bien décrite ici.
Ben voila une petite bestiole de plus ajoutée dans le village des lutins.
Regardez toutes ces petites maisons éclairés par des leds rouges et vertes qui scintillent dans une douce lumière. Mais bien sûr c’est Noël…

Catégories :hack, Linux Étiquettes : , ,
  1. Aucun commentaire pour l’instant.
  1. No trackbacks yet.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :