Wiki

WLAN/MadWifi

ubuntuusers.de » Wiki » WLAN » MadWifi

MadWifi

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Madwifi {en} ist das Treiberprojekt für Atheros Chip-basierende WLAN-Karten, deren Anleitung für Ubuntu {en} im Netz verfügbar ist. Der Treiber unterstützt nicht nur den normalen Client-Modus, sondern auch einige andere nette Features.

Installation

Aus den Quellen

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])

Manuell

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 {en} 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 

Achtung!

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 {en} .

Installation bei Atheros Karten mit dem Chipsatz AR5007EG

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.

  1. "System -> Hardware-Treiber" Häkchen aus "Atheros Hardware Access Layer" nehmen

  2. Das Treiberpaket {dl} runterladen und an bliebiger Stelle entpacken

  3. Per Terminal in das Verzeichnis wechseln

  4. Danach muss man den Treiber kompilieren und installieren

    make
    sudo make install 
  5. Neustarten

Danach sollten die gefundenen Netze verfügbar sein. Bei einem Kernel Update muss man die Schritte 3 -5 wiederholen.

Intrepid

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.

Besonderheiten an madwifi-ng

Artikel für fortgeschrittene Anwender

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", ...!

aktuellen Treiber kompilieren

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 {de} im Forum.

Interface einrichten

Methode I

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 

Methode 2 (Alternative/Provisorisch)

Hinweis:

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.

Achtung!

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.).

Experten-Info:

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 scannen

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

MAC-Adresse ändern

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.

Achtung!

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.

Access Point einrichten

basiert auf Madwifi: Simple Access Point {en}

Einfache Methode

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.

Komfortable Methode

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.


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

Passwort vergessen?