Treiber für Wireless-LAN-Karten

Aus LinuxUser 10/2002

Treiber für Wireless-LAN-Karten

Treibersafari

Die Distributoren haben Wireless LAN noch nicht für sich entdeckt, auf ihren CDs findet man meist nur die alt gedienten PCMCIA Card Services. Deshalb ist bei aktuellen Wireless-LAN-Karten viel Handarbeit erforderlich.

Für die großen Distributoren sind drahtlose Netzwerke offenbar inexistent, niemand bietet derzeit Konfigurationsprogramme zur Einrichtung oder erkennt sie während der Installation.

Auch die Treiberbasis ist eher kläglich als gut, so beschränkt sich zum Beispiel SuSE auf die PCMCIA Card Services ([1]) und die im Kernel 2.4.18 enthaltenen PCMCIA-Karten und PC-Cards. Doch gerade mit den weit verbreiteten Prism-2.5- und Prism-3-Chipsätzen funktionieren die Treiber nicht, auch 3Com-Karten benötigen meist neuere Treiber. Für aktuelle Karten steht daher meist eine Treibersafari quer durch das System an.

Treiber für 3Com X-Jack

Die Poldhu-Chips, die unter anderem in der 3Com-X-Jack-Karte eingesetzt werden, benötigen einen separaten Treiber von [2], der allerdings nur unter neuen 2.4er Kernels funktioniert. Wie auch bei den Next-Generation-Modulen müssen die Quellen Ihres aktuell laufenden Kernels installiert sein, die Quellen der PCMCIA Card Services brauchen Sie hingegen nicht.

Nach dem Auspacken des Pakets rufen Sie das Programm ./Configure (ausnahmsweise mit großem C) auf. Dort werden die Verzeichnisse des Kernels und der Module abgefragt, sowie das Konfigurationsverzeichnis der PCMCIA Card Services. Sie können fast immer die Voreinstellungen übernehmen. Der Aufruf von make all und make install kompiliert die Quellen, legt die fertigen Module an den vorgesehenen Stellen ab und kopiert die Konfigurationsdatei poldhu.conf nach /etc/pcmcia.

3Com-Konfiguration

Die Einrichtung der Karte erfolgt wie auch bei Treibern aus den PCMCIA Card Services über die Datei /etc/pcmcia/wireless.opts. Sie enthält Werte-Zuweisungen an verschiedene Variablen der Art Variable=Wert oder Variable=”Wert” und wird geladen, sobald die Karte eingeschoben wird.

Für die Ansteuerung mehrerer Karten gibt es die Möglichkeit, einen Konfigurationsblock anhand der Hardware-Adresse (MAC-Adresse) einer Wireless-LAN-Karte oder Teilen davon auf eine bestimmte Karte oder eine Modellreihe einzugrenzen. Die Hardware-Adresse (der Befehl ifconfig listet sie unter anderem hexadezimal auf) ist eine 6 Byte lange Kennung. Die ersten drei bis vier Bytes reichen meist, um Hersteller und Baureihe festzulegen.

Als Beispiel nehmen wir die Hardware-Adresse 00:04:DB:A5:72:E0, wobei uns die ersten drei Bytes (also 00:04:DB) als Identifikation ausreichen. Der Konfigurationsblock für eine Karte beginnt in der /etc/pcmcia/wireless.opts mit dem Eintrag “@L: *,@L: *,@L: *,@L: *)” und endet bei der Zeile mit dem Doppel-Semikolon “;;”. Kopieren Sie diesen Block direkt unterhalb der Zeile mit Doppel-Semikolon und bearbeiten Sie den oberen Block: Die vier durch Komma getrennten Sterne “passen” auf alle Hardware-Adressen aller Karten, der Block wird also für jede einzelne Karte ausgeführt – es sei denn, es wurde vorher ein anderer Block abgearbeitet. Deshalb ändern Sie den Anfang des oberen Blocks in “@L: *,@L: *,@L: *,00:04:DB@L: *)”, wobei die Buchstaben der Hexadezimalschreibweise unbedingt Großbuchstaben sein müssen.

Der obere Block wird nun für alle Karten ausgeführt, die mit der Hardware-Adresse 00:04:DB anfangen. Es wird aber nur maximal ein Block abgearbeitet, der zweite Block kommt also nur bei anderen Hardware-Adressen zum Zuge, quasi als Standardkonfiguration. Innerhalb der Blöcke werden nun die verschiedenen Variablen gesetzt.

