Artisan Numérique

/vintage/zaurus/ Installation d'un carte Wifi sous pdaXrom

Le petit bidule est une Symbol LA-4100 (pour être sur de ce genre de chose, il faut utiliser la command cardctl ident) alias Spectrum24 basé sur un chipset Prism2.5 qui a une bonne réputation pour sa faible consomation et balance avec une bonne puissance de signal. Et pour ne rien gâcher elle ne bloque ni casque, ni stylet et est normalement reconnue sans problèmes par les drivers orinoco inclus dans pdaXrom. Tout cela pour 30$ port compris, moi je dis, vive eBay...

La quête du FirmWare

Pour ceux qui comme moi ne le savait pas, un firmware est un petit logiciel qui est stocké dans le périphérique. On en trouve dans les lecteurs de DVD, dans les scanners, même dans les microprocesseurs et certaines machines à café haut de gamme...

Généralement un firmware c'est dans la boite et l'on y pense pas, au pire on le met à jour de temps à autres mais ça s'arrête là. Mais dans certains cas (certaines cartes Wifi, modem ADSL, par exemple), le firmware doit être chargé par le driver à l'allumage du périphérique. C'est bien sur le cas de la Symbol, fallait pas que ce soit trop simple non plus...

Et j'ai donc passé un sacré bout de temps à chercher ce maudit firmware sur le net... avant de comprendre qu'il n'existait tout simplement pas... directement. En effet, Symbol a eu la brillant idée de le coller directement DANS le driver Windows.

Heureusement, l'équipe d'orinoco a trouvé une parade et met à disposition deux utilitaires, l'un pour télécharger le driver Windows, l'autre pour extraire de ce driver le précieux firmware... Pour gagner du temps nous allons prendre ces fichiers directement sur le serveur CVS d'orinoco :

su
mkdir symbol_fw
cd symbol_fw
wget http://cvs.savannah.nongnu.org/viewcvs/*checkout*/orinoco/orinoco/firmware/get_symbol_fw
chmod +x get_symbol_fw
wget http://cvs.savannah.nongnu.org/viewcvs/*checkout*/orinoco/orinoco/firmware/parse_symbol_fw
chmod +x parse_symbol_fw
./get_symbol_fw

Une fois ceci fait, vous avez au moins 2 fichiers : symbol_sp24t_prim_fw et symbol_sp24t_sec_fw. C'est le fameux firmware...

Réparation d'hotplug

Le driver orinoco pour la spectrum utilise hotplug pour trouver et charger le firmware du disque vers la carte. Hotplug pour cela a besoin d'un agent nommé firmware.agent et ce dernier n'est pas dans le dossier /etc/hotplug. Pour cela, vous devez télécharger les sources de hotplug ici, décompresser l'archives et récupérer le fichier qui se trouve en /etc/hotplug/firmware.agent.

Préparation du Zaurus

Procédure testée avec pdaXrom béta 4. Pour cette version, remplacer wlan0 par eth0

Maintenant nous avons les deux fichiers du firmware et l'agent hotplug manquant. Vous allez les mettre sur une carte SD ou CF et l'insérer dans le Zaurus.

Tout d'abord, il faut ajouter la LA-4137 au cartes spectrum reconnus. Pour cela, éditer /etc/pcmcia/spectrum.conf en dé-commentant les lignes suivantes (pourquoi n'est-ce pas fait par défaut ?) :

card "LA4137 Spectrum24 CF WLAN CARD"
manfid 0x014d, 0x0001
bind "spectrum_cs"

Nous allons copier les fichiers du firmware dans le dossier qu'hotplug dédie à cet usage :

mkdir -p usr/lib/hotplug/firmware
cp /mnt/card/symbol_sp24t_* usr/lib/hotplug/firmware

Ensuite il faut recopier l'agent hotplug dans le dossier /etc/hotplug

cp /mnt/card/firmware.agent /etc/hotplug

