Montag, 4. August 2014

Raspberry verliert Verbindung zum WLAN

Meinen Raspberry Model A verwende ich seit einer Weile als Shairport Empfänger für Airplaystreams aus den Apple Geräten.  In mein WLAN verbidnet sich der Raspi über einen USB WIFI Donkel von EDIMAX (Modell EW - 7811UN). Wenn der Raspberry frisch gestartet ist und ich ein Audiostream darauf sende funktioniert dies wunderbar…. auch über Stunden.

Leider ist mir in den letzten Tagen aufgefallen, dass der Raspi nach einer längeren Pause (wie Lang weiß ich nicht) nicht mehr erreichbar ist. Weder über Airplay, noch per SSH.. auch Pings gehen ins Leere.

Im Access  Point ist der Raspberry auch nicht mehr sichtbar. Der Befehl:

sudo –arp

zeigt den Raspberry nicht mehr.

1. Lösungsansatz


Einige Recherchen im Netz zeigen, dass sich der WIFI Stick nach einiger Zeit in den Stromsparmodus schaltet.  Ich habe deswegen ein Script geschrieben, welches alle paar Minuten einen Ping an den Router sendet und den WLAN Adapter neustartet, wenn kein Ping durchkommt:

#!/bin/sh
ping  -c4 192.168.2.1 > /dev/null
if [ $? != 0 ]
then
  logger –f /var/log/lostwifi "lost connection, restart wifi"
  /sbin/ifdown 'wlan0'
  sleep 2
  /sbin/ifup --force 'wlan0'
fi

Mit dem Befehl logger kann ich in ein logfile schreiben, welches ich zuvor mit

touch /var/log/lostwifi

erzeugt habe.

2. Lösungsansatz


Okay. Leider  funktionierte das nicht Ganze nicht wie gewünscht. Zudem ist es sicher besser die Ursache des Problems zu beheben, anstatt die Auswirkungen zu beseitigen…

Also besser versuchen das der EDIMAX nicht mehr in den Stromsparmodus fällt. Sowohl im Raspberryforum, auf raspberrypi.stackexchange als auch im developer-blog wurde gezeigt, wie durch Abschalten des Stromsparmodus die Verbindung nicht abbricht.

In der Konfigurationsdatei 8192cu.conf müssen die Schalter rtw_power_mgnt und rtw_enusbss auf 0 gesetzt werden

sudo nano  /etc/modprobe.d/8192cu.conf

Die Zeile sollte nach der Änderung wie folgt aussehen:

options 8192cu rtw_power_mgnt=0 rtw_enusbss=0

Wenn der Inhalt gespeichert ist muss der Treiber neu geladen werden. Da dies sowieso zu einem verbindungsabruch führt, kann ich meinen PI auch direkt neu starten.

Seit der Änderung läuft der Pi mittlerweile seit 3 Tagen durchgehend im WLAN ohne das die Verbindung wieder abgebrochen ist.



Problem gelöst!



PS Den Lösungsansatz 1 habe ich noch am Laufen, es schadet nicht und bisher habe ich keine Verbindungsabbrüche im Logfile gesehen…