ESSID enthält den Namen Ihres drahtlosen Netzes – diesen sollten Sie mit Bedacht wählen, da alle Wireless-Geräte mit der gleichen (E)SSID zu einem gemeinsamen Netz gehören. Sinnvoll ist beispielsweise die eigene Telefonnummer oder ein Namensteil.

Mittels MODE wählen Sie die Betriebsart aus: Bei “Ad-Hoc” ist es ein Netz ohne Access Point mit direkter Vermittlung, bei “Managed” buchen sich alle Teilnehmer beim Access Point ein und benutzen ihn als Verteiler (ähnlich einem Netzwerk-Switch).

In der Variable FREQ könnten Sie die Frequenz Ihres Kanals eingeben, was aber sehr umständlich ist – benutzen Sie besser CHANNEL und wählen einen Kanal von 1 bis 14.

In der Variable KEY tragen Sie den Schlüssel für die WEP-Verschlüsselung ein, und zwar hexadezimal in der Form “0102-0304-0506-0708-090a-0b0c-0d”. Für 128-Bit-Verschlüsselung müssen auf diese Weise 13 Bytes eingetragen werden – die “fehlenden” drei Bytes werden für den “Initialization Vector” (IV) bei jedem gesendeten Paket verwendet, der Schlüssel ist damit nur 104 Byte lang.

Next Generation Wireless

Für den Betrieb neuerer Wireless-LAN-Karten wird meist das Treiberpaket “Next Generation” (linux-wlan-ng, [3]) von [4] benötigt. Es liegt den meisten Distributionen derzeit nicht bei und muss so aufwendig von Hand kompiliert werden.

Für den Test haben wir die aktuell stabile Version 0.1.14 ([5]) verwendet. Zusätzlich benötigen Sie unbedingt die Quellen Ihres Kernels, die zumindest mittels make xconfig oder make menuconfig eingerichtet sein müssen.

Bei SuSE unterscheiden sich die Kernel-Quellen vom Distributions-Kernel, weshalb Sie in den meisten Fällen den Kernel neu übersetzen müssen – was mit der Konfigurationsdatei /boot/vmlinuz.config des Standard-Kernels aber nicht ohne Weiteres funktioniert. Bei SuSE 8.0 müssen Sie zumindest die Unterstützung für WAN-Geräte (Wide Area Network, zu finden unter “Network device support”, “Wan interfaces”) sowie alle Emulationen anderer Prozessor-Architekturen (unter “Binary emulation of other systems”) abschalten. Noch besser ist es, Sie nehmen sich die Zeit und passen den Kernel gleich auf Ihre Erfordernisse an. Das Neukompilieren wird mit dem Befehl

make dep modules modules_install bzlilo

gestartet, der fertige Kernel wird dabei automatisch installiert und LILO aufgerufen.

Bei PC-Card- (PCMCIA-) Wireless-Karten werden in jedem Fall noch die Quellen der PCMCIA Card Services von [6] oder das entsprechende Quellpaket Ihrer Distribution benötigt. Die Card Services müssen mit make config konfiguriert und am besten auch mit make all neu übersetzt und per make install installiert werden.

Nach diesen Vorarbeiten können Sie das linux-wlan-ng-Paket mittels make config einrichten. Sie können zwischen Treibern für die PCMCIA Card Services, PCI-Adapter, PCI-Karten und USB-Adapter wählen. Für die hier vorgestellten Karten benötigen Sie entweder die Card-Services-Treiber oder USB-Adapter-Treiber. Bei den restlichen Abfragen des Konfigurationsdialogs können Sie die Standardwerte einfach übernehmen.

Das Kompilieren wird mit make all gestartet. Leider gibt es kein Rezept, was im Fehlerfall konkret zu tun ist. Im Test verwendeten wir Kernel 2.2.20, 2.4.18 und 2.4.19 mit den Card-Services 3.1.33, wobei im Kernel die PCMCIA-Unterstützung abgeschaltet war. Nach fehlerfreiem Kompilieren werden die Module per make install nebst Konfigurationsdateien installiert, abschließend sollten Sie noch depmod -a aufrufen.

Karten-Konfiguration

Die Konfiguration erfolgt bei Card-Services-Treibern über die Datei /etc/pcmcia/wlan-ng.opts, für alle anderen Treiber über /etc/wlan.conf. Der Aufbau beider Dateien ist gleich, sie enthalten wie auch die /etc/pcmcia/wireless.opts etliche Variablenzuweisungen. Auch hier ist die Zuordnung verschiedener Blöcke zu verschiedenen Hardware-Adressen der Karte möglich, wie bei der 3Com-Karte beschrieben. Die Dateien sind umfangreich – wenn auch englisch – dokumentiert, weshalb wir nur auf die zu ändernden Punkte eingehen.

