Benutzer Diskussion:Armin

Aus FunkFeuer Wiki
Wechseln zu: Navigation, Suche

Das ist ein Entwurf für eine Messanleitung mit dem "Testi" unter Ubuntu Lucid.

Bei den Montagstreffen kannst Du Dir - wenn das Messgerät gerade nicht unterwegs ist - ein Messgerät ausborgen ("Testi"). "Testi" besteht aus einer Antenne mit einem USB Ausgang, der direkt an Deinen Computer angeschlossen werden kann. Damit kannst Du noch, bevor Du Dein eigenes Equipment besorgst, genau ausmessen zu welchen Funkfeuer Knoten Du von deinem Haus aus die beste Verbindung hast.

Um unter Ubuntu zu messen sind die folgenden Schritte notwendig:

1) Das Gerät konfigurieren

2) Ein Messprogramm installieren

3) Tips für's Messen


Im Folgenden schildere ich meine Erfahrungen beim Aufbau des Knotens Toe14. Für die Messungen habe ich ein Notebook mit Ubuntu 10.04 (Lucid Lynx) verwendet. Für die Installation und Vorbereitung habe ich einen Abend, für die Messungen & Auswertungen in etwa eine Stunde gebraucht. Ich hoffe mit der folgenden Anleitung geht's schneller.

1) Gerät konfigurieren:

Zuerst die gute Nachricht: Wenn man das Gerät im laufenden Betrieb an einen freien USB-Steckplatz anschließt, wird es automatisch erkannt. Das kannst Du im Terminal mit "iwconfig" überprüfen, dort sollte ein neuer WLAN-Anschluss erscheinen, der ungefähr wie folgt aussieht:

:$ iwconfig
...
wlan1     RTxx70 Wireless  ESSID:""  Nickname:"rt2800usb"
          Mode:Auto  Frequency=2.462 GHz  Access Point: 68:7F:74:15:DF:C9   
          Bit Rate=1 Mb/s   
          RTS thr:off   Fragment thr:off
          Link Quality=90/100  Signal level:-71 dBm  Noise level:-83 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Nun die schlechte Nachricht: Unter Ubuntu Lucid wird leider standardmäßig ein Treiber installiert, der für das Gerät nicht einwandfrei funktioniert. (z.B.: rt2800usb.ko). Deshalb muss der richtige Treiber nachinstalliet werden. Dieser ist rt3070sta.ko. Die Installationsanleitung findest Du unter [[1]] bzw. dort verlinkt [[2]]. Leider ist das Makefile des Treibers nicht voll angepasst, aus diesem Grund sind ein paar kleine Anpassungen beim Kompilieren und Installieren notwendig (bei mir waren es: RT2870STA.dat umbenennen in RT3070STA.dat und den symbolische für RT2870STA setzen wie in [1] beschrieben). Nach der Installation ("sudo make install" ohne Fehlermeldung) ist es notwendig den alten Treiber auszusperren. Dazu am besten in der Datei /etc/modprobe.d/blacklist.conf einen Blacklist-Eintrag für den alten Treiber (also z.B.: "blacklist rt2800usb" als letzte Zeile) hinzufügen. Nach einem Neustart kannst Du die Installation mittels "modprobe -l rt*" überprüfen. Der Terminal-Output muss die folgende Zeile beinhalten:

:$ modprobe -l rt*
...
kernel/drivers/net/wireless/rt3070sta.ko

Wenn Du nun die Antenne wieder an einen freien USB.Port einsteckst, liefert dmesg hoffentlich einen Output, der ähnliche Zeilen wie folgt beeinhaltet:

