Madwifi
ist das Treiberprojekt für Atheros Chip-basierende WLAN-Karten, deren Anleitung für Ubuntu
im Netz verfügbar ist. Der Treiber unterstützt nicht nur den normalen Client-Modus, sondern auch einige andere nette Features.
Der Treiber ist bereits in Ubuntu enthalten, zur Nutzung ist das folgende Paket zu installieren [1]:
linux-restricted-modules
Für erweiterte Funktionen ab Ubuntu 7.04 Feisty Fawn
madwifi-tools (universe [2])
Möglicherweise funktionieren neue Karten nicht mit dem mitgelieferten Treiber. Ob eine neuere Treiberversion Besserung verschaffen könnte, kann einem im Terminal [3] der folgende Befehl verraten:
dmesg | grep ath
Dies könnte die folgende Ausgabe liefern:
ath%d: unable to attach hardware; HAL Status 13"
Die jeweils aktuellen Treiber
herunterladen und das Paket in den persönlichen Ordner entpacken [7]. Außerdem sind die folgenden Pakete zu installieren [1]:
build-essential
linux-headers-386 (der Rechnerarchitektur entsprechend, [5])
Man öffnet ein Terminal [3] und bewegt sich in das entpackte Verzeichnis. Dort exportiert man zuerst zwei Umgebungsvariablen:
export KERNELPATH=/usr/src/linux-headers-$(uname -r) export KERNELRELEASE=$(uname -r)
Danach muss man den Treiber kompilieren und installieren.
make sudo make install make clean
WLAN-USB-Sticks mit dem Atheros-Chip funktionieren nicht mit diesen Treibern, hier muss NdisWrapper benutzt werden. siehe auch hier: http://madwifi-project.org/wiki/Compatibility
.
Der aktuelle MadWifi Treiber in der Version 0.9.4 unterstüzt keine Atheros Karten mit dem Chipsatz AR5007EG. Dieser benötigt die Installation des Snapshots madwifi-hal-0.10.5.6 des MadWifi-Treibers.
"System -> Hardware-Treiber" Häkchen aus "Atheros Hardware Access Layer" nehmen
Das Treiberpaket
runterladen und an bliebiger Stelle entpacken
Per Terminal in das Verzeichnis wechseln
Danach muss man den Treiber kompilieren und installieren
make sudo make install
Neustarten
Danach sollten die gefundenen Netze verfügbar sein. Bei einem Kernel Update muss man die Schritte 3 -5 wiederholen.
Seit Linux 2.6.27 gibt es einen neuen Treiber namens Ath5k für Atheros Hardware, der auch den 5007 Chipsatz untersützt. Da die eigentliche Version davon allerdings zu instabil war, wird der Treiber nicht direkt von Ubuntu 8.10 mitgliefert. Er kann aber in einer neueren Version über folgendes Paket nachinstalliert werden [4]:
linux-backports-modules-intrepid (main)
Dies kann eventuell Nebenwirkungen haben, da hierdurch auch neuere Versionen von anderen Treibern installiert werden. Vor dem notwendigen Neustart sollte aber noch der mitgelieferte Madwifi Treiber über System -> Systemverwaltung -> Hardwaretreiber -> Support for Atheros 802.11 wireless LAN cards deaktiviert werden.
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Das besondere an dem neuen madwifi ist, dass es ein direktes Hardwareinterface bereitstellt, welches "wifi0" (für die 1. Karte, "wifi1" für die 2. usw.) heißt und auf diesem erst die normalen Interfaces hinzufügt. Diese Interfaces heißen dann normalerweise "ath0", "ath1", ...!
Neuere Atheros-Chipsätze funktionieren nicht immer mit den in ubuntu enthaltetenen Treiberpaketen. Diese sind möglicherweise auch fehlerhaft. Es empfiehlt sich daher den aktuellen Treiber selbst zu kompilieren. Dazu gibt es ein kleines How-To
im Forum.
Als erstes muss das "alte" Interface entfernt werden [3]
wlanconfig ath0 destroy
dann kann man ein neues hinzufügen. Der Befehl für das Interface für den Client-Modus lautet:
wlanconfig ath0 create wlandev wifi0 wlanmode sta
der für den Access-Point Modus:
wlanconfig ath0 create wlandev wifi0 wlanmode ap
und für den Monitor-Modus:
wlanconfig ath0 create wlandev wifi0 wlanmode monitor
Das logische Gerät ath0 wird durch ein fehlerhaftes Verhalten von udev automatisch erzeugt, ist aber unbrauchbar. In der Version 7.10 war eine Abhilfe möglich. Dies möchte ich im Folgenden kurz dokumentieren. Ich gehe davon aus, dass das die Karte mit ath0 angesprochen wird, wenn ifconfig -a beispielsweise ath1 anzeigt, sollte die aktive Karte entsprechend angesprochen werden (Abmeldung), die neuzuerstellenden Dateieinträge sollten aber auf ath0 lauten (/etc/network/interfaces).
/etc/udev/rules.d/75-persistent-net-generator.rules so editieren [4], dass in der Zeile
ACTION=="add", SUBSYSTEM=="net", KERNEL=="eth*|ath*|wlan*|ra*|sta*" \
kein "ath*" als KERNEL-Option steht:
ACTION=="add", SUBSYSTEM=="net", KERNEL=="eth*|wlan*|ra*|sta*" \
Wenn das Gerät bereits dem System bekannt ist, sollte ebenfalls der Inhalt der Datei /etc/udev/rules.d/70-persistent-net.rules dahin geändert [4] werden, dass eventuell vorhandene Einträge über das ath0-Gerät gelöscht werden.
Beim Ändern der Dateien vorsichtig vorgehen! Sicherungskopien vor dem Bearbeiten anlegen! Um die Funktionalität anderer Geräte nicht zu stören ist es wichtig, dass die Gerätebezeichnung des Atheros-Gerätes eindeutig bekannt ist, und nicht andere Geräte versehentlich aus der Konfiguration gelöscht werden.
Da nun kein fehlerhaftes ath0 beim Einstecken automatisch erzeugt wird, werden in der Datei /etc/network/interfaces folgende Einträge nicht mehr benötigt [4]:
pre-up wlanconfig ath0 destroy
pre-up wlanconfig ath0 create wlandev wifi0 wlanmode [ap|monitor|sta]Das Gerät sollte die Bezeichnung ath0 behalten, keine fortlaufenden Nummern erzeugen und beim Einstecken automatisch ath0 im sta-Modus (client) verfügbar sein. In die Datei /etc/network/interfaces erfolgt sinnigerweise der Eintrag:
auto ath0 iface ath0 inet (... Fortsetzung je nach Bedarf)
Ein Neuinitialisieren mit ifup ist sinnvoll, wenn die Datei /etc/network/interfaces die für die Kommunikation mit den Accesspoints nötigen Einträge enthält (bsp. Verschlüsselung mittels wpa_supplicant, s.u.).
wpa_supplicant lief ebenfalls in den Versionen 0.5.8/0.6.2 problemlos und in der Datei /etc/network/interfaces waren lediglich folgende zwei Zeilen zu ergänzen:
post-up wpa_supplicant -D madwifi -i <dev> -c <config> post-down killall -q wpa_supplicant
Für ein Neuinitialisieren ist es notwendig die Karte aus dem System abzumelden [3] (die Kombination beider Befehle wird vermutlich Fehlermeldung(en) hervorrufen SIOCDELRT: No such process, dies ist im Regelfall aber nicht weiter schlimm):
ifconfig ath0 down ifdown ath0
Ein ifup ath0 [3] sollte nun die Karte gemäß den Einträgen in /etc/network/interfaces konfigurieren:
ifup ath0
Nach Netzen kann mit folgendem Kommando gesucht werden:
wlanconfig ath0 list scan
Der Madwifi-ng Treiber wird außerdem von Kismet unterstützt. Dazu muss in der Datei /etc/kismet.conf mit einem Editor [4] in die "source" Zeile das folgende eingetragen werden:
source=madwifi_ag,wifi0,madwifi
Mit einigen Tricks kann auch die MAC-Adresse der Netzwerkkarte geändert werden. Dies kann unter anderem zu Testzwecken (WLAN-Sicherheitschecks etc.) sehr nützlich sein.
Jede MAC-Adresse ist weltweit einmalig vergeben. Sie ist eineindeutig. Wenn man diese verändert sollte man wissen was man tut.
Hierfür benötigt man zusätzlich das Paket
macchanger (universe [2])
Danach stehen folgende Befehle bereit:
wlanconfig ath0 destroy ifconfig wifi0 down macchanger -m XX:XX:XX:XX:XX:XX wifi0 ifconfig wifi0 up wlanconfig ath0 create wlandev wifi0 wlanmode sta ifconfig ath0 up
XX:XX:XX:XX:XX:XX ist dabei die neue MAC Adresse.
basiert auf Madwifi: Simple Access Point 
Hierfür die /etc/network/interfaces mit einem Editor [4] und Root-Rechten bearbeiten.
# ath0 mit den korrekten Einstellungen starten
# "manual" wird das Interface ohne TCP/IP starten (dies wird durch die Bridge herbeigeführt)
auto ath0
iface ath0 inet manual
# setzt ath0 in den AP Modus
# Dies muss hier mit rein, weil udev vorher schon ein ath0 als client erstellt
pre-up wlanconfig ath0 destroy
pre-up wlanconfig ath0 create wlandev wifi0 wlanmode ap
# entferne das ath0 device, wenn es runtergefahren wird
post-down wlanconfig ath0 destroy
# setze master mode, Kanal, und die ESSID
wireless-mode master
wireless-channel 11
wireless-essid YourESSID
# Falls du WEP benutzt schreib hier deine Adresse hin:
#wireless-key 1234-1234-1234-1234
# Die Brücke br0 erstellen
# Das benutzen von DHCP um eine IP zu bekommen usw. dürfte auch funktionieren,
# aber hier wird das ganze mit einer statischen IP für das Interface erklärt.
# Die UP wird von beiden - dem verkabelten und der Wireless Seite des Netzwerkes erreichbar sein.
auto br0
iface br0 inet static
# Zuweisen der IP Addresse, dem Subnetz und der Maske, der Broadcast Adresse und schließlich dem standard Gateway
address 192.168.0.[x]
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
# überbrücke eth0 und ath0 mit br0
bridge_ports eth0 ath0
# eth0 muss *nicht* besonders verändert werden.Auch dieser Modus ist mit dem neuen Treiber möglich. Als erstes wird der Access Point wie folgt erstellt:
wlanconfig ath1 destroy ifconfig wifi1 down wlanconfig ath1 create wlandev wifi1 wlanmode ap ifconfig wifi1 up ifconfig ath1 192.168.3.1 iwconfig ath1 essid WLAN-AP iwconfig ath1 channel 6 ifconfig ath1 up
Bis hier ist es allerdings nur möglich, eine Verbindung bis zum Access Point herzustellen. Soll auch eine IP zugewiesen werden, ist es sinnvoll, einen DHCP-Server wie DHCPD oder Dnsmasq einzusetzen. Weiterhin ist es auch möglich, mit diesen Mitteln einen Router aufzusetzen.
http://madwifi-project.org - Projektseite und Dokumentation
http://einfachsaufen.de/system/index.php?op=ViewArticle&articleId=38&blogId=1 - Workshop speziell zu Atheros 5007
Diese Revision wurde am 26. Dezember 2009 um 16:37 Uhr
von Moritz Baumann erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet:
unfreie Software, Hardware, Netzwerk
2004 – 2010 ubuntuusers.de • Einige Rechte vorbehalten