[Berlin-wireless] Kleines Madwifi-Ad-Hoc-Howto

onelektra onelektra
Di Feb 28 14:36:03 CET 2006


Hallo -

 > das problem bei dem madwifi ist, das wenn du mit
 >
 > wlanconfig ath0 create wlandev wifi0 wlanmode adhoc
 >
 > und
 >
 > ifconfig ath0 up ,
 > das device anlegst erstmal eine eigene bssid setzt,
 > und das ist der knackpunkt, entweder deine karte assoziiert sich mit
 > deinem netz in den naechsten paar sekunden oder du hast einen split.
 > wenn du jetzt die carte mit
 > iwconfig ath0 ap 02:02:AC:C6:9F:5A
 > auf die richtige bssid setzt kann es sein, das deine nachbarn schon die
 > zufaellige bssid uebernommen haben, weil der madwifi auch einen aelteren
 > timestamp gesetzt hat.


Erstmal im Managed Mode unassoziiert scannen, BSSID merken, BSSID 
setzen, dann erst die Karte für ESSID, Kanal und so weiter konfigurieren 
verursacht kein Cellsplitting.

Hier aus passendem Anlass mal ein aktuelles

##################################
# Kleines Madwifi-Ad-Hoc-Howto...#
##################################

Getestet mit aktuellem Madwifi Treiber madwifi-ng-r1456-20060225 und 
Kernel 2.6.15.4-Meshlinux.

Nachdem die Karte initialisiert wurde legt der Madwifi ein Interface im 
Managed Mode an. Assoziieren tut die Karte sich einstweilen nicht, auch 
nicht mit einem AP. Der Treiber lädt sich selbständig oder wird manuell 
geladen mit

modprobe ath_pci <enter>

Übrigends kann man den Treiber mit dem passenden Country-Code laden, 
damit alle 13 Kanäle zur Verfügung stehen, die lokal erlaubt sind. Sonst 
gehen im 2.4 GHz-Band nur die Kanäle 1-11, die in den USA erlaubt sind.

modprobe ath_pci countrycode=256 <enter>

Die Syntax des zum Treiber zugehörigen Steuerungsutilities *wlanconfig* 
enthält jede Menge blabla was in unnötige Tipperei ausartet - aber sei 
es drum. Der Treiber ist extrem vielseitig. Am besten legt man eine 
kleine Batchdatei an.

Jetzt gehen wir aber erstmal zu Fuss ins Ad-Hoc-Netz...

Nach dem Einstecken der Karte präsentiert sich die Karte, wenn man mit

iwconfig ath0 <enter>

nachschaut, so:

ath0      IEEE 802.11b  ESSID:""
           Mode:Managed  Channel:0  Access Point: 00:00:00:00:00:00
           Bit Rate:0 kb/s   Tx-Power:50 dBm   Sensitivity=0/3
           Retry:off   RTS thr:off   Fragment thr:off
           Encryption key:off
           Power Management:off
           Link Quality=0/94  Signal level=-95 dBm  Noise level=-95 dBm
           Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
           Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Damit die Karte irgendetwas unternimmt muss man mit

ifconfig ath0 up <press enter>

die Karte einschalten. Tut man das, fängt sie an zu scannen. Bei meiner 
Karte tut sie das im 2.4 und 5 GHz-Bereich. Nach einer Weile kann man 
das Ergebnis der Suche abfragen. Angezeigt werden alle Netze in allen 
Betriebsarten.

iwlist ath0 scan <press enter>

ath0      Scan completed :
           Cell 01 - Address: BA:0A:79:51:9D:17
                     ESSID:"olsr.freifunk.net"
                     Mode:Ad-Hoc
                     Frequency:2.457 GHz (Channel 10)
                     Quality=11/94 Signallevel=-84 dBm Noiselevel=-95 dBm
                     Encryption key:off
                     Bit Rate:1 Mb/s
                     Bit Rate:2 Mb/s
                     Bit Rate:5.5 Mb/s
                     Bit Rate:11 Mb/s
                     Extra:bcn_int=100
           Cell 02 - Address: 00:0F:B5:A2:E2:CC
                     ESSID:"Toysi"
                     Mode:Master
                     Frequency:2.462 GHz (Channel 11)
                     Quality=5/94 Signallevel=-90 dBm Noise level=-95 dBm
                     Encryption key:on
                     Bit Rate:1 Mb/s
                     Bit Rate:2 Mb/s
                     Bit Rate:5.5 Mb/s
                     Bit Rate:11 Mb/s

                     Extra:bcn_int=100


