Wolę wyłączyć większość rzeczy związanych z automatyczną konfiguracją sieci i demonem zarządzania połączeniami i sam sobie z tym poradzić. Oto skrypt (bash), który będzie utrzymywał połączenie tak długo, jak sieć będzie w pobliżu i nie będziesz mieć problemów ze sterownikiem Wi-Fi lub problemami z zasilaniem; pomysł polega na pingowaniu routera co N sekund, a jeśli to się nie powiedzie, podłącz ponownie:
#!/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
Tak więc, /etc/wifi.conf
w tym przypadku może zawierać:
router_ip=192.168.0.1
log=/var/log/wifi.log
wlan=wlan0
eth=eth0
essid=someNetwork
check_interval=5
Wszystko to zakłada otwartą, niezaszyfrowaną sieć (w przeciwnym razie konieczne będzie dodanie odpowiednich poleceń). Zastosowałem to podejście na różnych maszynach linuxowych, w tym pi, i działa ono bezbłędnie; utrzyma system w trybie online przez czas nieokreślony, nawet jeśli okresowo przejdzie w tryb uśpienia (czego pi nie może zresztą).
Przyzwoity okres sprawdzania wynosi 3-5 sekund; ta aktywność w ogóle nie wpłynie znacząco na zasoby systemowe.
Koniecznie trzeba wyłączyć automatycznej konfiguracji sieci pierwszy ,. w tym ifplugd
i inne demony sieciowe, w przeciwnym razie będzie to zakłócać Twoje wysiłki:
Jak mogę wyłączyć automatycznie skonfigurowaną sieć w Raspbian?
Faktycznie użyłem apt-get remove ifplugd
.
Aby rozpocząć pracę w sieci podczas rozruchu (ponieważ używam pi bez głowy), mam ten zestaw do uruchomienia na raspbian z /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
jest skrypt. Jeśli nie wiesz, po co nice
, przeczytaj man nice
.
Chodzi o if
to, że jeśli mój klucz Wi-Fi jest podłączony do pi, moduł 8192cu zostanie w tym momencie załadowany przez jądro - więc wifi powinno się uruchomić. Jeśli nie, to zakłada się, że sieć Ethernet jest podłączona i powinna być używana (jeśli tak nie jest, dhclient po prostu zawiedzie i nie będzie dostępu do sieci).
Aby to zadziałało, prawdopodobnie będziesz musiał
W ten sposób dostaje się bezgłowe pi do sieci podczas rozruchu i utrzymuje ją tam. Jeśli chcesz zmienić sposób na et podczas pracy bez logowania, możesz zrobić coś z regułami udev w celu wyciągnięcia klucza Wi-Fi.
rc.local
. Rotacja dziennika WRT, to osobne pytanie, które dotyczy plików dziennika w ogóle (ale patrzman logrotate
). W tej chwili skrypt będzie kasował (nadpisywał) każdy poprzedni dziennik, jeśli istnieje z tą samą ścieżką, a nie dołącza. Do debugowania czasamiwifi.$$.log
używałem pliku wifi.conf, więc ostatni dziennik jest (mało prawdopodobny), aby zostać zablokowanym i mogę porównać jedną sesję z drugą po poprawieniu czegoś.$$
jest pid procesu „wifi”.Cóż, istnieje bardzo proste rozwiązanie:
/etc/ifplugd/action.d/
i zmień nazwęifupdown
pliku naifupdown.original
cp /etc/wpa_supplicant/ifupdown.sh ./ifupdown
sudo reboot
To wszystko. Sprawdź to, wyłączając / włączając swój AP; powinieneś zobaczyć, że Twoje Raspberry Pi prawidłowo się ponownie łączy.
źródło
action_wpa -> ../../wpa_supplicant/action_wpa.sh
, więc może teraz jest to domyślny?dhcpcd
działa na bazowych dystrybucjach, aby uruchomić to na RPI3, musiszapt-get install rcconf
i przełączyć się zdhcpcd
nanetworking
Niedawno natknąłem się na aplikację konsolową, która rozwiązuje całą konfigurację bezprzewodową. Możesz także użyć tego narzędzia do skonfigurowania interfejsu LAN.
Zainstaluje kilka innych pakietów i uruchomi własnego demona w tle, ale z pewnością ułatwia konfigurację wszystkiego. Uruchom to z
Jeśli pojawi się komunikat informujący, że nie wykryto sieci, naciśnij
P
(musi być duże, więc użyj [SHIFT] p) i wpisz wlan0 w polu interfejsu bezprzewodowego i naciśnij F10, aby zapisać.R
aby odświeżyć listę.Być może trzeba będzie nacisnąć,
C
aby połączyć się z punktem dostępu. Jeśli masz połączenie przewodowe, najprawdopodobniej zabije interfejs LAN i uruchomi sieć bezprzewodową.Zarządza także połączeniem, więc połączy się z dowolnym skonfigurowanym bezprzewodowym punktem dostępowym, jeśli z jakiegokolwiek powodu przestanie działać.
Testowałem podłączanie adaptera Wi-Fi i podłączanie go z powrotem. Zajmuje to około 60 ~ 90 sekund, ale połączy się ponownie z Wi-Fi (myślę, że sieć LAN musi być odłączona)
Mam nadzieję, że to pomoże!
źródło
wicd
wicd-curses
moje RPi 3 zaczęło się losowo zamrażać. Nigdy wcześniej nie zamrażał, a zamrażanie zniknęło natychmiast po jego odinstalowaniu. Strzec się!Można to rozwiązać bez dodatkowych skryptów.
W pliku / etc / network / interfaces:
allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp
Roaming umożliwia samoleczenie się interfejsu.
źródło
netcfg
Spróbować
netcfg
. Bez dalszych szczegółów na temat używanej dystrybucji nie mogę podać wielu innych szczegółów, ale powinno zrobić to, co chcesz.źródło
Inne rozwiązanie, jak wyciągnięto z tego .
Najpierw skonfiguruj ustawienia Wi-Fi:
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
dodając taką sekcję:Następnie ustawienia sieciowe za pomocą
sudo vi /etc/dhcpcd.conf
:Następnie utwórz gdzieś ten plik skryptu, na przykład w,
/home/pi/reconnect.sh
i zezwól mu+x
na wykonywanie.Następnie zaloguj się jako root za pomocą
sudo su
i edytuj crontab roota za pomocącrontab -e
.Na końcu tego pliku dodaj ten wiersz:
10 * * * * /home/pi/reconnect.sh
Oznacza to: „uruchamiaj ten skrypt co 10 minut (jako root)”
Teraz, jeśli masz połączenie, skrypt zakończy działanie i nic się nie stanie. Jeśli nie możesz pingować routera, skrypt spróbuje ponownie połączyć się z nim za pomocą wpa_supplicant.
Zauważ, że wszystko, co jest echem ze skryptu cron (w tym przypadku tylko gdy jest rozłączony), zostanie wysłane e-mailem do roota. Jeśli więc skonfigurowałeś aliasy poczty i PostScript, otrzymasz e-mail za każdym razem, gdy połączenie Wi-Fi przestanie działać, a następnie z powodzeniem ponownie dzięki skryptowi.
źródło
To zadziałało dla mnie, używając Raspian Jessie 30. marca.2017:
http://alexba.in/blog/2015/01/14/automatically-reconnecting-wifi-on-a-raspberrypi/
źródło