Et c'est tout. Maintenant insérons notre Symbol dans le lecteur de Compact Flash, attendons que la led vert clignote et regardons ce que nous raconte dmesg

dmesg

pxa_pcmcia_init(0) orinoco 0.15rc2HEAD (David Gibson, Pavel Roskin , et al) spectrum_cs 0.15rc2HEAD (Pavel Roskin, David Gibson, et al) remove_proc_entry: pcmcia:spectrum_cs/loading busy, count=1 remove_proc_entry: firmware/pcmcia:spectrum_cs busy, count=1 de_put: deferred delete of loading de_put: deferred delete of pcmcia:spectrum_cs wlan0: Hardware identity 8000:0001:0000:0000 wlan0: Station identity 0021:0002:0002:0001 wlan0: Firmware determined as Symbol F3.91-71 wlan0: Ad-hoc demo mode supported wlan0: IEEE standard IBSS ad-hoc mode supported wlan0: WEP supported, 104-bit key wlan0: MAC address 00:A0:F8:A0:9A:E8 wlan0: Station name "Prism I" wlan0: ready wlan0: index 0x01: Vcc 3.3, irq 135, io 0xf6000000-0xf6000047 hermes @ IO 0xf6000000: Truncating LTV record from 8 to 6 bytes. (rid=0xfd43, len=0x0005) : New link status: Connected (0001) hermes @ IO 0xf6000000: Truncating LTV record from 8 to 6 bytes. (rid=0xfd43, len=0x0005) wlan0: New link status: Disconnected (0002) wlan0: New link status: Connected (0001) hermes @ IO 0xf6000000: Truncating LTV record from 8 to 6 bytes. (rid=0xfd43, len=0x0005) Parfait (euh, du moins je pense ;-). Un petit tour sur ifconfig

ifconfig

wlan0 Link encap:Ethernet HWaddr 00:A0:F8:A0:9A:E8 inet addr:192.168.1.103 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1 RX packets:20 errors:0 dropped:0 overruns:0 frame:0 TX packets:4 errors:1 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:2004 (1.9 Kb) TX bytes:2046 (1.9 Kb) Interrupt:135 Magique, ça fonctionne et là je dis vive le voisin qui ne sait pas protéger son routeur WIFI car la carte c'est directement accrochée dessus :) Essayons d'avoir un peu plus d'informations sur les réseaux disponibles :

iwlist wlan scanning

Et effectivement j'ai un voisin sympa : Cell 03 - Address: 00:0F:66:D3:49:A9 ESSID:"monVoisinSympa" Mode:Master Frequency:2.437GHz Quality:8/92 Signal level:115/153 Noise level:107/153 Encryption key:off Bit Rate:1Mb/s Bit Rate:2Mb/s Bit Rate:5.5Mb/s Bit Rate:11Mb/s Bit Rate:18Mb/s

Bon, ça marche, je surf sans problèmes mais il ne faut pas abuser de l'hospitalité ;-) Donc je n'ai plus qu'à configurer mon propre réseau avec le panneau de configuration lan & Wifi de pdaXrom.

Paramétrage du réseau

Là, une petite déception, impossible de faire fonctionner le WAP. Seul le WEP semble marcher et ce n'est pas très rassurant. Il n'est pas concevable de laisser mon réseau local ouvert aux quatre vents avec ce type de protection qui peut être "cassée" en à peine 1/2 heure. Mais pour tester, j'ai tout de même re paramétré le routeur Wifi. Il faut au moins que je vois si cela marche.

Pour ce faire, il faut aller dans le système tools et lancer l'utilitaire Lan & Wifi. Les paramètres sont assez claires. Vous devez (c'est mieux ;-) créer un profile pour votre connection dans le premier onglet (create new et lui donner un nom), sélectionner le mode wireless.

Sur le second onglet (TCP/IP & DNS) il n'y a normalement rien à modifier. Tout est en mode automatique sauf si vous désirez passez en IP fixe.