Leider ist hier mal wieder offensichtlich Cellsplitting im Gange. Sei es 
drum - wir werden uns jetzt damit assoziieren. Es juckt gewaltig in den 
Fingern dem Amoklauf von verrückten Treibern jetzt ein Ende zu setzen. 
Wie gesagt, der Madwifi-Treiber ist sehr vielseitig und man kann an 
allen Ecken und Enden drehen.

Leider ist der Madwifi deshalb auch fürchterlich komplex zu bedienen.

Ein gewohntes
iwconfig ath0 mode ad-hoc <press enter>
geht somit auch daneben:

Error for wireless request "Set Mode" (8B06) :
SET failed on device ath0 ; Invalid argument.

Ad-Hoc geht also nicht - das ist ziemlich wild!

Es wird gleich noch viel wilder:

Das übliche
iwconfig <press enter>
spuckt noch etwas viel absurderes aus...

Planet:~# iwconfig
lo        no wireless extensions.

wifi0     no wireless extensions.

ath0      IEEE 802.11g  ESSID:""
           Mode:Managed  Frequency:2.427 GHz  Access Point: 
00:00:00:00:00:00
           Bit Rate:0 kb/s   Tx-Power:16 dBm   Sensitivity=0/3
           Retry:off   RTS thr:off   Fragment thr:off
           Encryption key:off
           Power Management:off
           Link Quality=0/94  Signal level=-95 dBm  Noise level=-95 dBm
           Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
           Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Da gibt es ein Wifi-Interface ohne wireless extensions?! Wifi ab sofort 
nur noch mit Draht - oderwassolldas?!

Madwifi unterstützt Virtuelle Accesspoints (VAPs) - diese heissen ath0, 
ath1, ath2, ath3 und so weiter. Zu einer einzigen Karte kann man 
beliebig viele Virtuelle Accesspoints anlegen - und gleichzeitig auch 
VAPs als Clients laufen lassen. Aber Accesspoint _und_ Client _und_ 
gleichzeitig Ad-Hoc-Station geht nicht - wie es jetzt bestimmt schon 
einige gehofft haben...

Diese VAPs sind dem wifi0-Interface zugeordnet. Hat man eine zweite 
Atheros-Karte im System gibt es dann auch wifi1 und so weiter.

Grundsätzlich legt Madwifi beim Laden des Treibers ein Client-Interface 
an. Angeblich soll man beim Laden des Treibers auch gleich ein VAP im 
Ad-Hoc-Modus erzeugen - das geht aber in meiner Version noch nicht. 
Stattdessen hängt sich der Treiber auf und das wifi0 existiert nicht.

Als erstes wird jetzt das existierende VAP ath0 gelöscht.

wlanconfig ath0 destroy

Prüft man nun mit *iwconfig* nach, ist ath0 verschwunden.

Jetzt kann ein neues ath0-Interface für ad-hoc angelegt werden.

wlanconfig ath0 create wlandev wifi0 wlanmode adhoc <enter>

Der Befehl gibt ein schlichtes *ath0* zurück.

Mal nachschauen mit

iwconfig ath0 <enter>

ath0      IEEE 802.11a  ESSID:""
           Mode:Ad-Hoc  Channel:0  Cell: 00:00:00:00:00:00
           Bit Rate:0 kb/s   Tx-Power:16 dBm   Sensitivity=0/3
           Retry:off   RTS thr:off   Fragment thr:off
           Encryption key:off
           Power Management:off
           Link Quality=0/94  Signal level=-95 dBm  Noise level=-95 dBm
           Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
           Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Bingo!

