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.confdans 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 ifplugdet 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/wifiest le script. Si vous ne savez pas à quoi ça nicesert, lisez man nice.
Le fait ifest 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.