Schlagwort-Archive: wlan

WiFi Heatmap

Ich war auf der Suche nach einer schnellen Möglichkeit, die Wifi Qualität hier im Haus (und später evtl. auch mal an der Schule) zu erfassen.

Geht via CLI mit den folgenden Methoden:

# nmcli
nmcli d wifi

# iw
sudo iw dev wlan0 link

# wpa_cli
sudo wpa_cli -i wlan0 scan_results

# wavemon
wavemon

mit den jeweiligen Vor- und Nachteilen bei der Interpretation und Darstellung. Für den Alltag reicht mir hier nmcli.

Eine Heatmap zu erstellen wäre dann die nächste Idee, jedoch will mensch die Ergebnisse ja in hübsch – und möglichst automatisiert. Dazu fand ich die folgenden Projekte:

https://github.com/jantman/python-wifi-survey-heatmap ist schon ein wenig älter und sah mir komplexer aus, als ich es haben wollte.

Das hier https://github.com/Nischay-Pro/wifi-heat-mapper schien der einfachere kleine Bruder zu sein – also getestet.

Die Installation geht mit pip auf einem Arch flott über die Bühne. Auf einem hausinternen Serverchen dann iperf3 gestartet, damit wir einen Endpoint für die Messungen haben. Es folgt die Erstellung einer groben Skizze des zu erfassenden Stockwerkes (z.B. mit Libreoffice Draw). Dieses als PNG oder JPG wegspeichern / exportieren. Die dann folgenden Schritte (die eigentliche Messung) sind auf der Seite bei Github ausführlich beschrieben und gehen einfach von der Hand.

Die Ergebnisse sind dann … nunja … abhängig von der eigenen Geduld, die an zwei Stellen hart auf die Probe gestellt wird: Erstens dauert eine Messung gefühlte Ewigkeiten – und zweitens stürzt whm öfter mal ab. Es speichert aber alle bisherigen Messergebnisse, so dass der Verlust vor allem deswegen nervt, weil die Messung wiederholt werden muss.

Im Ergebnis tauchen dann so Sonderbarkeiten wie im Bild oben auf: Der UDP Scan zeigt ein Loch an einem Messpunkt. Macht nicht wirklich Sinn für mich.

Aber nett anzusehen sind die Bildchen und manchmal bringen sie einen ja schon zum Nachdenken:

Signalstärke

Den AP hinter der Glotze zu verstauen ist selbstverständlich doof und das oben zu sehende Resultat auch zu erwarten. Aber! Die „Heatmap“, die ich erhalte, wenn der dauerblinkende, schwarze, hässliche AP nicht hinterm TV versteckt ist, will ich mir nicht zeichnen lassen. Das Programm erfasst halt nicht den WAF.

OpenWRT und VLAN

Den schulischen APs der Reihe nach beizubringen, dass sie nun VLAN können und dass

  • auf Grau der AP verwaltet wird und hierbei seine IP vom grauen DHCP erhält,
  • Blau unser öffentliches Netz ist (HotSpot Authentifizierung),
  • auf Pink irgendwann in ferner Zukunft das Lehrernetz gefunden werden soll (mit Radius-Auth – man darf ja noch träumen)
  • und in Grün das interne Netz für die Laptops läuft, die ihre IP vom Schulserver erhalten,

war die Aufgabe. Dies auf der Oberfläche eines jeden APs einzeln zusammen zu klicken dauert viel zu lange. Also kopiert man sich die Konfiguration von einem funktionierenden AP auf alle anderen, bootet diese insgesamt zwei mal neu und voila – es tut.

Erst einmal VLAN ermöglichen:

opkg install kmod-macvlan