Bislang war der Madwifi für Cellsplitting berüchtigt, und es braucht 
eine einzige BSSID auf allen Karten mit derselben ESSID und auf dem 
selben Kanal. Sonst entstehen lauter kleine, zersplitterte Wlan-Inselchen.

Ich schlage vor baldmöglichst die BSSID mit der Schraubzwinge 
festzulegen. Die verirrten Karten können sich auf sonstwas einigen - 
unser Interface bleibt ab sofort in der Spur! Wer nicht mit uns 
freifunzt, funkt halt mit anderen, aber sorgt nicht mehr für Konfusion 
im Olsrexperiment.

Inzwischen hat sich an meinem Standort die BSSID schon wieder geändert...

  Cell 06 - Address: 56:ED:C3:AA:C5:53
                     ESSID:"olsr.freifunk.net"
                     Protocol:IEEE 802.11b
                     Mode:Ad-Hoc
                     Channel:10
                     Encryption key:off
                     Bit Rate:11 Mb/s
                     Extra: Rates (Mb/s): 1 2 5.5 11
                     Quality=50/100  Signal level=-71 dBm
                     Extra: Last beacon: 12ms ago

Grrrr...

Eigentlich müsste man sich jetzt mit dem Kommando

iwconfig ap 56:ED:C3:AA:C5:53

auf die bestehende BSSID festlegen. Aber damit würde man den idiotischen 
Zustand verfestigen und noch mehr Konfusion ins Netz bringen wenn sich 
das wilde Treiben wieder zu einer anderen BSSID verirrt.

Ich schlage vor wir setzen auf allen Interfaces auf denen das geht mit 
der Schraubzwinge diese hübsche BSSID:

iwconfig ath0 ap 02:CA:FF:EE:BA:BE <enter>

Danach erst wird das Radio der Karte programmiert:

iwconfig ath0 essid olsr.freifunk.net mode ad-hoc rts 256 channel 10

Und erst jetzt wird losgefunkt:

ifconfig ath0 104.XXX.XXX.XXX up


Verwendet für den Test habe Ich die No-name Cardbus-Karte die es für 
kleines Geld auf dem WhatTheHack gab. Einige haben sich die damals dort 
geleistet. Mit dem neuen Treiber rockt das Ding. In meinem Wagen _unter_ 
dem Tisch macht die Karte noch stabile 150 kByte/sec zu dem WRT54G 200 
Meter weiter!!! Dazwischen sitzt ein metallbeplanktes Hallendach mitten 
in der Fresnelzone. Sichtverbindung gibt es keine - die Wand meines 
Wagens ist dazwischen. Keine meiner Karten bekommt hier am allerbesten 
Standort ohne Dosenantenne eine Übertragung hin, bestenfalls direkt am 
Fenster in die Richtung gibt es mal ein zufällig erfolgreich 
übertragenes ICMP-Päckchen... Die Noname-Atheros-Karte macht stattdessen 
150 kByte _unter_ dem Tisch wenn Ich den berüchtigten Download aus 
/dev/zero mache.

Auf dem Bett sind es dann 300 KByte/sec - keine Sichtverbindung, eine 
Wand mit Regal voller Bücher und elektronischem Krimskrams dazwischen.

Als nächstes bin Ich Ad-Hoc eine Station weitergehüpft und habe von der 
104.130.1.67 auf der Zwingli mir gaaanz viele Nullen gesaugt. Immer noch 
148 kByte/sec. Und stabil. Ziemlich viele Megabytes Nullen - und nix 
ruckelt oder zuckt. Wow! Also wer einige Megabyte Nullen haben möchte - 
dem kann Ich sie gerne zuschicken ;-)

cu elektra




-------------- nächster Teil --------------
_______________________________________________
Berlin mailing list
Berlin at olsrexperiment.de
https://www.olsrexperiment.de/cgi-bin/mailman/listinfo/berlin




Mehr Informationen über die Mailingliste Berlin