Sur le troisième onglet (wireless) nous avons un peu de travail à faire :

  • Décocher "any" ESSID pour pouvoir saisir votre identifiant Wifi (le même qe sur votre routeur)
  • Assurez vous que vous êtes bien en mode "managed" et sur le channel 0 (détection automatique du Canal)
  • Dans l'onglet WEP security (laissez moi rire :/ placez crypting en mode hex, et Auth en mode restricted enfin, il faut saisir les 26 chiffres de votre clef (key). Une fois ceci fait, retournez sur le premier onglet pour cliquer sur Save afin de sauvegarder notre profile.

Après un petit moment de clignotage de la led, vous pouvez vérifier que tout fonctionne par un

ifconfig wlan0

wlan0 Link encap:Ethernet HWaddr 00:A0:F8:A0:9A:E8 inet addr:192.168.0.25 Bcast:192.168.0.0 Mask:255.255.255.0 UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1 RX packets:7 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:1 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:1093 (1.0 Kb) TX bytes:3564 (3.4 Kb) Interrupt:135

Voilà qui est fait... Bon, c'est juste pour l'exemple car je n'ai aucune envie de laisser mon réseau dans cette état de faiblesse avancée. Il me faut une autre solution en attendant qu'un jour, peut-être, j'arrive à activer le WPA.

Un réseau Ad-Hoc

Un réseau ad-hoc fonctionne peu ou prou comme un réseau PPP ou un Workgroup à la windows. On place toutes les cartes wifi sur un ESSID commun, un canal commun et sur un réseau IP commun (192.168.131.x dans cet example). Une fois ceci fait, les machines communique sans problème. Ensuite, c'est le même principe que la connection via USB, il faut faire un routage via iptables pour avoir accès à Internet.

L'Ad-Hoc se configure très bien par la boite "Lan & Wifi" de pdaXrom comme pour l'exemple plus haut. Cependant, pour changer un peu, je vais ici faire la configuration à la main histoire de mieux comprendre la mécanique interne.

Tout d'abord sur le Zaurus, on passe en mode Ad-Hoc sur la carte :

iwconfig wlan0 mode Ad-Hoc

On change ensuite notre ESSID et notre nickname (optionnel) pour donner un nom à notre réseau :

iwconfig wlan0 essid monMiniWlan
iwconfig wlan0 nick zaurus

On change le channel pour en prendre un de libre (ici le channel 1)

iwconfig wlan0 channel 1

On active le WEP sur la connection

iwconfig wlan0 key restricted 2C0904B228E9D3904BF65F1EE5

Enfin on assigne une IP à l'interface wlan0

ifconfig wlan0 192.168.131.2

On vérifie que tout c'est bien passé :

iwconfig wlan0

wlan0 IEEE 802.11b ESSID:"monMiniWlan" Nickname:"zaurus" Mode:Ad-Hoc Frequency:2.412GHz Cell: 02:A0:F8:A1:2F:76 Bit Rate:11Mb/s Retry limit:16 RTS thr:off Fragment thr=0 B Encryption key:2C09-04B2-28E9-D390-4BF6-5F1E-E5 Security mode:restricted Power Management period:100ms mode:All packets received Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Parfait, maintenant même chose sur le PC:

iwconfig ra0 mode Ad-Hoc
iwconfig ra0 essid monMiniWlan
iwconfig ra0 nick pc
iwconfig ra0 channel 1
iwconfig ra0 key restricted 2C0904B228E9D3904BF65F1EE5
ifconfig ra0 192.168.131.1

Attendre un peu que tout cela négocie et il ne reste plus qu'à vérifier que cela fonctionne du Zaurus :

ping 192.168.131.1

PING 192.168.131.1 (192.168.131.1): 56 octets data 64 octets from 192.168.131.1: icmp_seq=0 ttl=64 time=2.6 ms 64 octets from 192.168.131.1: icmp_seq=1 ttl=64 time=4.6 ms (...) Et voilà :)