Démon BSD

Documentation NetBSD :

Utilisation de l'IEEE 802.11 WaveLAN sous NetBSD

Le réseau sans fil avec NetBSD


Le réseau sans fil avec NetBSD


Ce document décrit comment configurer et diagnostiquer le réseau IEEE 802.11 avec NetBSD. Il n'a été testé qu'avec NetBSD/i386 et NetBSD/macppc. Tout commentaires, ajouts et corrections sont les bienvenus.

Configurer le noyau (i386) (haut)

NetBSD gère les cartes Lucent WaveLAN et ELSA AirLancer MC-11 IEEE PCMCIA depuis 1.4G. Pour les utiliser, ajoutez les lignes suivantes au fichier de configuration du noyau :
wi*	at pcmcia? function ?		# Lucent WaveLAN IEEE
Si vous avez une version «ISA» de ces cartes, notez qu'il ne s'agit que d'un contrôleur PCMCIA sur carte ISA vous n'aurez donc qu'à configurer aussi un contrôleur PCMCIA dans votre noyau.

Configurer le noyau (macppc) (haut)

NetBSD-current sait gérer l'AirPort d'Apple (appelé aussi AirMac) et les cartes WaveLAN de Lucent. Ils ne sont en revanche pas reconnus dans NetBSD 1.5.x et précédents. Cette gestion est activée par défaut dans la configuration GENERIC. Vérifiez, dans votre configuration noyau, que vous avez bien, pour les cartes AirPort :
wi*    at obio?    #AirMac
Vérifiez, dans votre configuration noyau, que vous avez bien, pour les cartes Lucent :
wi*    at pcmcia? function ?    #Lucent WaveLan IEEE (802.11)

Utiliser le réseau (haut)

