Wie kann ich die WiFi-Verbindung automatisch wiederherstellen?
Ich verwende meinen Pi zur Überwachung meiner Leistungsmesser. Die Daten werden über eine WiFi-Verbindung mit dem Edimax EW-7811UN USB-Adapter auf den PC übertragen. Wenn die WiFi-Verbindung abbricht (über Nacht ausgeschaltet oder wackelige Verbindung), bleibt der USB-Adapter deaktiviert.
Gibt es eine Möglichkeit, die WiFi-Verbindung automatisch neu zu starten, ohne den WiFi-Adapter erneut anzustecken?
74
3
Nun, es gibt eine sehr einfache Lösung:
/etc/ifplugd/action.d/
und benennen Sie die Dateiifupdown
inifupdown.original
umcp /etc/wpa_supplicant/ifupdown.sh ./ifupdown
sudo reboot
Das ist alles. Testen Sie dies, indem Sie Ihren AP aus- und wieder einschalten; Sie sollten sehen, dass Ihr Raspberry Pi sich wieder ordnungsgemäß verbindet.
Ich ziehe es vor, die meisten der Netzwerk-Autokonfiguration und Verbindungsmanagement-Daemon Sachen zu deaktivieren und mich selbst darum zu kümmern. Hier ist ein (Bash-)Skript, das die Verbindung aufrecht erhält, solange das Netzwerk vorhanden ist und Sie keinen fehlerhaften WLAN-Treiber oder Stromprobleme haben; die Idee ist, den Router alle N Sekunden anzupingen, und wenn das fehlschlägt, erneut zu verbinden:
Also könnte
/etc/wifi.conf
in diesem Fall enthalten:Dies alles setzt ein offenes, unverschlüsseltes Netzwerk voraus (falls nicht, müssen Sie die entsprechenden Befehle hinzufügen). Ich habe diesen Ansatz auf verschiedenen Linux-Maschinen verwendet, einschließlich des Pi, und er funktioniert einwandfrei; er hält ein System auf unbestimmte Zeit online, selbst wenn es regelmäßig in den Ruhezustand geht (was der Pi sowieso nicht kann).
Ein angemessenes Überprüfungsintervall ist 3-5 Sekunden; diese Aktivität wird die Systemressourcen nicht wesentlich beeinträchtigen.
Sie müssen auf jeden Fall zuerst die automatische Netzwerkkonfiguration deaktivieren, einschließlich
ifplugd
und andere Netzwerk-Daemons, oder dies wird Ihre Bemühungen behindern:Wie kann ich die automatische Netzwerkkonfiguration unter Raspbian deaktivieren?
Ich habe in der Tat
apt-get remove ifplugd
benutzt.Um das Netzwerk beim Booten zu starten (da ich den Pi ohne Kopfhörer verwende), habe ich dies so eingestellt, dass es auf Raspbian in
/etc/rc.local
läuft:/usr/local/bin/wifi
ist das Skript. Wenn Sie nicht wissen, wofürnice
ist, lesen Sieman nice
.Der Sinn des
if
ist, dass, wenn mein Wifi-Dongle in den Pi eingesteckt ist, das 8192cu-Modul vom Kernel an diesem Punkt geladen wird - also sollte Wifi starten. Wenn nicht, dann wird davon ausgegangen, dass das Ethernet eingesteckt ist und verwendet werden sollte (wenn nicht, wird dhclient einfach abspringen und es gibt keinen Netzwerkzugang).Damit dies funktioniert, müssen Sie wahrscheinlich
Damit wird ein headless pi beim Booten ins Netzwerk gebracht und dort gehalten. Wenn man eine Möglichkeit haben möchte, während des Betriebs auf eth zu wechseln, ohne sich einzuloggen, könnte man etwas mit udev rules machen, um den WLAN-Dongle herauszuziehen.
netcfg
Versuchen Sie
netcfg
. Ohne weitere Details darüber, welche Distribution Sie verwenden, kann ich nicht viel mehr Details liefern, aber es sollte tun, was Sie wollen.