Je préfère désactiver la plupart des tâches du démon de configuration automatique du réseau et de gestion des connexions et les gérer moi-même. Voici un script (bash) qui maintiendra la connexion en place tant que le réseau est en place et que vous n’avez pas de pilote wifi défectueux ni de problème d’alimentation; L'idée est d'envoyer une requête ping au routeur toutes les N secondes et, en cas d'échec, de vous reconnecter:
#!/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
Donc, /etc/wifi.conf
dans ce cas pourrait contenir:
router_ip=192.168.0.1
log=/var/log/wifi.log
wlan=wlan0
eth=eth0
essid=someNetwork
check_interval=5
Tout cela suppose un réseau non crypté ouvert (sinon, vous devrez ajouter les commandes appropriées). J'ai utilisé cette approche sur diverses machines Linux, y compris la pi, et cela fonctionne parfaitement; il gardera un système en ligne indéfiniment, même s'il se met périodiquement en veille (ce que le pi ne peut pas de toute façon).
Un intervalle de vérification décent est 3-5 secondes; cette activité n'aura aucun impact significatif sur les ressources système.
Vous ne devez absolument désactiver la configuration automatique premier réseau ,. y compris ifplugd
et d’autres démons de réseautage, sinon cela entravera vos efforts:
Comment puis-je désactiver la mise en réseau autoconfigurée sur Raspbian?
J'ai en fait utilisé apt-get remove ifplugd
.
Pour démarrer la mise en réseau au démarrage (puisque j'utilise le pi headless), j'ai ce jeu pour fonctionner sur raspbian à partir de /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
est le script. Si vous ne savez pas à quoi ça nice
sert, lisez man nice
.
Le fait if
est que si mon dongle wifi est branché sur le pi, le module 8192cu sera chargé par le noyau à ce stade - le wifi devrait donc commencer. Si ce n'est pas le cas, alors on suppose que l'Ethernet est branché et qu'il devrait être utilisé (sinon, dhclient ne fera que déborder et il n'y aura pas d'accès au réseau).
Pour que cela fonctionne, vous devrez probablement
Donc, cela obtient un pi sans tête sur le réseau au démarrage et le maintient là. Si vous vouliez un moyen de passer à eth en cours d'exécution sans vous connecter, vous pouvez utiliser les règles udev pour retirer le dongle wifi.
rc.local
. Rotation des journaux WRT, question distincte relative aux fichiers journaux en général (mais voirman logrotate
). À l'heure actuelle, ce script éponge (écrase) tout journal précédent s'il existe avec le même chemin, sans ajout. Pour le débogage, j'ai parfois utiliséwifi.$$.log
le fichier wifi.conf, de sorte que le dernier journal soit (peu probable) obstrué et que je puisse comparer une session à une autre après avoir modifié quelque chose.$$
est le pid du processus "wifi".Eh bien, il existe une solution très simple:
/etc/ifplugd/action.d/
et renommez leifupdown
fichier enifupdown.original
cp /etc/wpa_supplicant/ifupdown.sh ./ifupdown
sudo reboot
C'est tout. Testez ceci en allumant / éteignant votre AP; vous devriez voir que votre Raspberry Pi se reconnecte correctement.
la source
action_wpa -> ../../wpa_supplicant/action_wpa.sh
, alors c'est peut-être le fichier par défaut maintenant?dhcpcd
distributions basées sur , pour pouvoir utiliser cette fonction sur RPI3, vous devezapt-get install rcconf
passerdhcpcd
ànetworking
Je suis récemment tombé sur une application console qui trie toute la configuration sans fil. Vous pouvez également utiliser cet outil pour configurer l'interface LAN.
Il installera de nombreux autres packages et exécutera son propre démon en arrière-plan, mais il facilite certainement la configuration de tout. Le courir avec
Si vous recevez un message indiquant qu'aucun réseau n'a été détecté, appuyez sur
P
(il doit être majuscule, utilisez [SHIFT] p) et tapez wlan0 dans le champ d'interface sans fil, puis appuyez sur F10 pour enregistrer.R
pour rafraîchir la liste.Vous devrez peut-être appuyer sur
C
pour vous connecter au point d'accès. Si vous étiez câblé, cela risquerait de tuer l'interface de réseau local et d'activer le sans fil.Il gère également la connexion afin de se reconnecter à n’importe quel point d’accès sans fil configuré si celui-ci se déconnecte pour une raison quelconque.
J'ai essayé de débrancher l'adaptateur WiFi, puis de le rebrancher. Cela prend environ 60 ~ 90 secondes, mais la connexion au WiFi est rétablie (je pense que le réseau local doit être débranché).
J'espère que ça aide!
la source
wicd
wicd-curses
, mon RPi 3 a commencé à geler de manière aléatoire. Ne gelait jamais avant et le gel a disparu immédiatement une fois que je l'ai désinstallé. Il faut se méfier!Cela peut être résolu sans scripts supplémentaires.
Dans / etc / network / interfaces, mettez:
allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp
L'itinérance permet à l'interface de s'auto-soigner.
la source
netcfg
Essayez
netcfg
. Sans plus de détails sur la distribution que vous utilisez, je ne peux pas en dire beaucoup plus, mais elle devrait faire ce que vous voulez.la source
Une autre solution, extraite de celle-ci .
Commencez par configurer vos paramètres wifi:
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
ajoutez une section comme celle-ci:Ensuite, vos paramètres réseau avec
sudo vi /etc/dhcpcd.conf
:Créez ensuite ce fichier de script quelque part, par exemple dans,
/home/pi/reconnect.sh
et donnez-lui l'+x
autorisation d'exécuter.Puis connectez-vous en tant que root avec
sudo su
et éditez la crontab de root aveccrontab -e
.A la fin de ce fichier, ajoutez cette ligne:
10 * * * * /home/pi/reconnect.sh
Cela signifie: "exécuter ce script toutes les 10 minutes (en tant que root)"
Maintenant, si vous avez une connexion, le script se ferme et rien ne se passe. Si vous ne pouvez pas envoyer de ping à votre routeur, le script essaiera de se reconnecter via wpa_supplicant.
Notez que tout ce qui est répercuté dans un script cron (dans ce cas, uniquement lorsqu'il est déconnecté) sera envoyé à la racine par courrier électronique. Donc, si vous avez configuré vos alias de courrier et votre postscript, vous recevrez un email chaque fois que la connexion wifi de votre pi sera interrompue, puis de nouveau avec succès grâce au script.
la source
Cela a fonctionné pour moi, en utilisant Raspian Jessie sur 30.March.2017:
http://alexba.in/blog/2015/01/14/automatiquement-reconnecter-wifi-on-a-raspberrypi/
la source