Une fois que vous avez démarré avec un noyau doté du pilote wi et que ce dernier a trouvé votre carte, configurez le réseau à la main. Si vous n'avez encore rien modifié, utilisez wiconfig(8) pour connaitre l'état actuel de la configuration :
madmax# wiconfig -i wi0
NIC serial number:                      [ 98UT09331423 ]
Station name:                           [ NetBSD WaveLAN/IEEE node ]
SSID for IBSS creation:                 [ NetBSD IBSS ]
Current netname (SSID):                 [ NetBSD IBSS ]
Desired netname (SSID):                 [  ]
Current BSSID:                          [ 00:00:00:00:00:00 ]
Channel list:                           [ 2047 ]
IBSS channel:                           [ 3 ]
Current channel:                        [ 3 ]
Comms quality/signal/noise:             [ 0 27 27 ]
Promiscuous mode:                       [ Off ]
Port type (1=BSS, 3=ad-hoc):            [ 3 ]
MAC address:                            [ 00:60:1d:03:73:0f ]
TX rate:                                [ 3 ]
RTS/CTS handshake threshold:            [ 2347 ]
Create IBSS:                            [ Off ]
Access point density:                   [ 1 ]
Power Mgmt (1=on, 0=off):               [ 0 ]
Max sleep time:                         [ 100 ]
La plupart des paramètres ci-dessus peuvent être modifiés à l'aide de ifconfig(8) et wiconfig(8) mais, pour la plus grande partie des portages, vous n'en aurez que peu à changer. Les valeurs par défaut, mode had hoc, correspondent à une utilisation rapide permettant de communiquer avec un autre périphérique WaveLAN, comme un ordinateur portable, pas forcément connecté à un réseau filaire. Elles sont adaptées pour faire des tests ou bien si vos besoins se limitent à un accès sans fil dans une petite limite avec un seul périphérique mobile. La plupart des utilisateurs voudront cependant utiliser le mode BSS (Basic Service Set : services de base). Il sert aux communications avec points d'accès, c'est à dire avec passerelle entre filaire et sans fil. (Le Lucent Wavepoint II a été testé; d'autres types peuvent ou non marcher). Pour passer la carte en mode BSS, utilisez ifconfig(8) avec une option «media» et sans «mediaopt adhoc» :
# ifconfig wi0 media DS11
Rappelez-vous que vous pouvez avoir la liste des médias et leurs options avec «ifconfig -m wi0».

Considérons que ces autres valeurs par défaut fonctionnent, vous devriez voir «Current netname» prendre la valeur donnée par le point d'accès avec lequel communique votre carte. Si vous devez le changer, utilisez ifconfig(8) avec le mot clé «nwid» :

# ifconfig wi0 nwid foobar
Si rien ne change, peut-être devrez-vous ajuster le canal de communication de votre carte (la ligne «Current channel» donnée par wiconfig(8). Il y a 14 canaux possibles. Nous avons été informé que les canaux 1 à 11 sont légaux en Amérique du Nord, 1 à 13 dans une grande partie de l'Europe, 10 à 13 en France et uniquement le 14 au Japon. En cas de doute, consultez la documentation fournie avec la carte ou avec le point d'accès. Assurez-vous que le canal choisi correspond à celui du point d'accès (ou de l'autre carte en réseau ad hoc). Par défaut, ce canal est le numéro 3 sur les cartes vendues en Amérique du Nord et dans une grande partie de l'Europe, 11 en France et 14 au Japon).

Lorsque vous obtenez une bonne communication avec la base (point d'accès) ou avec l'autre périphérique ad hoc, vous pouvez configurer wi0 de la même manière que toute interface réseau. Utilisez ifconfig(8), dhclient(8) ou tout ce que vous utiliseriez autrement. L'interface doit se comporter plus ou moins comme une interface ethernet.

Servir de point d'accès (haut)

En théorie, rien ne s'oppose à ce que la carte soit configurée comme un vrai point d'accès. C'est à dire qu'elle joue le rôle de passerelle entre les différents clients (qui ne communiquent pas directement entre eux). Malheureusement les détails de cette mise en place n'ont pas été rendus publics. Il est toutefois possible d'utiliser le mode IBSS (BSS indépendant) dans lequel tout trafic s'effectue port à port (comme avec un câble ethernet partagé).

Dans ce cas, la carte doit être configurée pour accepter la création d'un ensemble de périphériques. Utilisez l'option «-c» de wiconfig(8) :

# wiconfig wi0 -c 1
Important: Pour que cela fonctionne, votre firmware doit être suffisamment récent. A partir de 6.04 semble être le minimum absolu, 6.06 a été déclaré non-fiable. 7.28 fonctionne.

Mise en place d'une Borne Station AirPort d'Apple (haut)

Apple fournit un logiciel permettant de mettre en place une Borne Station AirPort. Il fonctionne sous Mac OS 8.6 ou plus récent. Airport Base Station Configurator (présent dans la collection de paquetages de NetBSD, pour i386 et macppc, sous le nom airportbasestationconfig) est une application Java qui permet de consulter et de changer les paramètres de la borne.

Ecrire les fichiers de configuration (haut)

Si vous voulez péréniser la configuration qui utilise l'interface wi et que vous n'utilisez aucune commande de wiconfig(8) qui ne soit pas accessible à ifconfig(8), faites comme pour toute interface normale. Soit vous paramètrez «ifconfig_wi0» dans /etc/rc.conf, soit vous utilisez /etc/ifconfig.wi0, soit, enfin, vous utilisez DHCP pour l'assignation automatique de l'adresse.

Voici un exemple de configuration, issu de /etc/rc.conf, en mode BSS qui utilise ensuite DHCP pour obtenir une adresse :

ifconfig_wi0="nwid MON-ID media DS11"
dhclient=yes

Si vous devez utiliser des commandes wiconfig(8) non accessibles par ifconfig(8), la configuration est légèrement plus compliquée car elle ne peut pas se faire à l'aide de la variable «ifconfig_wi0» de /etc/rc.conf.

Avec NetBSD 1.5.1 ou plus récent, vous pouvez modifier /etc/ifconfig.wi0 et y ajouter les lignes nécessaires. Par exemple :

!/usr/sbin/wiconfig wi0 -n MON-ID
!/usr/sbin/wiconfig wi0 -p 1
!/usr/sbin/wiconfig wi0 -c 1
inet MON-IP netmask MASQUE-RÉSEAU
Cette caractéristique n'est pas gérée par les versions précédentes. A la place, vous devrez écrire les lignes requises, dans /etc/netstart, après la ligne :
ifconfig lo0 inet 127.0.0.1

Autres trucs WaveLAN (i386) (haut)

La page de manuel wiconfig(8) est une présentation très bien écrite des différents paramètrages de la carte. La plus grande partie sort du cadre de ce document. Lisez-la et jouez avec les possibilités. Vous pouvez aussi vous référer à la maigre documentation de Lucent (à condition de pouvoir faire abstraction du parti-pris pour Windows).

Voici tout de même une chose intéressante à affiner : l'économie d'énergie. Elle ne fonctionne qu'avec le mode BSS (c'est à dire en communication avec un point d'accès) et en coopération avec le point d'accès. Le firmware de la carte IEEE WaveLAN doit être en version plus récente que 2.00 et la carte Lucent Wavepoint doit être en version plus récente que 2.03. (des mises à jour sont présentes sur le site web de Lucent mais, pour autant que nous le sachions, elles ne fonctionnent qu'avec Windows... une fois à jour, cependant, vous n'en aurez plus besoin).

Le mode économie d'énergie vous permet de préserver les piles de votre portable lorsque le trafic réseau est réduit. Les performances relevées sont assez bonnes. Pour le mettre en place, utilisez wiconfig(8) avec l'option -P (P majuscule) :

madmax# wiconfig -i wi0 -P 1
Il faudra plus longtemps pour faire un ping mais la consommation sera moindre (les cartes sans fil dépensent énormément; cette option est recommandée si vous travaillez sans être branché au secteur). Cette opération peut s'exécuter par la ligne de commandes ou, si vous utilisez apmd(8), être gérée automatiquement avec des scripts dans /etc/apm/. Voyez apmd(8) pour plus de détails.

Voici des sripts rapidement écrits qui permettront de commencer :

Inscrivez ce qui suit dans /etc/apm/line :

#!/bin/sh

# recherche d'interfaces 'wi' (WaveLAN IEEE) pour annuler
# l'économie d'énergie.

INTERFACES=`/sbin/ifconfig -l -u`

for i in $INTERFACES; do
        case $i in
        wi*) 
                /usr/sbin/wiconfig -i $i -P 0
                ;;
        esac
done

Puis ceci dans /etc/apm/battery :
#!/bin/sh

# recherche d'interfaces 'wi' (WaveLAN IEEE) pour activer
# l'économie d'énergie (uniquement celles qui sont utilisées)

INTERFACES=`/sbin/ifconfig -l -u`

for i in $INTERFACES; do
        case $i in
        wi*) 
                /usr/sbin/wiconfig -i $i -P 1
                ;;
        esac