Die Konfigurationsdateien werden unmittelbar nach Einschieben oder Anstecken der Wireless-LAN-Karte geladen. Damit die Karte überhaupt eingerichtet wird, muss die Variable WLAN_ENABLE auf “y” gesetzt sein.

Der Abschnitt “WEP” enthält alle Einstellungen zur Verschlüsselung. Um sie einzuschalten, setzen Sie zunächst dot11PrivacyInvoked=true sowie dot11ExcludeUnencrypted=true, womit ihre WLAN-Karte nur noch verschlüsselt arbeitet. Für die 128-Bit-Verschlüsselung, die wir dringend auch im Heimbereich empfehlen, müssen Sie noch PRIV_KEY128=true setzen und bei der Variablen dot11WEPDefaultKey0 den Schlüssel als hexadezimale Zahlenfolge eintragen. Sie muss genau 13 Bytes in hexadezimaler Darstellung enthalten, zum Beispiel “01:02:03:04:05:06:07:08:09:0a:0b:0c:0d”.

In den letzten drei Abschnitten wird eingestellt, wie die Vernetzung erfolgen soll. Bei IS_ADHOC=n benötigen Sie einen Access Point (AP), der die drahtlosen Rechner untereinander verbindet. In der Konfigurationsdatei müssen Sie für den Betrieb mit Access Point nur noch in der Sektion “Infrastructure Station Start” die Variable DesiredSSID mit dem Namen Ihres Heim-Netzwerkes ausfüllen.

Die meist billigste Variante ist der so genannte Ad-Hoc-Modus (IS_ADHOC=y), bei dem bis zu 16 Rechner direkt und ohne Access Point miteinander verbunden werden können. Nachteil ist, dass sich alle Rechner gegenseitig “hören” müssen, also die beiden am weitesten entfernten Karten direkte Funkverbindung haben. Auch im Ad-Hoc-Modus wird der Name des Netzes (SSID) zur Unterscheidung verwendet, zudem kann mit der Variablen CHANNEL einer der vierzehn Kanäle eingestellt werden. Da die oberen Kanäle von Bluetooth-Geräten teilweise belegt seien könnten, empfiehlt sich Kanal 7 oder niedriger.

Für weit entfernte Rechner im Ad-Hoc-Modus ist es vielleicht nötig, die maximale Datenrate von 11 MBit/s zu reduzieren – je niedriger die Datenrate desto höher ist die Reichweite. Dazu können verschiedene Raten in der Variable OPRATES eingegeben werden. Gerechnet wird dabei in 500 KBit/s, ein Wert von 22 bedeutet also 11 MBit/s, während 2 einer Rate von 1 MBit/s entspricht.

Treiberkonflikte lösen

Für alle unterstützten PC-Card-Karten und Wireless-Chipsätze legen die Treiberpakete eine Liste in einer separaten Konfigurationsdatei unter /etc/pcmcia/@L: *.conf ab. Dabei kommt es immer wieder zu widersprüchlichen Einträgen, so dass mitunter ein veralteter Treiber geladen wird. Das Kommando

grep -e manfid -e version /etc/ppp/config /etc/ppp/@L: *.conf | sort +2 -3 -d | less

sortiert die Einträge der Konfigurationsdateien nach den Herstellerkennungen, wobei der Name der jeweiligen Datei am Anfang der Zeile steht. Funktioniert eine Karte nicht mit dem geladenen Treiber, obwohl sie erkannt und unterstützt wird, lohnt sich eine Suche nach solchen Doppeln. Durch Auskommentieren lässt sich meist sehr schnell der richtige Eintrag finden, allerdings müssen Sie die PCMCIA Card Services nach jeder Änderung mit /etc/init.d/pcmcia restart neu starten.

Netzwerk-Konfiguration

Bisher wurde nur die WLAN-Karte selbst konfiguriert, nicht jedoch die Netzwerkeinstellungen. Dies geschieht für alle Netzwerk-PC-Cards zentral in der Datei /etc/ppp/network.opts. Wie schon von der Datei /etc/pcmcia/wireless.opts bekannt, lassen sich auch in der network.opts Blöcke für einzelne Karten oder Modelle bilden, und die Werte werden Variablen zugewiesen, das Schema ist stets gleich.