Dann neu booten. Mit ifconfig angesehen soll es am Ende so aussehen:

    br-blue Link encap:Ethernet HWaddr 64:70:02:78:1D:5F
    inet6 addr: fd34:cf26:d77b::1/60 Scope:Global
    inet6 addr: fe80::6670:2ff:fe78:1d5f/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:100 errors:0 dropped:0 overruns:0 frame:0
    TX packets:166 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:9114 (8.9 KiB) TX bytes:14396 (14.0 KiB)

    br-green Link encap:Ethernet HWaddr 64:70:02:78:1D:5F
    inet6 addr: fd34:cf26:d77b:10::1/60 Scope:Global
    inet6 addr: fe80::6670:2ff:fe78:1d5f/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:2354 errors:0 dropped:0 overruns:0 frame:0
    TX packets:166 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:749902 (732.3 KiB) TX bytes:14396 (14.0 KiB)

    br-grey Link encap:Ethernet HWaddr 64:70:02:78:1D:5F
    inet addr:192.168.0.139 Bcast:192.168.0.255 Mask:255.255.255.0
    inet6 addr: fd34:cf26:d77b:20::1/60 Scope:Global
    inet6 addr: fe80::6670:2ff:fe78:1d5f/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:1847 errors:0 dropped:0 overruns:0 frame:0
    TX packets:1689 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:175780 (171.6 KiB) TX bytes:431449 (421.3 KiB)

    br-pink Link encap:Ethernet HWaddr 64:70:02:78:1D:5F
    inet6 addr: fe80::6670:2ff:fe78:1d5f/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:1773 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:0 (0.0 B) TX bytes:574414 (560.9 KiB)

    eth0 Link encap:Ethernet HWaddr 64:70:02:78:1D:5F
    inet6 addr: fe80::6670:2ff:fe78:1d5f/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:9283 errors:0 dropped:167 overruns:0 frame:0
    TX packets:7976 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:1947524 (1.8 MiB) TX bytes:5061428 (4.8 MiB)
    Interrupt:4

    eth0.1 Link encap:Ethernet HWaddr 64:70:02:78:1D:5F
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:2335 errors:0 dropped:0 overruns:0 frame:0
    TX packets:1729 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:211878 (206.9 KiB) TX bytes:434729 (424.5 KiB)

    eth0.2 Link encap:Ethernet HWaddr 64:70:02:78:1D:5F
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:4566 errors:0 dropped:0 overruns:0 frame:0
    TX packets:801 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:1141302 (1.0 MiB) TX bytes:80814 (78.9 KiB)

    eth0.3 Link encap:Ethernet HWaddr 64:70:02:78:1D:5F
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:2208 errors:0 dropped:0 overruns:0 frame:0
    TX packets:3708 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:410171 (400.5 KiB) TX bytes:3944129 (3.7 MiB)

    eth0.4 Link encap:Ethernet HWaddr 64:70:02:78:1D:5F
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:1734 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:0 (0.0 B) TX bytes:569420 (556.0 KiB)

    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:65536 Metric:1
    RX packets:6 errors:0 dropped:0 overruns:0 frame:0
    TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:288 (288.0 B) TX bytes:288 (288.0 B)

    wlan0 Link encap:Ethernet HWaddr 64:70:02:78:1D:5F
    inet6 addr: fe80::6670:2ff:fe78:1d5f/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:595 errors:0 dropped:0 overruns:0 frame:0
    TX packets:2903 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:63160 (61.6 KiB) TX bytes:940426 (918.3 KiB)

    wlan0-1 Link encap:Ethernet HWaddr 66:70:02:78:1D:5F
    inet6 addr: fe80::6470:2ff:fe78:1d5f/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:3617 errors:0 dropped:0 overruns:0 frame:0
    TX packets:1995 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:3938021 (3.7 MiB) TX bytes:460510 (449.7 KiB)

Einmal /etc/config/network anpassen:

    config interface 'loopback'
    option ifname 'lo'
    option proto 'static'
    option ipaddr '127.0.0.1'
    option netmask '255.0.0.0'

    config globals 'globals'
    option ula_prefix 'fd34:cf26:d77b::/48'

    config interface 'grey'
    option ifname 'eth0.1'
    option type 'bridge'
    option proto 'dhcp'
    option ip6assign '60'

    config interface 'green'
    option ifname 'eth0.2'
    option type 'bridge'
    option ip6assign '60'

    config interface 'blue'
    option ifname 'eth0.3'
    option type 'bridge'
    option ip6assign '60'

    config interface 'pink'
    option ifname 'eth0.4'
    option type 'bridge'
    option proto 'dhcp'
    option ip6assign '60'

    config switch
    option name 'switch0'
    option reset '1'
    option enable_vlan '1'

    config switch_vlan
    option device 'switch0'
    option vlan '1'
    option vid '1
    option ports '0t 1t 2t 3t 4t 5t'

    config switch_vlan
    option device 'switch0'
    option vlan '2'
    option vid '2'
    option ports '0t 1t 2t 3t 4t 5t'

    config switch_vlan
    option device 'switch0'
    option vlan '3'
    option vid '3'
    option ports '0t 1t 2t 3t 4t 5t'

    config switch_vlan
    option device 'switch0'
    option vlan '4'
    option vid '4'
    option ports '0t 1t 2t 3t 4t 5t'