:$ dmesg
...
[ 1469.157064] usb 1-4: new high speed USB device using ehci_hcd and address 3
[ 1469.307217] usb 1-4: configuration #1 chosen from 1 choice
[ 1469.326134] rt2870sta: module is from the staging directory, the quality is unknown, you have been warned.
[ 1469.344307] rtusb init --->
[ 1469.344706] 
[ 1469.344709] 
[ 1469.344711] === pAd = fa68d000, size = 566748 ===
[ 1469.344713] 
[ 1469.344718] <-- RTMPAllocAdapterBlock, Status=0
[ 1469.348412] usbcore: registered new interface driver rt2870
[ 1469.356533] rt3070sta: Unknown symbol usb_alloc_urb
[ 1469.356831] rt3070sta: Unknown symbol usb_free_urb
[ 1469.357742] rt3070sta: Unknown symbol usb_register_driver
[ 1469.358384] rt3070sta: Unknown symbol usb_put_dev
[ 1469.358625] rt3070sta: Unknown symbol usb_get_dev
[ 1469.359095] rt3070sta: Unknown symbol usb_submit_urb
[ 1469.360176] rt3070sta: Unknown symbol usb_control_msg
[ 1469.360971] rt3070sta: Unknown symbol usb_deregister
[ 1469.362080] rt3070sta: Unknown symbol usb_kill_urb
[ 1469.362346] rt3070sta: Unknown symbol usb_buffer_free
[ 1469.363407] rt3070sta: Unknown symbol usb_buffer_alloc
[ 1469.679085] <-- RTMPAllocTxRxRingMemory, Status=0
[ 1469.681587] -->RTUSBVenderReset
[ 1469.681710] <--RTUSBVenderReset
[ 1469.977522] I/F(wlan0) Key1Str is Invalid key length! KeyLen = 0!
[ 1469.977578] I/F(wlan0) Key2Str is Invalid key length! KeyLen = 0!
[ 1469.977632] I/F(wlan0) Key3Str is Invalid key length! KeyLen = 0!
[ 1469.977687] I/F(wlan0) Key4Str is Invalid key length! KeyLen = 0!
[ 1469.979793] 1. Phy Mode = 5
[ 1469.979799] 2. Phy Mode = 5
[ 1470.045633] RTMPSetPhyMode: channel is out of range, use first channel=1 
[ 1470.090736] 3. Phy Mode = 9
[ 1470.108926] MCS Set = ff 00 00 00 01
[ 1470.193828] <==== RTMPInitialize, Status=0 

Und fertig...zwar nicht ganz sauber (wie man an dmesg sieht), zum Messen reichts aber!

2) Ein Messprogramm installieren

Zum Messen verwendet man am besten Wireshark. Dieses Programm kann bequem über das Ubuntu Software Center installiert werden. Wireshark benötigt zum Zugriff auf die Devices Admin-Rechte. Deswegen aus dem Terminal starten:

:$ sudo wireshark

Hinweise zum Einrichten der Antenne für die Messung mit Wireshark gibt's unter: [3]. Zusätzlich ist es wichtig, dass alle anderen Prozesse, die die Interfaces benutzen abgedreht werden. Einer dieser Prozesse ist der Network Manager. Zum Deaktivieren unter Gnome am besten das Netmanager-Applet (Antennensymbil) im Panel rechts oben (neben der Uhrzeit) rechtsklicken und das Häkchen bei "Netzwerk aktivieren" entfernen.

3) Tips für's Messen:

3.1. Die Vorderseite von "Testi" ist die unbeschriftete Seite. Das Gerät ist so polarisiert, dass man vertikale Netze misst, wenn es auf der dafür vorgesehenen Fläche steht. Zusätzlich sollte man auch die horizontalen Netze messen (Antenne 90° gedreht halten)

3.2. Wenn das neue Netzwerk-Interface in Wireshark nicht für Messungen verfügbar ist, liegt das zumeinst daran, dass es sich nicht im Monitor-Mode befindet. In den Monitor Mode kann man das Interface im Terminal wechseln: (folgendes Besipiel für Interface "wlan1")

:$ sudo iwconfig wlan1 mode monitor

3.3. Wireshark musst standardmäßig nur auf einem Kanal. Den Kanal kann man im Terminal wechseln. Folgender Befehl wechselt Interfaced wlan 1 auf Kanal 4:

:$ sudo iwconfig wlan1 Channel 4

Eine Kanalliste für die Wiener Funkfeuer-Netze findest Du unter [[4]]

3.4. Das Messprotokoll kann in Wireshark gefiltert werden. Für die Funkfeuer-Messung ist es sinnvoll, das Messprotokoll auf OLSR-Paktete zu filtern. Dazu kann in der Filter-Zeile ein neuer Filter "OLSR Optimized Link State Routing Protocol" mit der Bedingung "is present" angewendet werden.

3.5. Um herauszufinden, von welchen Funkfeuer-Knoten die gemessenen Pakete kommen, kann die Quell-IP Adresse verwendet werden. Dieses findet man im Datenpaket im Abschnitt "Internet Protokoll" im Feld "Source" (ip.src). Da es sich bei Funkfeuer um statische IP-Adressen handelt kann man die Adresse direkt in einen Web-Browser in die Adress-Leiste eintragen. Daraufhin wird man auf die Homepage des entsprechenden Routers weitergeleitet. Dort findet man Kontakt und technische Informationen zu dem Knoten.

3.6. Da die Sequenznummer von OLSR-Pakteten pro Node jeweils durchgängig aufsteigend ist, kann man mit dieser Nummer die Linkqualität abschätzen. Die Sequenznummer findet man im Paket-Segment "Optimized Link State Routing Protocol" im Feld "Packet Sequence Number". Wenn die Sequenznummern der Datenpakete von einer Quelle ohne Unterbrechungen aufsteigen, dann ist der Paketverlust niedrig und damit die Linkqualität gut.