Die INFO-Variable kann leer gelassen werden, ein sinnvoller Wert schadet aber auch nicht. Gibt es einen DHCP-Server im Netz, besorgt sich bei DHCP=”y” die Karte selbst alle nötigen Daten – je nach Server müssen Sie noch den DHCP_HOSTNAME mit dem Domain-Namen des Netzes füttern.

Für statische IPs setzen Sie DHCP=”n”, füllen die Variablen IPADDR mit der IP-Adresse der Karte (zum Beispiel “192.168.2.2”), NETMASK und NETWORK mit der Subnetzmaske respektive Netzwerk-Basisadresse (hier “255.255.255.0” und “192.168.2.0”) und tragen schließlich noch die Broadcast-Adresse (“192.168.2.255”) und falls erforderlich die IP-Adresse des DSL-Routers oder des Internet-Gateways als GATEWAY ein.

Meist sind beim drahtlosen Betrieb nicht die gleichen Nameserver ansprechbar wie im Ethernet, in den Variablen DNS_1 bis DNS_3 können Sie die Adresse der für das Wireless Network zuständigen Nameserver angeben. Diese werden gesetzt, sobald die Karte eingeschoben wird. Die weiteren Variablen sind für den normalen Netzwerkbetrieb nur selten von Belang.

Sonderweg USB-Adapter

Bei USB-Adaptern wie etwa dem Actiontec Wireless 802UI3 ist die Konfigurationsdatei /etc/wlan.conf für die grundlegende Geräteeinrichtung zuständig, beim Aktivieren oder Anstecken wird das zuständige Skript /etc/init.d/wlan jedoch nicht automatisch aufgerufen.

Das Problem lässt sich leicht umgehen, wenn die Reihenfolge der Boot-Skripte in /etc/init.d geändert wird. Bei der SuSE 7.3 müssen Sie dazu in den Verzeichnissen /etc/init.d/rc3.d und /etc/init.d/rc5.d die symbolischen Links S06hotplug in S05hotplug und K17hotplug in K18hotplug umbenennen, sowie S05network in S06network und K18network in K17network. Zudem legen Sie zwei neue Links mit ln -s ../wlan S05wlan und ln -s ../wlan K17wlan in beiden Verzeichnissen an. Damit wird gewährleistet, dass die Netzwerkkonfiguration erst nach Laden des USB Hotplug Managers und der WLAN-Einrichtung aufgerufen wird, also der Wireless-Adapter wie jedes andere Netzwerkgerät auch mit den Distributions-Tools konfiguriert werden kann – der Wireless-Adapter heißt einfach “wlan0” statt “eth0”, das ist der ganze Unterschied. Beim Herunterfahren des Systems ist es umgekehrt, erst wird das Netzwerk abgeschaltet und dann USB entladen. In der Datei /etc/modules.conf tragen Sie zudem noch die Zeile alias wlan0 prism2_usb nach. Es empfiehlt sich noch, in Zeile 2 der /etc/init.d/wlan das Kommando sleep 1 einzufügen – auf unserem Testsystem war der USB Hotplug Manager wohl noch nicht fertig initialisiert, so dass die Treibereinrichtung der WLAN-Karte letztlich scheiterte. Mit dem sleep traten keine Probleme mehr auf.

Ausblick

Die Einrichtung von Wireless LAN ist derzeit mit viel Handarbeit verbunden, weil keiner der großen Distributoren die nötigen Module mitbringt oder gar Konfigurationswerkzeuge anbietet – für Einsteiger ein großes Problem. Bleibt zu hoffen, dass kommende Distributionen besser gerüstet sind und drahtlose Netzwerke nicht länger ignorieren.

Infos

[1] Homepage der PCMCIA Card Services: http://pcmcia-cs.sourceforge.net

[2] Poldhu-Treiber 0.1.12 für 3Com X-Jack: http://www.xs4all.net/~bvermeul/swallow/poldhu-0.2.12.tar.gz

[3] linux-wlan-Projekt: http://www.linux-wlan.org

[4] “Next Generation”-Treiberpakete: ftp://ftp.linux-wlan.org/pub/linux-wlan-ng

[5] linux-wlan-ng-0.1.14 Treiberpaket: ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/linux-wlan-ng-0.1.14.tar.gz

[6] PCMCIA Card Services 3.1.33: http://pcmcia-cs.sourceforge.net/ftp/pcmcia-cs-3.1.33.tar.gz

[7] Homepage der Swallow/Poldhu-Treiber: http://www.xs4all.net/~bvermeul/swallow/

[8] Linksammlung zu Howtos und Treibern von Jean Tourrilhes: http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux @KE:

LinuxUser 10/2002 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben