Raspberry Pi: WLAN-Verbindung automatisch wiederherstellen

rasp_logoBeim Verbinden eines Raspberry PI per WLAN-Adapter gibt es häufig Schwierigkeiten, eine verlorene Verbindung automatisch wieder herzustellen. Eine einfache Lösung kann dieses Problem effektiv und dauerhaft beseitigen.

Über die eingebaute Ethernet-Schnittstelle lässt sich ein Raspberry Pi schnell und einfach ins Netz bringen. Wer das kleine Kästchen aber abseits von Netzwerkanschlüssen betreiben will, kommt um einen WLAN-Adapter nicht herum. Auch das ist dank USB-Anschluss kein größeres Problem. Verwendet man einen USB-Adapter wie etwa den Edimax EW-7811Un, geht es sogar besonders einfach. Die gängigen Raspberry Pi-Images bringen die Treiber dafür bereits mit, so dass man den Stick nur einstecken und die WLAN-Konfiguration vornehmen muss. Soweit alles kein Problem und schon läuft der Raspberry Pi per Drahtlosnetz.

WLAN nach Verbindungsabbrüchen wiederherstellen

In der Praxis ergibt sich allerdings ein Problem: Wann immer der Raspberry Pi die Verbindung zum WLAN-Router verliert – etwa weil die Verbindung aufgrund der Entfernung etwas instabil ist, weil der Router zwischenzeitlich neu gestartet wird oder auch wenn man die WLAN-Verbindung nachts vorübergehend deaktiviert – erfolgt kein automatisches Wiederherstellen der Drahtlosverbindung, wenn der Router wieder erreichbar ist. Statt dessen deaktiviert der Raspberry Pi den WLAN-Adapter, wenn die Verbindung einmal verloren gegangen ist. Es bleibt dann nur, den Netzwerkdienst des Raspberry Pi zurückzusetzen (aber wie, ohne Verbindung?), ein Netzwerkkabel einzustecken oder den Raspberry Pi neu zu starten (im Zweifelsfall auf die harte Tour: ein- und wieder ausschalten). Auf Dauer kann das aber keine Lösung sein.

wlanSchaut man sich wegen dieses Problems ein wenig im Netz um, findet man alle möglichen Lösungen. Manche empfehlen das Installieren einer zusätzlichen Software wie wicd. Andere basteln sich komplexe Eigenlösungen, bei denen im Wesentlichen ein Skript regelmäßig überprüft, ob noch eine Netzwerkverbindung besteht und andernfalls die Netzwerkschnittstelle zurücksetzt. Das alles funktioniert im Zweifelsfall auch, ist aber unnötig umständlich und komplex. Ich habe bei mir die folgende Lösung umgesetzt und damit eine stabile, sich bei Bedarf selbst wiederherstellende WLAN-Verbindung erreicht.

[raspberrypi]

WLAN-Verbindung per ifupdown wieder herstellen

Diese Lösung setzt voraus, dass die WLAN-Verbindung bereits erfolgreich mittels wpa_supplicant konfiguriert wurde und zumindest bei einem Neustart des Raspberry Pi (bzw. dessen Netzwerk-Schnittstelle) erfolgreich hergestellt wird. Dann sind nur die folgenden Schritte (ggf. mit root-Rechten) erforderlich:

  1. Wechseln Sie in das Verzeichnis /etc/ifplugd/action.d/ – cd /etc/ifplugd/action.d
  2. Benennen Sie hier die Datei ifupdown in ifupdown.original um – mv ifupdown ifupdown.original. Dadurch wird eine Sicherheitskopie der ursprünglichen Datei erstellt, so dass man später ggf. ganz einfach zum Urzustand zurückkehren kann.
  3. Kopieren Sie dann die Datei /etc/wpa_supplicant/ifupdown.sh als ifupdown in das aktuelle Verzeichnis – cp /etc/wpa_supplicant/ifupdown.sh ./ifupdown. Dadurch wird die bisherige ifupdown durch eine neue Version ersetzt, welche das WLAN-Netzwerk nach einem Verbindungsverlust automatisch wieder reaktivieren kann.
  4. Nun muss der Raspberry Pi einmal neu gestartet werden: sudo reboot, um die Konfigurationsänderung zu aktivieren.

Das war es auch schon. In Zukunft schaltet der Raspberry Pi den WLAN-Adapter nicht mehr ab, wenn er die Drahtlosverbindung verliert. Statt dessen wird in diesem Fall alle paar Sekunden versucht, den Kontakt zum WLAN wieder herzustellen. Ist der Router wieder erreichbar, wird die Verbindung deshalb in kürzester Zeit (erfahrungsgemäß ca. 30 – 60 Sekunden) wieder hergestellt. Ich hoffe, diese Anleitung hilft auch anderen, das leidige Wiederverbindungsproblem in den Griff zu bekommen.

Nachtrag: Den Eingriff rückgängig machen
Wie einige Leser völlig richtig angemerkt haben, muss man diese Maßnahme rückgängig machen, wenn man den Raspberry Pi wieder per Ethernet-Anschluss ins Netzwerk holen will: Im Verzeichnis /etc/ifplugd/action.d/ mit rm ifupdown die WLAN-Version der Datei löschen und mit cp ifupdown.original ifupdown die erstellte Sicherheitskopie zurückspielen.

Verwenden Sie eine andere Lösung dafür, die noch einfacher oder besser ist? Dann freue ich mich über einen Hinweis per Kommentarfunktion.

20 Antworten

  1. joe-eis sagt:

    Ich pinge per crontab regelmäßig den Router an und wenn die verbindung weg ist wird das Wlan neu gestartet.
    Dazu Paket arp-scan nachinstallieren.

    — schnipp —
    #!/bin/bash

    LOG=“/home/pi/log“

    ND=`ip -p address show|egrep ’state UP‘|tr “ “ „:“|cut -d: -f3|head -1`
    GW=`ip route|head -1 |grep default|cut -d“ “ -f3`
    PTL=`ping -c1 $GW|grep ‚packets transmitted‘|tr “ “ „:“|cut -d: -f6|cut -d% -f1`

    # echo „Network Device is $ND“ # debug
    # echo „Gateway is $GW“ # debug
    # echo „Packets transmitting loss ist $PTL %“ # debug

    if [ „$ND“ == „wlan0″ ]; then
    # echo „Network device is $ND“

    if [ „$PTL“ -ne 0 ]; then

    VDATE=`date ‚+%Y-%m-%d_%H:%M:%S‘`
    echo „$VDATE Network device is not reachable“ >> $LOG/wlan0.log

    sudo ifconfig wlan0 down
    sleep 5
    sudo ifconfig wlan0 up
    #else # debug
    # VDATE=`date ‚+%Y-%m-%d_%H:%M:%S‘`
    # echo „$VDATE Network device is reachable“ >> $LOG/wlan0.log
    fi
    fi
    — schnapp –

  2. Michael B. sagt:

    Habe das Problem unter Buster: hier gibt es offenbar keine Datei /etc/ifplugd/action.d/ifupdown mehr. Zumindest ist bei mir keine solche Datei vorhanden. Das Kopieren der /etc/wpa_supplicant/ifupdown.sh hierher hat auch keinen Effekt. Nicht einmal die LAN-Schnittstelle wird gestört. Diese geht allerdings auch in ein anderes Netz und hat eine feste IP-Adresse.

  3. Kowkase sagt:

    das selbe Problem habe auch ich. Ich kann dieses Verzeichnis weder im Terminal noch im Dateimanager sehe. Insofern kommt auch bei mir die obige Fehlermeldung. Ich habe die Version 18.8. Hat sich da an den Verzeichnissen vielleicht was geändert?

    Vielen Dank schonml

  4. Ich sagt:

    Macht den Punkt hinter cd /etc/ifplugd/action.d.weg …

  5. Stefan sagt:

    in dem Verzeichnis ist nur eine Datei names action_wpa ..?!

  6. Doro sagt:

    Hallo, las mal den Punkt weg nach :
    cd: /etc/ifplugd/action.d.

    so:
    cd: /etc/ifplugd/action.d

  7. Christian sagt:

    Hi,

    vielen Dank für diesen Tipp.
    Leider sind meine W-Lan Probleme nicht vom Tisch.
    Der Pi läuft relativ lange sehr gut und bekommt irgendwann folgenden Fehler:
    ifplugd(wlan0)[1663]: Link beat lost.

    Manchmal scheint er wieder eine verbindung zu finden, manchmal nicht.
    Hat jemand von euch ein ähnliches Problem bzw. einen Tipp?

  8. McHol sagt:

    Wie PittyBoy habe auch ich folgendes Problem festgestellt: Wenn die neue „ifupdown“ aktiviert wurde, geht anschließend kein normales LAN mehr.

    Jetzt freue ich mich über die stabile WLAN Verbindung (Danke!!) aber kein LAN mehr 🙁

  9. Matthias K sagt:

    Hallo, ich habs einfach so gelöst, dass ich ein regelmäßiges bashscript ausführe, welches ggf. wlan verbindung neu startet

  10. Bhoernchen sagt:

    Ich kann das was Pittyboy hat nur bestätigen..
    Ist grade etwas lästig weil ich mist beim Einrichten gemacht habe.. und jetzt gar nicht mehr ran komme. Grundsätzlich ist deine Lösung aber so weit für mich ok ..
    Wenn ich nicht mal grade eben wieder mist bauen würde..
    Danke dir

  11. PittyBoy sagt:

    Hallo!

    Wunderbare Lösung. Schein wohl zu funktionieren! Zusätzlich, sollte vielleicht auch noch die „Sleepfunktion“ des Sticks deaktiviert werden.
    Hab ich jedenfalls so gemacht.

    Was mir aber aufgefallen ist:
    Wenn die neue „ifupdown“ aktiviert wurde, geht anschließend kein normales LAN mehr (Wlan Adapter entfernt und LAN-Kabel angesteckt).
    Egal auf welcher IP…LAN ist nicht mehr vorhanden. Der RasPi wird auch nicht mehr im Router gefunden. weg…einfach nicht mehr da…unter keiner IP!
    Wenn man zuvor oder auch danach allerdings Deine Änderung rückgängig macht funktioniert alles wie gehabt.

    Trotzdem scheint mir diese Änderung die Lösung für die Unfähigkeit der Neuverbindung des WLAN-Adapters zu sein. Vielen dank für die Information.
    Vielleicht lässt sich ja auch noch das LAN-Problem irgendwie lösen..

    Beste Grüße (aus Stuttgart)

    Peter

  12. Jürgen Z. sagt:

    Zu früh gefreut
    Wlan schon wieder unterbrochen
    schade 🙁

  13. Jürgen Z. sagt:

    @ Wolfram
    Sonst ist über Nacht immer das wlan weg gewesen
    Heute nicht 🙂
    mal sehen wir lange das hält

  14. Wolfram sagt:

    @Jürgen:
    WinSCP geht im Prinzip auch. Wichtig ist, dass die Zugriffsrechte auf die Datei hinterher wieder passen.

  15. Jürgen Z. sagt:

    Ja stimmt
    Zu blöd passiert mir öfters
    Jetzt klappst auf eine mal 🙂

    Meinste das mit WinSCP das genögt oder soll ich es nochmal nach deiner Beschreibung machen

  16. Wolfram sagt:

    @Jürgen:
    Das kann so auch nicht klappen, weil nach dem …/action.d kein Punkt (.) mehr kommen darf. Der gehört zum Satzende im Artikel, nicht zum Befehl!

  17. Jürgen Z. sagt:

    Hallo
    Habe mich jetzt mit „root“ angemeldet aber es hat nicht geholfen
    Es kommt immer die Meldung

    root@raspberrypi:~# cd /etc/ifplugd/action.d.
    bash: cd: /etc/ifplugd/action.d.: No such file or directory

    ob wohl ich das Verzeichnis nachdem ich ls eingegeben in der Liste sehe
    Habe jetzt den Dateien tausch mit WinSCP gemacht und da ging es
    Bin mal gespannt ob das funkt

  18. Wolfram sagt:

    @Jürgen:
    Wurden die Schritte mit root also Superuser-Rechten durchgeführt?
    Also entweder am Anfang su eingeben oder jedem Schritt ein sudo voranstellen.

  19. Jürgen Z. sagt:

    Hallo
    Ich komme nicht in das Vewrzeichnis ifplugd
    es kommt folgende Meldung
    -bash: /ifplugd: No such file or directory

  20. Lukas B. sagt:

    Vielen Dank! Funktioniert super!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Schließen