Raspbian Lite schnellerer WLAN Scan

  • Hallo,

    ich habe momentan folgendes Problem. Und zwar habe ich ein Script geschrieben, welches die Verbindungsstärke des Pi zum WLAN Accesspoint überprüft und bei zu schlechter Verbindung zunächst nach einem stärkeren WLAN Accesspoint scannt und anschließend den Pi darauf verbindet. Das hab ich gemacht, da ich mit der roaming Funktion von WPA Supplicant nicht ganz zufrieden bin und mehr Kontrolle darüber will wann und wie oft dies geschehen soll.
    Soweit funktioniert das auch alles, was mich nur stört ist, dass ich egal mit welchen Methoden verschiedene aber im Allgemeinen hohe Scanzeiten habe. Mit der WPA-Supplicant Methode über die wpa_cli liegt das im Schnitt bei 20-25 Sekunden pro scan. Bei der Methode mit iw unter Angabe der Frequenzen schaffe ich immerhin 15-17 Sekunden.
    Ich habe auch schon ein eigenes C Programm geschrieben und quasi mit Hilfe der nl80211.h Datei die entsprechenden Befehle direkt abgesendet, welches mir nochmal ca. 3-4 Sekunden erspart. Aber alles in allem bin ich noch nicht ganz damit zufrieden.
    Vor allem da ich auf meinem Smartphone eine eigene App geschrieben hab, die einen WLAN Scan innerhalb von 3-4 Sekunden ausführt. Oder auch am Computer geht der Scan wesentlich schneller vonstatten.
    Auf einem Linux(Debian Jessie) Computer dauert Beispielsweise der WLAN Scan mit iw gerade einmal 5 Sekunden (mit dem WLAN Stick vom Pi). Mit solchen Zeiten würde ich mich durchaus zufrieden geben sofern das möglich ist.

    Liegt das nun an den Gegebenheiten des PI, dass der WLAN Scan nicht schneller geht oder hat das andere Gründe?

    Mein System ist ein Raspberry Pi B+ mit dem Raspbian Jessie Lite Image vom 16.02.2017.
    Als WLAN Stick habe ich einen 5,4gHz stick von Odroid der soweit auch funktioniert.

    Grüße

    Patrick
    Automatisch zusammengefügt:
    Ok muss noch ergänzen, dass bei verbundenem WLAN der Linux PC 8-10 Sekunden braucht und auch allgemein ist anzumerken, dass alle Scanvorgänge bei verbundenem WLAN gemeint sind. Besteht keine Verbindung geht das etwas schneller.

    Einmal editiert, zuletzt von Dibbelschisser (12. Juli 2017 um 14:39)

  • Zitat von "Dibbelschisser" pid='290676' dateline='1499861699'


    ... bei verbundenem WLAN der Linux PC 8-10 Sekunden braucht ...


    Wie hast Du die Zeit für das Scannen gemessen?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Moin Dibbelschisser,

    versteh ich nicht.

    ein

    Code
    iwlist wlan0 scanning


    gibt sofort alle Ergebnisse aus. Ohne Verzögerung.

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Hallo,

    zunächst mal danke für die Antworten.

    Zitat

    Wie hast Du die Zeit für das Scannen gemessen?


    Ich habe zum einen ein kleines Skript geschrieben, welches mir die Systemzeit vor und nach dem Befehl ausgibt und zum anderen einfach mit in mein C Programm eingebunden.


    Zitat

    versteh ich nicht.

    ein
    Code:
    iwlist wlan0 scanning
    gibt sofort alle Ergebnisse aus. Ohne Verzögerung.

    Also bei mir dauert das bei nicht verbundenem WLAN ca. 10 Sekunden und mit Verbundenem WLAN Funktioniert das gar nicht. Bekomme dabei folgende Ausgabe:

    Code
    wlan0     Failed to read scan data : Resource temporarily unavailable


    Zitat

    Hallo,

    nmap -sP 192.168.2.0/24
    braucht bei mir 3 Sekunden ...

    Ruf das doch in einem Programm als System Befehl auf und Werte die Ausgabe aus.

    Grüße mojo

    werde ich mal probieren und mich nochmal melden ob es geklappt hat.

    Gruß

    Patrick

  • Also nmap zum scannen von WLAN Netzwerken finde ich nicht gut. Das Problem an der Sache ist, dass das Programm (so hab ich es verstanden) alle Teilnehmer im entsprechenden Netzwerk bzw. Adressbereich gescannt werden. Da treten dann schon die ersten Probleme auf, sobald mehr wie ein Client im Netzwerk vorhanden ist. Da müsste man schon ne Menge Arbeit reinstecken um zu erkennen, ob es sich um ein Accesspoint oder einen Client handelt(die müssten mehr oder weniger bekannt sein). Dazu kommt, dass auch hier mein Pi einige Zeit braucht bis alles gescannt ist (vielleicht liegt die Zeit daran, dass es ein RPI 1 B+ ist).

    Also nmap als Lösung zu verwenden ist eher schlecht als recht, vor allem da ich später für meine Firma ein System brauche, dass aus mehreren Pi´s als Clients besteht und auch mehrere Router vorhanden sind ist das zu viel Arbeit und beim Scan meldet mir nmap zurück, dass es 31,72 Sekunden gebraucht hat.

    Hat sonst noch jemand ne Idee womit ich den Scan beschleunigen kann. Eine Idee war z.B die Zeit, welche auf einem Channel gescannt wird zu verringern. Allerdings habe ich dazu nicht die richtigen Funktionen gefunden und weiß nicht ob das Überhaupt möglich ist.

  • Zitat von "Dibbelschisser" pid='290783' dateline='1499928328'


    Also bei mir dauert das bei nicht verbundenem WLAN ca. 10 Sekunden und mit Verbundenem WLAN Funktioniert das gar nicht. Bekomme dabei folgende Ausgabe:

    Code
    wlan0     Failed to read scan data : Resource temporarily unavailable

    Versuch mal mit sudo oder als root:

    Code
    sudo iwlist wlan0 scan

    EDIT:

    Wie ist mit verbundenem WLAN, die Ausgabe von:

    Code
    ip a


    ?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (13. Juli 2017 um 10:06)

  • Zitat von "rpi444" pid='290790' dateline='1499933098'

    Versuch mal mit sudo oder als root:

    Code
    sudo iwlist wlan0 scan


    EDIT:

    Wie ist mit verbundenem WLAN, die Ausgabe von:

    Code
    ip a


    ?


    Habe das nicht erwähnt daher mein Fehler bin bereits mit root angemeldet. Das Merkwürdige ist, dass ich sehe, dass die LED vom Stick blinkt also wahrscheinlich auch scannt. Aber nach ungefähr der Zeit (wie es auch bei den anderen Verfahren dauert also ca. 15 Sekunden) kommt dann die Meldung das die Ressource nicht verfügbar ist. Das passiert aber nur bei verbundenem WLAN ist die Verbindung getrennt klappt das auch (aber wie gesagt immer noch zu lange).

    Code
    ip a

    zeigt mir folgendes (Mac-Adressen XX)

    Wie gesagt die Verbindung klappt auch Einwand frei aber diese Scans dauern mir einfach zu lange für meine Anwendung. Und da ich auf anderen Systemen Scans von 5 Sekunden schaffe oder auch bei nicht verbundenem WLAN ebenfalls auf dem Pi 5 Sekunden schaffe muss es doch eine Möglichkeit geben weil der Fakt ob eine WLAN Verbindung besteht oder nicht macht halt auf dem Pi 9 Sekunden aus. Also ohne WLAN Verbindung 5 Sekunden Scan(Wert der zufriedenstellend ist) mit verbundenem WLAN 14 Sekunden(etwas zu hoch).

    Wenn ich bei 8-10 Sekunden lande wäre das auch noch im Rahmen aber darüber ist nicht so toll da ich den Pi später auf einem System fahren lasse, welches sich in einem Regal schnell hin und herbewegt. Daher je schneller der Scan desto besser.

  • Zitat von "Dibbelschisser" pid='290792' dateline='1499934459'


    Das Merkwürdige ist, dass ich sehe, dass die LED vom Stick blinkt also wahrscheinlich auch scannt.

    Evtl. liegt es auch am Stick.

    Wird cfg80211 verwendet? Wenn ja, dann könntest Du z. B. auch die Anzahl der zu scannenden BSS's begrenzen (wenn erwünscht):

    Code
    bss_entries_limit:limit to number of scan BSS entries (per wiphy, default 1000) (int)


    ... und testen.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Hallo,
    danke schon mal für die Geduld mit mir....

    Naja ich denke nicht das es am Stick liegt, da ich den gleichen ja am Linux Computer angeschlossen hab und da bei ca. 8 Sekunden liege.

    Ich arbeite leider noch nicht so lange mit den ganzen Bibliotheken usw. muss daher nochmal nachfragen. Also mit meinem C Programm habe ich die Netlink Bibliothek eingebunden und die nl80211 Headerdatei und nach meinem Stand ist das ja sozusagen die Schnittstelle zwischen Benutzeroberfläche und cfg also gehe ich davon aus, dass ich die cfg80211 verwende (sorry aber blicke da nicht zu 100% durch aber gebe mein bestes...).
    Ich denke aber nicht, dass das was ausmacht, da die Anzahl der zu scannenden Basisstationen ja beschränkt wird aber wenn ich nicht unter den Wert der tatsächlich vorhandenen Stationen lande wird sich das denke ich nicht auswirken.

    Ich habe noch eine Funktion in mein Programm eingebaut, mit dem ich die zu scannenden Frequenzen eingrenzen kann um die Zeit weiter zu verringern, indem ich nicht mehr alle Frequenzen scanne. Aber mir wäre schon lieber alles zu scannen.

    Es gibt auch jemanden der hat eine Funktion in die nl80211 eingebaut, welche die Scandauer pro Kanal einschränkt. Allerdings hat er das selbst gemacht und die zu ändernden Dateien habe ich auf dem Pi nicht wirklich gefunden und die Einträge in der nl80211.h sind beim Pi auch nicht vorhanden. Daher weiß ich nicht ob das überhaupt auf dem Pi möglich ist.

    Aber ich denke neben dem Reduzieren der zu scannenden Frequenzen wird das noch die einzige sinnvolle andere Möglichkeit sein.
    Natürlich lass ich mich gerne eines besseren belehren wenn jemand eine Idee hat.
    Wie gesagt ich arbeite noch nicht lange mit diesen Bibliotheken usw. auf dieser Ebene und vielleicht kennt jemand mit mehr Erfahrung eine Möglichkeit.
    Trotzdem nochmal danke für die Hilfe

  • Zitat von "Dibbelschisser" pid='290804' dateline='1499938376'


    ... cfg also gehe ich davon aus, dass ich die cfg80211 verwende (sorry aber blicke da nicht zu 100% durch aber gebe mein bestes...).
    Ich denke aber nicht, dass das was ausmacht, da die Anzahl der zu scannenden Basisstationen ja beschränkt wird aber wenn ich nicht unter den Wert der tatsächlich vorhandenen Stationen lande wird sich das denke ich nicht auswirken.

    Naja, es geht ja nur um einen Test.
    Wie sind auf deinem PI, die Ausgaben von:

    Code
    lsmod | grep -i cfg80211
    modinfo cfg80211 | grep -i parm


    ?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Der Befehl lsmod liefert folgendes:

    Code
    cfg80211              543027  2 rt2x00lib,mac80211
    rfkill                 20851  2 cfg80211

    und modinfo:

    Code
    parm:           bss_entries_limit:limit to number of scan BSS entries (per wiphy, default 1000) (int)
    parm:           ieee80211_regdom:IEEE 802.11 regulatory domain code (charp)
    parm:           cfg80211_disable_40mhz_24ghz:Disable 40MHz support in the 2.4GHz band (bool)

    Nur ne doofe Frage wie kann ich den Eintrag denn ändern also die Zahl der BSS hab da gerade keine Ahnung

  • Zitat von "Dibbelschisser" pid='290812' dateline='1499941971'


    ... wie kann ich den Eintrag denn ändern also die Zahl der BSS ...

    Z. B. mit "sudo nano /etc/modprobe.d/cfg80211.conf" (oder gleichwertig) folgenden Inhalt:

    Code
    options cfg80211 bss_entries_limit=<Anzahl der BSS's>


    in die Datei "cfg80211.conf" auf deinem PI eintragen/ergänzen und deinen PI rebooten.

    "Anzahl der BSS's" (ohne spitze Klammern) musst Du entsprechend deinen Vorstellungen eintragen/speichern (BTW: ... ich habe 10 eingetragen).

    EDIT:

    BTW: Verwendet dein Stick auch den nl80211-, oder (nur) den wext-Treiber?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (13. Juli 2017 um 12:47)

  • Habs mal auf 50 gestellt und lande bei 12-13 Sekunden also immerhin doch ca. 1 Sekunde gespart. Ich weiß zwar nicht wieso aber es bringt was :thumbs1: .

    Zitat

    BTW: Verwendet dein Stick auch den nl80211-, oder (nur) den wext-Treiber?

    Sorry aber das versteh ich irgendwie nicht ganz wie bekomme ich das raus?

  • Zitat von &quot;Dibbelschisser&quot; pid='290817' dateline='1499944238'


    Sorry aber das versteh ich irgendwie nicht ganz wie bekomme ich das raus?

    Eigentlich hast Du es schon raus bekommen, mit der Wirksamkeit der Änderung (BSS's) für cfg80211. Denn nl80211 steht zwischen cfg80211 (Kernel) und deinem scan-tool (user space).

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Zitat von &quot;Dibbelschisser&quot; pid='290821' dateline='1499945541'


    ..., dass ich nl80211 in meinem C Programm verwende.

    Evtl. kann dir der Autor von iw, bei deinem C-Programm weiterhelfen: https://git.kernel.org/pub/scm/linux/kernel/git/jberg/iw.git

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!