Code: Alles auswählen
1. Einführung
Diese Anleitung beschreibt die Benutzung einer AirLancer MC-11 von ELSA unter Linux. Die Karte ist eine OEM der WaveLAN ORiNOCO und somit ist diese Anleitung leicht auf Karten mit dem gleichen Chipsatz übertragbar. Folgende Karten sollten ohne Probleme als ORiNOCO oder PrismII Modelle funktionieren:
* Lucent Technologies Wavelan/IEEE Orinoco
* Cabletron RoamAbout 802.11 DS
* ELSA AirLancer MC-11
* Compaq WL100 11 Mbps Wireless Adapter
* MELCO WLI-PCM-L11
* LA4111 Spectrum24 Wireless LAN PC Card
* 3Com AirConnect
* Intel PRO/Wireless 2011
* Ericsson WLAN Card C11
* Intersil PRISM2 11 Mbps Wireless Adapter
* Farallon SkyLINE
* D-Link DWL-650
* SAMSUNG 11Mbps WLAN Card
* HyperLink Wireless PC Card 11Mbps
* PROXIM LAN PC CARD HARMONY 80211B
* NCR WaveLAN/IEEE Adapter
Als Kommunikationspartner wird ein AccessPoint angenommen der ein "Infrastruktur Netzwerk" aufbaut. Auf den "Ad-Hoc" Modus wird im Moment nicht eingegangen. Trotzdem sind viele Konfigurationsschritte ähnlich und diese Anleitung kann von Nutzen sein.
2. Der Linux Kernel und Wireless LAN
Der Linux Kernel unterstützte schon sehr früh Karten mit denen man drahtlose Netze aufbauen konnte. Dennoch gab es lange keine einheitliche API für solche Treiber. Erst mit den Wireless Extensions wurde so eine Schnittstelle zum Kernel geschaffen. Die Wireless Extensions wurden als Erweiterung der Netzwerk Schnittstellen (z.B. eth0) definiert. Über die Erweiterungen können nun die zusätzlichen Einstellungen, die für ein drahtloses Netzwerk notwendig sind vorgenommen werden. Alle zusätzlichen Einstellungen wurden aber nicht in das Programm ifconfig einbaut, sondern in ein extra Programm ausgelagert. Dieses Tool heißt iwconfig und ist Bestandteil der Wireless Tools.
Mit dem Linux Kernel 2.4.x sind die PCMCIA Treiber und Module fester Bestandteil des Kernel geworden. Es existiert zwar weiter das PCMCIA Card Services Paket, aber hieraus werden nur noch die User-Level Utilities benötigt. Weiterhin sollte bei PCI-to-CardBus Komponenten nur noch das yenta_socket Modul benutzt werden. Bei einer SuSE Linux Distribution kann man dieses durch folgende Einträge in der Datei /etc/rc.config erreichen:
#
# Should PCMCIA service be started at boottime? (yes/no)
#
START_PCMCIA="yes"
PCMCIA="yenta_socket"
Für die SuSE Linux Distribution 7.3 sollten folgende Einträge in der Datei /etc/rc.config.d/pcmcia.rc.config vorgenommen werden um den Orinoco Treiber mit dem yenta_socket Modul zu aktivieren. Beim SuSE Linux 8.0 sind diese Einstellungen in /etc/sysconfig/pcmcia zu finden.
PCMCIA_SYSTEM="kernel"
PCMCIA_PCIC="yenta_socket"
Natürlich muss der Kernel mit den Optionen für PCMCIA, Wireless LAN, Wireless Extensions und den Treiber für die ORiNOCO bzw. PrismII Karten kompiliert werden (die Kernel für SuSE 7.3 sind schon so vorbereitet). Folgende Optionen sind hierbei ausreichend:
#
# PCMCIA/CardBus support
#
CONFIG_PCMCIA=m
CONFIG_CARDBUS=y
#
# Wireless LAN (non-hamradio)
#
CONFIG_NET_RADIO=y
CONFIG_NET_WIRELESS=y
CONFIG_PCMCIA_HERMES=m
CONFIG_AIRO_CS=m
Für die Karten von Cisco/Aironet ist der Treiber airo_cs zuständig, der sich auch im Standard Kernel befindet. Eine genaue Beschreibung wird hier nicht gegeben, dennoch ist die Konfiguration und Einrichtung genauso einfach wie für die ORiNOCO Karten, da auch hier die Wireless Extensions unterstützt werden.
3. Konfiguration der PCMCIA Card Services
Seit dem Kernel 2.4.3 ist der Treiber orinoco_cs fester Bestandteil im Mainlinecode. Für die Ansteurung des "Hermes" Wireless MAC Controller wird das Modul hermes benutzt. Ab dem Kernel 2.4.5 sind alle Treiber für Wireless LAN unter dem Verzeichnis wireless zusammengefasst. Ausserdem wurde der PCMCIA unabhängige Teil von orinoco_cs in das Modul orinoco verschoben und macht somit die einfache Entwicklung von PCI und USB Wireless Adaptern möglich.
Mit dem Kernel 2.4.4 wurden die Wireless Extensions von der Version 10 auf die Version 11 erneuert. Es sollte somit mindestens ein Kernel ab der Version 2.4.4 benutzt werden. Am besten ist natürlich die Version 2.4.6 oder neuer.
Kernel Treiber Verzeichnis Wireless Extensions
2.4.3 0.03 drivers/net/pcmcia/ Version 10
2.4.4 0.04c drivers/net/pcmcia/ Version 11
2.4.5 0.05d drivers/net/wireless/ Version 11
2.4.6 0.06c drivers/net/wireless/ Version 11
2.4.7 0.06c drivers/net/wireless/ Version 11
2.4.8 0.06c drivers/net/wireless/ Version 11
2.4.9 0.06f drivers/net/wireless/ Version 11
2.4.10 0.07 drivers/net/wireless/ Version 11
2.4.11 0.08a drivers/net/wireless/ Version 11
2.4.12 0.08a drivers/net/wireless/ Version 11
2.4.13 0.08a drivers/net/wireless/ Version 12
2.4.14 0.08a drivers/net/wireless/ Version 12
2.4.15 0.08a drivers/net/wireless/ Version 12
2.4.16 0.08a drivers/net/wireless/ Version 12
2.4.17 0.08a drivers/net/wireless/ Version 12
2.4.18 0.09b drivers/net/wireless/ Version 12
2.4.19 0.11b drivers/net/wireless/ Version 13
2.4.20 0.11b drivers/net/wireless/ Version 14
2.4.21 0.13b drivers/net/wireless/ Version 15
2.4.22 0.13d drivers/net/wireless/ Version 15
2.4.23 0.13d drivers/net/wireless/ Version 16
2.4.24 0.13d drivers/net/wireless/ Version 16
2.4.25 0.13d drivers/net/wireless/ Version 16
2.4.26 0.13d drivers/net/wireless/ Version 16
Der Orinoco Treiber soll den alten wvlan_cs Treiber vollständig ersetzen. Leider wird dieses von keiner Linux Distribution beachtet und die Linux PCMCIA Packages benutzen auch noch den veralteten Treiber. In der Datei /etc/pcmcia/config sollten folgende Einträge vorhanden sein. Der Eintrag für wvlan_cs ist Standard. Die Einstellungen für orinoco_cs müssen hinzugefügt werden.
device "wvlan_cs"
class "network" module "wvlan_cs"
device "orinoco_cs"
class "network" module "orinoco_cs"
Normalerweise sind alle Einträge für die Wireless LAN Karten in der Datei /etc/pcmcia/config vorhanden. Leider zeigen diese auf den alten wvlan_cs Treiber und dieses muss geändert werden. Für die AirLancer MC-11 sind das folgende Einträge:
card "ELSA AirLancer MC-11"
version "ELSA", "AirLancer MC-11"
bind "orinoco_cs"
card "ELSA Vianect WLAN MC-11"
version "ELSA", "Vianect WLAN MC-11"
bind "orinoco_cs"
card "Intersil PRISM2 11 Mbps Wireless Adapter"
manfid 0x0156, 0x0002
bind "orinoco_cs"
Der erste Eintrag sollte normalerweise ausreichen, aber leider besitzt die ELSA Karte die gleiche manfid wie die Intersil PRISM2. Die PCMCIA Utilities erkennen zwar die ELSA Karte, benutzen aber den Eintrag der Intersil PRISM2. Nach dem Neustarten der Card Services und dem Einstecken der Karte wird das orinoco_cs Modul und alle weiteren Module geladen. Konfigurationen für weitere Karten mit dem orinoco_cs Treiber sind als hermes.conf zusammengefasst und müssen nur nach /etc/pcmcia/ kopiert werden. Hier sind alle Einträge für die Karte von ELSA und den ORiNOCO Treiber bereits enthalten.
Module Size Used by
orinoco_cs 4256 1
orinoco 26096 0 [orinoco_cs]
hermes 3264 0 [orinoco_cs orinoco]
ds 6122 1 [orinoco_cs]
yenta_socket 8048 1
pcmcia_core 36832 0 [orinoco_cs ds yenta_socket]
Mit dem Befehl dmesg kann kontroliert werden, ob der Ladevorgang erfolgreich verlaufen ist. Die Ausgabe sollte ähnlich der folgenden sein:
Linux Kernel Card Services 3.1.22
options: [pci] [cardbus] [pm]
Yenta IRQ list 04b8, PCI irq9
Socket status: 30000006
cs: IO port probe 0x0c00-0x0cff: clean.
cs: IO port probe 0x0800-0x08ff: clean.
cs: IO port probe 0x0100-0x04ff: excluding 0x170-0x177 0x370-0x377 0x4d0-0x4d7
cs: IO port probe 0x0a00-0x0aff: clean.
cs: memory probe 0xa0000000-0xa0ffffff: clean.
hermes.c: 12 Dec 2000 David Gibson <hermes@gibson.dropbear.id.au>
orinoco.c 0.06c (David Gibson <hermes@gibson.dropbear.id.au> and others)
dldwd: David's Less Dodgy WaveLAN/IEEE Driver
orinoco_cs.c 0.06 (David Gibson <hermes@gibson.dropbear.id.au> and others)
eth0: Firmware ID 1F vendor 0x1 (Lucent) version 7.28
eth0: Ad-hoc demo mode supported.
eth0: IEEE standard IBSS ad-hoc mode supported.
eth0: WEP supported, "128"-bit key.
eth0: MAC address 11:22:33:44:55:66
eth0: Station name "HERMES I"
eth0: ready
eth0: index 0x01: Vcc 5.0, irq 3, io 0x0100-0x013f
4. Konfiguration des Wireless LAN
Eine Wireless LAN Karte ist für den Linux Kernel das gleiche wie eine normale Netzwerkkarte und wird somit als Ethernet Device (z.B. eth0) im Kernel angemeldet. Mit Hilfe der Programme ifconfig und route kann die Wireless LAN Karte genauso konfiguriert werden wie jeder andere Netzwerkkarte unter Linux auch. Mit DHCP kann sogar die Adresse automatisch bezogen werden.
notebook# ifconfig -a
eth0 Link encap:Ethernet HWaddr 11:22:33:44:55:66
inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:3 Base address:0x100
Bevor jedoch die Karte mit einer IP-Adresse versehen wird, sollte sie mit Hilfe der Wireless Extensions eingestellt werden. Hier kommt das Programm iwconfig zum Einsatz. iwconfig funktioniert genauso wie ifconfig und zeigt beim Aufruf ohne Parameter die aktuellen Einstellungen der Wireless Extensions an.
notebook# iwconfig
eth0 IEEE 802.11-DS ESSID:"WIRELESS_LAN" Nickname:"notebook"
Mode:Managed Frequency:2.422GHz Access Point: 1F:2F:3F:4F:5F:6F
Bit Rate:11Mb/s Tx-Power=15 dBm Sensitivity:1/3
Retry limit:4 RTS thr:off Fragment thr:off
Encryption key:1122-3344-5566-7788-99AA-BBCC-DD
Power Management:off
Link Quality:39/92 Signal level:-53 dBm Noise level:-92 dBm
Rx invalid nwid:0 invalid crypt:0 invalid misc:0
Die wichtigsten Einstellungen für ein Wireless LAN sind ESSID, Mode, Frequency (bzw. Channel) und Encryption key. Wenn man einen (oder mehrere) AccessPoints ohne Verschlüsselung betreibt ist es unter Linux nur notwendig den Netzwerknamen (ESSID) zusetzen und den Modus auf Managed umzustellen. Der entsprechende AccessPoint wird automatisch gefunden und auch benutzt. Im Beispiel wäre der Netzwerkname "WIRELESS_LAN".
notebook# iwconfig eth0 essid WIRELESS_LAN
notebook# iwconfig eth0 mode managed
Das setzen der Frequency (bzw. Channel) ist unter Linux im Managed Modus nicht erlaubt. Hier wird standardmäßig der Kanal 3 benutzt, was einer Frequenz von 2.422GHz entspricht.
Ein Wireless LAN sollte immer mit eine WEP128 Verschlüsselung betrieben werden und somit ist es natürlich notwendig dem Treiber den Schlüssel mitzuteilen. Standardmäßig können die Wireless LAN Karten vier verschiedene Schlüssel gleichzeitig speichern, wovon eine aber nur aktive sein kann. Karten mit WEP64 und WEP128 Verschlüsselung unterstützen sowohl 40-Bit (5 Zeichen) wie auch 104-Bit (13 Zeichen) lange Schlüssel. Man kann die Schlüssel als Hex-Wert oder auch als Zeichenkette angeben. Bei der Angabe als Zeichenkette ist ein "s:" voranzustellen. Ob es sich um einen WEP64 oder WEP128 Schlüssel handelt unterscheidet das Programm iwconfig automatisch an der Länge der Eingabe. Die Position im Kartenspeicher wird ein eckigen Klammern hinter dem Schlüssel angegeben. Nur die Positionsangabe aktiviert den Schlüssel.
notebook# iwconfig eth0 key s:abcde [1]
notebook# iwconfig eth0 key s:abcdefghijklm [2]
notebook# iwconfig eth0 key 6162636465666768696A6B6C6D [3]
notebook# iwconfig eth0 key [3]
Natürlich kann man sich auch die aktuell gespeicherten Schlüssel anzeigen lassen. Hierfür muss man das Programm iwlist benutzen. Der aktuell benutzte Schlüssel erscheint auch in der Auflistung von iwconfig.
notebook# iwlist eth0 key
eth0 2 key sizes : 40, 104bits
4 keys available :
[1]: 6162-6364-65 (40 bits)
[2]: 6162-6364-6566-6768-696A-6B6C-6D (104 bits)
[3]: 6162-6364-6566-6768-696A-6B6C-6D (104 bits)
[4]: off
Current Transmit Key: [3]
Nun kann das Interface mit ifconfig und route konfiguriert werden und man kann die Arbeit im Netzwerk beginnen. Mit Hilfe von dhcpcd oder dhcpclient kann ein DHCP Server zur Konfiguration herangezogen werden.
notebook# ifconfig eth0 192.168.0.100 netmask 255.255.255.0
notebook# route add default gw 192.168.0.1
5. Automatische Konfiguration durch die PCMCIA Card Services
Es ist sehr umständlich bei jedem einstecken der Karte die Wireless Extensions zu konfigurieren und dann die Netzwerk Einstellungen zu vergeben. Mit Hilfe der Card Services kann dieses aber automatisch bei jedem Einstecken der Karte erledigt und beim Entfernen der Karte wieder rückgängig gemacht werden. Als erstes wollen wir die Einstellungen für die Wireless Extensions eintragen. Dies geschieht in der Datei /etc/pcmcia/wireless.opts. Wichtig sind hier der Netzwerkname, der Modus und der WEP Schlüssel.
case "$ADDRESS" in
*,*,*,*)
INFO="Wireless LAN Setup"
ESSID="WIRELESS_LAN"
MODE="managed"
KEY="s:abcdefghijklm [1]"
;;
esac
Jetzt muss noch das Netzwerk konfiguriert werden. Hierfür werden die entsprechenden Einträge in der Datei /etc/pcmcia/network.opts vorgenommen.
case "$ADDRESS" in
*,*,*,*)
INFO="Network Setup"
IPADDR="192.168.0.100"
NETMASK="255.255.255.0"
BROADCAST="192.168.0.255"
GATEWAY="192.168.0.1"
;;
esac
Die meisten Netzwerke sind mit DHCP Servern ausgestattet und jeder AccessPoint bringt die Funktionalität mit, DHCP Anfragen zu beantworten. Da die Datei network.opts nicht allein für Wireless LAN Karten zuständig ist, sondern auch bei kabelgebundenen PCMCIA Netwerkkarten verwendet wird, sollte man hier lieber die Einstellung wählen, das ein DHCP Server abgefragt werden soll.
case "$ADDRESS" in
*,*,*,*)
INFO="DHCP Network Setup"
DHCP="y"
;;
esac
Für die Card Services ist leider nicht zu erkennen ob es sich um eine Netzwerkkarte oder eine Wireless LAN Karte handelt und die Befehle für Wireless Extensions werden immer mit ausgeführt. Dies führt natürlich zu Fehlermeldungen, wenn eine normale Netzwerkkarte eingelegt wird. Um diese zu vermeiden sollten die Einstellungen in /etc/pcmcia/wireless.opts nur beachtet werden, wenn es eine Wireless LAN Karte ist. Alle Karten, die den ORiNOCO Treiber benutzen haben eine MAC Adresse aus zwei Bereichen. Zum ersten 00:60:1D:* und zum zweiten 00:02:2D:*. Die Karten von ELSA können sowohl zum ersten als auch zum zweiten Bereich gehören. Man muss also immer beide angeben.
case "$ADDRESS" in
# Lucent Wavelan IEEE (+ Orinoco, RoamAbout and ELSA)
*,*,*,00:60:1D:*|*,*,*,00:02:2D:*)
INFO="Wireless LAN Setup"
ESSID="WIRELESS_LAN"
MODE="managed"
KEY="s:abcdefghijklm [1]"
;;
esac
6. Auf der Arbeit und zu Hause
Für mobile Geräte wie Notebooks ist es absolut wichtig, das man sich schnell und unkompliziert in verschiedenen Netzwerken anmelden kann. Hierfür sind die Einstellungen wie IP-Addresse, Netzmaske und Gateway wichtig. Benutzt man darüber hinaus auch ein Wireless LAN, muss man noch den Netzwerknamen und den WEP Schlüssel kennen. Unter Windows muß man diese Daten für jedes Netzwerk von Hand neu eintragen und dann meistens den Rechner neu starten. Unter Linux gibt es für PCMCIA Karten eine einfache Methode diese Probleme in den Griff zu bekommen.
Mit den PCMCIA Card Services kann man die Konfiguration von Profilen abhängig machen. Diese Profile werden bei PCMCIA "Scheme" genannt und mit Hilfe von cardctl gewechselt. Als Parameter wird hier das Kommando scheme und dann der Name des neuen "Scheme" angegeben. Es kann immer nur genau ein "Scheme" aktiviert sein. Der aktuelle "Scheme" Name ist unter /var/lib/pcmcia/scheme abgespeichert.
notebook# cardctl scheme work
checking:
Changing scheme from 'home' to 'work'...
Die Standardsituation ist, das man sein Notebook auf der Arbeit benutzt und auch zu Hause weiter benutzen möchte. Desweiteren soll ein Profile existieren, welches einen DHCP Server abfragt und davon ausgeht, das das Wireless LAN keine Verschlüsselung erfordert und den speziellen Netzwerknamen any akzeptiert. Die drei Profile werden work, home und dhcp genannt.
Als erstes soll jetzt die Datei /etc/pcmcia/wirless.opts konfiguriert werden. Hierfür werden die Daten des Wireless LAN benötigt. In dem Beispiel sollen das folgende sein:
Scheme Name work home dhcp
ESSID FIRM_NETWORK HOME_NETWORK any
Mode managed managed managed
WEP Key s:Wireless_WORK [1] s:Wireless_HOME [1] off
case "$ADDRESS" in
work,*,*,00:60:1D:*|work,*,*,00:02:2D:*)
INFO="Wireless LAN @ Work Setup"
ESSID="FIRM_NETWORK"
MODE="managed"
KEY="s:Wireless_WORK [1]"
;;
home,*,*,00:60:1D:*|home,*,*,00:02:2D:*)
INFO="Wireless LAN @ Home Setup"
ESSID="HOME_NETWORK"
MODE="managed"
KEY="s:Wireless_HOME [1]"
;;
dhcp,*,*,00:60:1D:*|dhcp,*,*,00:02:2D:*)
INFO="Generic Wireless LAN without Encryption"
ESSID="any"
MODE="managed"
KEY="off"
;;
esac
Nun soll auch noch die Datei /etc/pcmcia/networks.opts mit den Profilen konfiguriert werden. Die Paramerter für die MAC-Addressen werden weggelassen, damit auch kabelgebundene Netzwerkkarten die Einstellungen nutzen können. Das Profil dhcp ist hierbei die Verallgemeinerung für alle modernen Netzwerke mit DHCP Unterstützung.
Scheme Name work home dhcp
IP-Adresse 10.123.70.100 192.168.0.100 dhcp
Netmask 255.255.255.0 255.255.255.0 dhcp
Broadcast 10.123.70.255 192.168.0.255 dhcp
Gateway 10.123.70.1 192.168.0.1 dhcp
case "$ADDRESS" in
work,*,*,*)
INFO="Network @ Work Setup"
IPADDR="10.70.123.100"
NETMASK="255.255.255.0"
BROADCAST="10.70.123.255"
GATEWAY="10.70.123.1"
;;
home,*,*,*)
INFO="Network @ Home Setup"
IPADDR="192.168.0.100"
NETMASK="255.255.255.0"
BROADCAST="192.168.0.255"
GATEWAY="192.168.0.1"
;;
dhcp,*,*,*)
INFO="DHCP Network Setup"
DHCP="y"
;;
esac