Und /etc/config/wireless anpassen:

    config wifi-device 'radio0'
    option type 'mac80211'
    option hwmode '11ng'
    option path 'platform/ath9k'
    list ht_capab 'SHORT-GI-40'
    list ht_capab 'DSSS_CCK-40'
    option country 'US'
    option txpower '27'
    option channel '4'

    config wifi-iface
    option device 'radio0'
    option network 'green'
    option mode 'ap'
    option ssid 'intern'
    option encryption 'psk2'
    option key 'geheim'

    config wifi-iface
    option device 'radio0'
    option mode 'ap'
    option encryption 'none'
    option ssid 'public'
    option network 'blue'

Die DNS Dienste auf dem AP wegwerfen, weil der DNS zentral läuft (auf Schulserver oder auf dem grauen Server für die Infrastruktur):

/etc/init.d/dnsmasq stop
killall dnsmasq # nur zur Sicherheit
/etc/init.d/dnsmasq disable

Dann noch einmal neu booten und vor Ort testen, nachdem man die VLAN Einstellungen auch auf den Switches so angepasst hat, dass man seinen AP wieder findet.

Fedora 15 und BCM4312

Natty zeigte sich ja schon hübsch zickig bei der Inbetriebnahme der WLan-Karte auf meinem ollen Asus. Fedora 15 war auch nicht besser, als es darum ging, die BCM4312 Karte auf meinem Dell Vostro 1510 zum Laufen zu bringen.

Mit lspci meldet sich diese wie folgt:

Network controller: Broadcom Corporation BCM4312 802.11b/g LP-PHY (rev 01)

Die meisten von mir gefundenen Anleitungen im Netz beziehen sich auf die Installation der Firmware für diese Karte über die inoffiziellen Repos von F15. Der im Fedora-Forum beschriebene Weg ohne derartige Erweiterungen gelang hier aber auch:

yum install b43-fwcutter
wget http://downloads.openwrt.org/sources/broadcom-wl-4.150.10.5.tar.bz2
tar xjf broadcom-wl-4.150.10.5.tar.bz2
cd broadcom-wl-4.150.10.5/driver/
b43-fwcutter -w /lib/firmware/ wl_apsta_mimo.o

… und schon ist die Meldung im Network-Manager weg, dass die Firmware fehlt. Ich musste nicht einmal neu booten, um meine Wlan-Karte in Betrieb zu nehmen. Trotzdem werde ich beim Gerätekauf in Zukunft verstärkt darauf achten, welche Chip im Laptop sitzt.

Natty und BCM4318

In meinem ollen Asus steckt – so lspci – ein Broadcom WLAN Chip:

Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (rev 02)

Dieser wird von Natty Beta 1 leider nicht automatisiert mit Firmware versorgt, wie dmesg mitteilt:

[   24.971640] b43-phy0 ERROR: Firmware file „b43/ucode5.fw“ not found
[   24.971646] b43-phy0 ERROR: Firmware file „b43-open/ucode5.fw“ not found
[   24.971650] b43-phy0 ERROR: You must go to http://wireless.kernel.org/en/users/Drivers/b43#devicefirmware and download the correct firmware for this driver version. Please carefully read all instructions on this website.

Die empfohlene Seite auf kernel.org hat mich eher erschreckt: Durch diese Prozedur wollte ich bei einer Beta nicht durch, wenn die Karte bei Maverick ja noch ohne Probleme lief. Die Entscheidung schien mir eher zu sein, ob ich noch ein paar Tage warten sollte (Selbstheilung durch Updates so zu sagen) oder tätig werden wollte.

Also gegooglet: Die in vielen Foren genannte Lösung durch Installation von b43-fwcutter führte ebenfalls nicht zum Ziel – schließlich muss das Firmwarepäckchen da sein, damit b43-fwcutter diese rausschneiden kann. Und das setzt voraus, dass Natty von selbst erkennt, dass es sich das Paket firmware-b43-installer holen müsste.

Ich hab demnach mit

sudo apt-get install firmware-b43-installer

Natty auf die Sprünge geholfen (und mir auch firmware-linux-nonfree händisch geholt, das allerdings aus meiner Sicht keinen Beitrag zur Lösung bringt), einmal neu gebootet und … WLAN ist da. Schön.