Auf diesen Seiten wird erklärt, wie man den 11 Mbit (802.11b) Wireless USB Adapter DWL-122 der Firma D-Link unter Debian und seinen Derivaten richtig einbindet. Auf anderen Linuxdistributionen sollte es eigentlich auch funktionieren, eventuell sind einige Dateinamen anzupassen.
Dieser WLAN- Adapter ist so groß wie ein USB-Stick, eignet sich also prima zum Mitnehmen und loslegen. Er wird seit langem nicht mehr hergestellt, ist aber immer noch sehr preisgünstig gebraucht auf größeren Handelsplatformen zu haben.
Nach einstecken des Sticks wird er bei Debian Etch sofort richtig vom System erkannt:
# lsusb ... Bus 002 Device 002: ID 2001:3700 D-Link Corp. [hex] DWL-122 802.11b ...
Es existieren für den verwendeten prism2 -Chipsatz 2 unterschiedliche Treiber, aber durch den USB-Anschluss kommt nur der Treiber wlan-ng in Frage. Dieser Treiber ist nicht im Kernel enthalten.
Deswegen werden entweder (A): das passende Kernelmodul zum Distributionskernel als Paket, (B): alternativ das passende Header-Paket zum installiertem Kernel der Distribution, oder (C): ein selbst gebauter Kernel mit passenden Kernel-Sourcen gebraucht.
Installation
Die drei oben genannten Möglichkeiten werden hier beschrieben.
(Variante A)
Diese benötigt ein zusätzliches Repository, welches das Paket linux-wlan-ng-modules enthält. Beispielsweise Knoppix führt solch ein Repository.
aptitude install linux-wlan-ng-modules linux-kernel-headers linux-wlan-ng-firmware linux-wlan-ng linux-wlan-ng-source
installiert alles, was mit einem Standardkernel der Distribution benötigt wird.
(Variante B und C)
Ist das Paket linux-wlan-ng-modules nicht im Standardrepository der benutzten Distribution enthalten, bietet sich eine der anderen Varianten an.
Bei einem Eigenbaukernel oder Distributionskernel gehe ich davon aus, das die passenden Quellen zum Kernel unter /usr/src/linux liegen und das der Treiber von ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/ herunter geladen wurde, oder als Debian-Paket linux-wlan-ng-source installiert ist.
Variante B, mit Distributionskernel:
Die Firmware sowie die Sourcen des Treibers und die Kernelheader installieren:
aptitude install linux-kernel-headers linux-wlan-ng-firmware linux-wlan-ng linux-wlan-ng-source
Die Datei /usr/src/modules/linux-wlan-ng/debian/config-for-lwng editieren, nur die USB-Treiber werden gebraucht.
vim /usr/src/modules/linux-wlan-ng/debian/config-for-lwng ... PRISM2_PCMCIA=n PRISM2_PLX=n PRISM2_PCI=n PRISM2_USB=$BUILD_MODULES UTILS=n ...
Übersetzen mit
make-kpkg modules_image
Das entstandene Paket dann einfach mit dpkg -i <Paketname.deb installieren>
Bei einem selbst gebauten Kernel (Variante C ) funktioniert auch das Bauen eines Paketes, wie in Variante B beschrieben, jedoch ist das Installieren der Sourcen von linux-wlan.org besser.
Die heruntergeladenen wlan-Treiber in /usr/src entpacken, danach in das Verzeichnis /usr/src/linux-wlan-ng<version> wechseln, die Treiber compilieren und installieren:
make config; make all; make install
Alle Fragen ausser der nach USB sollten mit Nein beantwortet werden, wir benötigen nicht alle Module. In etc/modules.conf folgendes eintragen:
alias wlan0 prism2_usb
Testen
Nachdem die Module übersetzt und installiert sind, wird der USB-Stick eingesteckt.
Ein ifconfig -a sollte nun ein neues Gerät wlan0 anzeigen, wenn das Modul prism2_usb automatisch geladen wird. Wenn ein ifconfig -a kein neues Gerät anzeigt, dann das Modul per Hand laden (modprobe prism2_usb).
Das muss funktionieren, sonst funktioniert die Konfiguration weiter unten nicht.
Konfiguration
Der WLAN-Stick wird als wlan0 erkannt. Wem das nicht gefällt: das lässt sich unter /etc/udev/rles.d/ ändern, in den Regeln einfach statt "wlan" ein "eth" eintragen, dann wird das Gerät als "eth1" erkannt. Das ist aber nur "optisch", hat also für die Funktion keine Bedeutung. Ich habe es bei der Bezeichnung wlan0 gelassen.
In die Datei /etc/network/interfaces ist für offenes WLAN mit DHCP folgendes einzutragen:
#/etc/network/interfaces # ... # D-Link DWL 122 allow-hotplug wlan0 iface wlan0 inet dhcp pre-up modprobe prism2_usb pre-up wlanctl-ng wlan0 lnxreq_ifstate ifstate=enable pre-up wlanctl-ng wlan0 lnxreq_autojoin ssid=FONAP authtype=opensystem post-down modprobe -r prism2_usb
Nachdem die Datei abgespeichert wurde, wird beim Einstecken des Sticks automatisch eine Adresse bezogen. Wenn eine WEP- Verschlüsselung verwendet werden soll, ist die Datei folgendermaßen abzuändern:
... #D-Link DWL 122 mit Angabe einer SSID und WEP- Verschlüsselung allow-hotplug wlan0 iface wlan0 inet dhcp pre-up modprobe prism2_usb pre-up wlanctl-ng wlan0 lnxreq_ifstate ifstate=enable pre-up wlanctl-ng wlan0 lnxreq_autojoin ssid=<meine_ssid> authtype=opensystem pre-up wlanctl-ng wlan0 dot11req_mibset mibattribute=dot11WEPDefaultKeyID=0 pre-up wlanctl-ng wlan0 dot11req_mibset mibattribute=dot11ExcludeUnencrypted=true pre-up wlanctl-ng wlan0 dot11req_mibset mibattribute=dot11PrivacyInvoked=true pre-up wlanctl-ng wlan0 dot11req_mibset \ mibattribute=dot11WEPDefaultKey0=00:01:02:03:04:05:06:07:08:09:0a:0b:0c
Der Stick kann alternativ auch über ein einfaches Skript konfiguriert werden:
# Skript stammt im Original von: # http://www.schiessle.org/howto/thinkpadx24.shtml echo 'Starting wlan interface...' wlanctl-ng wlan0 lnxreq_ifstate ifstate=enable wlanctl-ng wlan0 lnxreq_autojoin ssid=<your_APs_SSID> authtype=opensystem #WEP Konfiguration (optional, aber empfohlen) # Default-Key auswählen wlanctl-ng wlan0 dot11req_mibset mibattribute=dot11WEPDefaultKeyID=0 # Unverschlüsslete Teilnehmer nicht akzeptieren wlanctl-ng wlan0 dot11req_mibset \ mibattribute=dot11ExcludeUnencrypted=true # WEP anschalten wlanctl-ng wlan0 dot11req_mibset mibattribute=dot11PrivacyInvoked=true # WEP-Key setzen (hier WEP128 Beispiel) wlanctl-ng wlan0 dot11req_mibset mibattribute=dot11WEPDefaultKey0=01:02:03:04:05:06:07:08:09:10:11:12:13 # Netzwerkkarte aktivieren und den Gateway setzen ifconfig wlan0 <your_IP> netmask <your_netmask> broadcast <your_broadcast> route add default gw <your_gateway>