done

A condition que APM soit correctement configuré, la carte se mettra en mode économie d'énergie lorsque vous débrancherez le secteur et reprendra le mode normal lorsque vous le rebrancherez !

Dépannage (haut)

Plantages (i386)

Sur certaines machines, le pilote wi semble fonctionner jusqu'à ce qu'il y ait un réel trafic puis la machine entière se bloque. Parfois vous obtenez une réponse au ping, parfois pas mais il y a systématiquement quelque chose qui se passe mal. Comme la plupart des cartes PCMCIA n'utilisent que 16 octets ou moins d'entrée-sortie, elles en consomment une grande quantité (64 octets). Elles peuvent alors entrer en conflit avec des périphériques du portable non-encore configurés. C'est un problème courant avec les ordinateurs portables. La documentation est légère et NetBSD n'est pas (encore) très fort dans toutes les formes d'autodétection.

Dans certains cas, l'ordinateur a démarré sous Windows et la plage d'entrée-sortie de chaque périphérique trouvé par Windows a été examinée (la table de «ressources» du gestionnaire de périphériques). Une chose est sûre, le système audio possède un mode de compatibilité (dont NetBSD n'a pas besoin) qui utilise une partie de la plage que NetBSD alloue à wi0.

Comment faire ? Le plus facile est de forcer NetBSD à n'allouer à l'espace d'entrée-sortie qu'une plage spécifique d'adresses : trouvez un intervalle important non-utilisé par le portable (au moins 64 octets !) puis, dans votre fichier de configuration du noyau, indiquez où démarrer et combien allouer. Par exemple (ce cas peut ne pas fonctionner chez vous !), utilisons une plage de 256 octets à partir de l'adresse 0x600, en renseignant respectivement les options PCIC_ISA_ALLOC_IOSIZE et PCIC_ISA_ALLOC_IOBASE. Dans le fichier de configuration du noyau, vous aurez :

options		PCIC_ISA_ALLOC_IOBASE=0x600
options		PCIC_ISA_ALLOC_IOSIZE=0xff
Rappelez-vous que ces valeurs peuvent ne pas fonctionner chez vous ! Pour trouver vos valeurs propres, vous pouvez soit consulter la documentation (si vous la trouvez) soit, sous Windows, répertorier chaque plage utilisées par chaque périphérique et en choisir une qui n'est pas utilisée.

Adaptateur ISA (i386)

C'est probablement évident pour certains mais si vous ne voyez pas la carte PCMCIA, le problème vient sans doutes de la configuration du périphérique pcic. En particulier, en ce qui concerne le réglage du paramètre iomem (et probablement iosize) du périphérique pcic(4). La configuration suivante a déjà été utilisée avec succès :
pcic1   at isa? port 0x3e2 iomem 0xcc000 iosiz 0x4000

options PCIC_ISA_ALLOC_IOBASE=0x300
options PCIC_ISA_ALLOC_IOSIZE=0x0ff
Dans le cas particulier de ce système, de nombreuses adresses ont été utilisées sans gain de cause. Windows a donné la solution car il utilisait 0xcc000 pour faire fonctionner la carte. Ces valeurs peuvent ne pas fonctionner chez vous !

Remerciements (haut)

Merci à Jeff Rizzo qui a écrit ce document.
Merci à Bill Paul qui a écrit le pilote pour FreeBSD.
Merci à Bill Sommerfeld qui l'a porté pour NetBSD.
Merci à Chris Hopps pour son aide à Bill Sommerfeld et pour avoir trouvé des conflits E/S.

Retour vers la Documentation NetBSD : Réseau
Accueil
Accueil Documentation

(Nous contacter) $NetBSD: wavelan.html,v 1.15 2006/06/22 15:49:10 jschauma Exp $
Copyright © 1998-2003 par la Fondation NetBSD, Inc. TOUS DROITS RÉSERVÉS.