Ich bevorzuge es, die meisten Funktionen des Netzwerk-Autokonfigurations- und Verbindungsmanagement-Daemons zu deaktivieren und mich selbst darum zu kümmern. Hier ist ein (Bash-) Skript, das die Verbindung aufrecht erhält, solange das Netzwerk verfügbar ist und Sie keine Probleme mit dem WLAN-Treiber oder der Stromversorgung haben. Die Idee ist, alle N Sekunden einen Ping-Befehl an den Router zu senden. Wenn dies fehlschlägt, stellen Sie die Verbindung erneut her:
#!/bin/bash
# make sure we aren't running already
what=`basename $0`
for p in `ps h -o pid -C $what`; do
if [ $p != $$ ]; then
exit 0
fi
done
# source configuration
. /etc/wifi.conf
exec 1> /dev/null
exec 2>> $log
echo $(date) > $log
# without check_interval set, we risk a 0 sleep = busy loop
if [ ! "$check_interval" ]; then
echo "No check interval set!" >> $log
exit 1
fi
startWifi () {
dhclient -v -r
# make really sure
killall dhclient
iwconfig $wlan essid $essid
dhclient -v $wlan
}
ifconfig $eth down
ifconfig $wlan up
startWifi
while [ 1 ]; do
ping -c 1 $router_ip & wait $!
if [ $? != 0 ]; then
echo $(date)" attempting restart..." >> $log
startWifi
sleep 1
else sleep $check_interval
fi
done
So /etc/wifi.conf
könnte in diesem Fall enthalten:
router_ip=192.168.0.1
log=/var/log/wifi.log
wlan=wlan0
eth=eth0
essid=someNetwork
check_interval=5
Dies alles setzt ein offenes unverschlüsseltes Netzwerk voraus (andernfalls müssen Sie die entsprechenden Befehle hinzufügen). Ich habe diesen Ansatz auf verschiedenen Linux-Rechnern verwendet, einschließlich dem pi, und er funktioniert einwandfrei. es wird ein System auf unbestimmte Zeit online halten, auch wenn es regelmäßig in den Ruhezustand geht (was der Pi sowieso nicht kann).
Ein angemessenes Überprüfungsintervall beträgt 3-5 Sekunden. Diese Aktivität hat keine wesentlichen Auswirkungen auf die Systemressourcen.
Sie müssen unbedingt zuerst die automatische Netzwerkkonfiguration deaktivieren . einschließlich ifplugd
und anderer Netzwerk-Daemons, oder dies wird Ihre Bemühungen stören:
Wie kann ich das automatisch konfigurierte Netzwerk unter Raspbian deaktivieren?
Ich habe in der Tat verwendet apt-get remove ifplugd
.
Um beim Booten mit dem Networking zu beginnen (da ich den pi headless verwende), muss dieser Satz auf Raspbian ausgeführt werden von /etc/rc.local
:
wifi_mod=`lsmod | grep 8192cu`
if [ "$wifi_mod" ]; then
echo "Starting wifi..."
/usr/bin/nice -n -10 /usr/local/bin/wifi &
else
echo "Starting ethernet..."
/sbin/ifconfig eth0 up
/sbin/dhclient eth0
fi
/usr/local/bin/wifi
ist das Drehbuch. Wenn Sie nicht wissen, wofür es nice
ist, lesen Sie man nice
.
Der Punkt von if
ist, dass, wenn mein Wifi-Dongle in den Pi eingesteckt ist, das 8192cu-Modul an diesem Punkt vom Kernel geladen wird - also sollte Wifi starten. Wenn nicht, wird davon ausgegangen, dass das Ethernet angeschlossen ist und verwendet werden sollte (wenn dies nicht der Fall ist, scheißt dhclient einfach aus und es gibt keinen Netzwerkzugriff).
Damit dies funktioniert, müssen Sie wahrscheinlich
Dadurch wird beim Booten ein headless pi auf das Netzwerk übertragen und dort belassen. Wenn Sie möchten, dass Sie beim Laufen zu eth wechseln, ohne sich anzumelden, können Sie mit den udev-Regeln etwas unternehmen, um den WLAN-Dongle herauszuziehen.
rc.local
. WRT-Protokollrotation, das ist eine separate Frage, die sich auf Protokolldateien im Allgemeinen bezieht (siehe aberman logrotate
). Im Moment wird dieses Skript alle vorherigen Protokolle blockieren (überschreiben), wenn sie mit demselben Pfad existieren, und nicht anhängen. Zum Debuggen habe ich manchmalwifi.$$.log
in der wifi.conf-Datei verwendet, so dass das letzte Protokoll (unwahrscheinlich) blockiert wird und ich eine Sitzung mit einer anderen vergleichen kann, nachdem ich etwas optimiert habe.$$
ist die PID des "Wifi" -Prozesses.Nun, es gibt eine sehr einfache Lösung:
/etc/ifplugd/action.d/
und benennen Sie dieifupdown
Datei in umifupdown.original
cp /etc/wpa_supplicant/ifupdown.sh ./ifupdown
sudo reboot
Das ist alles. Testen Sie dies, indem Sie Ihren AP aus- / einschalten. Sie sollten sehen, dass Ihr Himbeer-Pi richtig wieder verbindet.
quelle
action_wpa -> ../../wpa_supplicant/action_wpa.sh
, also ist das jetzt vielleicht der Standard?dhcpcd
basierten Distributionen, um diese auf RPI3 Sie müssen zum Laufen zu bringenapt-get install rcconf
und wechseln Sie vondhcpcd
zunetworking
Vor kurzem bin ich auf eine Konsolenanwendung gestoßen, die die gesamte drahtlose Konfiguration außer Kontrolle bringt. Mit diesem Tool können Sie auch die LAN-Schnittstelle konfigurieren.
Es wird einige andere Pakete installieren und einen eigenen Daemon im Hintergrund laufen lassen, aber es macht sicher die Konfiguration viel einfacher. Führen Sie es mit
Wenn Sie die Meldung erhalten, dass keine Netzwerke erkannt wurden, drücken Sie
P
(muss ein Großbuchstabe sein, verwenden Sie die [UMSCHALTTASTE] p), geben Sie wlan0 in das Feld für die drahtlose Schnittstelle ein und drücken Sie zum Speichern die Taste F10.R
um die Liste zu aktualisieren.Möglicherweise müssen Sie drücken
C
, um eine Verbindung zum Zugangspunkt herzustellen. Wenn Sie verkabelt sind, wird dies höchstwahrscheinlich die LAN-Schnittstelle zerstören und die drahtlose Verbindung herstellen.Es verwaltet auch die Verbindung, sodass die Verbindung zu konfigurierten drahtlosen Zugriffspunkten wiederhergestellt wird, wenn sie aus irgendeinem Grund unterbrochen wird.
Ich habe getestet, ob ich den WLAN-Adapter herausgezogen und wieder eingesteckt habe. Es dauert ungefähr 60 bis 90 Sekunden, aber es wird wieder eine Verbindung zum WLAN hergestellt (ich denke, das LAN muss jedoch ausgesteckt sein).
Ich hoffe es hilft!
quelle
wicd
wicd-curses
frierte mein RPi 3 zufällig ein. War noch nie gefroren und das Gefrieren verschwand sofort, nachdem ich es deinstalliert hatte. In acht nehmen!Dies kann ohne zusätzliche Skripte gelöst werden.
In / etc / network / interfaces setzen:
allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp
Das Roaming ermöglicht es der Schnittstelle, sich selbst zu heilen.
quelle
netcfg
Versuchen Sie es
netcfg
. Ohne weitere Angaben zu der von Ihnen verwendeten Distribution kann ich nicht viele weitere Angaben machen, aber es sollte tun, was Sie wollen.quelle
Eine andere Lösung, wie aus dieser extrahiert .
Konfigurieren Sie zuerst Ihre WLAN-Einstellungen:
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
Fügen Sie einen Abschnitt wie diesen hinzu:Dann deine Netzwerkeinstellungen mit
sudo vi /etc/dhcpcd.conf
:Erstellen Sie dann diese Skriptdatei irgendwo in
/home/pi/reconnect.sh
und geben Sie ihr die+x
Berechtigung, ausführbar zu sein.Dann melde dich als root an
sudo su
und bearbeite die crontab mit rootcrontab -e
.Am Ende dieser Datei fügen Sie diese Zeile hinzu:
10 * * * * /home/pi/reconnect.sh
Das bedeutet: "Führe das Skript alle 10 Minuten aus (als root)"
Wenn Sie nun eine Verbindung haben, wird das Skript beendet und es passiert nichts. Wenn Sie Ihren Router nicht anpingen können, versucht das Skript, die Verbindung mit wpa_supplicant wiederherzustellen.
Beachten Sie, dass alles, was von einem Cron-Skript wiedergegeben wird (in diesem Fall nur, wenn die Verbindung getrennt wurde), per E-Mail an root gesendet wird. Wenn Sie also Ihre Mail-Aliase und Ihr Postscript konfiguriert haben, erhalten Sie eine E-Mail, sobald die WLAN-Verbindung Ihres PIS unterbrochen wurde und dank des Skripts wieder erfolgreich hergestellt wurde.
quelle
Dies funktionierte für mich mit Raspian Jessie am 30.März.2017:
http://alexba.in/blog/2015/01/14/automatically-reconnecting-wifi-on-a-raspberrypi/
quelle