Raspberry Pi3 - WLAN Totalausfall

Begonnen von Felix_86, 26 Juli 2018, 13:15:11

Vorheriges Thema - Nächstes Thema

Felix_86

Zitat von: Wernieman am 26 Juli 2018, 19:30:04
Freunde mit seeeehr viel Linux-Kentnisse haben sich auch schon daran die Zähne ausgebissen. Warum gerade die Kombi Fritz/P so schlecht geht .....

Wenn Du die Netzwerdienste rebootest .. geht es dann?
Nein, mit dem Restart diverser Dienste (sudo ifdown wlan0 / sudo ifup wlan0, service networking restart, sudo systemctl restart dhcpcd, sudo dhclient -r wlan0 / sudo dhclient -v wlan0) kommt das wlan0 Interface nicht zurück. Es ist immer ein Reboot des gesamten Pi erforderlich, wobei der Shutdown-Vorgang 5 Minuten bei "plymouth-reboot.service" verweilt bevor der Pi dann wirklich unten ist und neu startet.
Grüße von Felix

Pi3, Raspbian 11, FHEM 6.2, ca 320 Device
SIGNALduino (TCM, TX, IT), CUL (EM, FS20, HMS), JeeLink (PCA301), HUEBridge, HUEDevice, mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS

Wernieman

Du könntest auch probieren, das WLAN modul (den "Treiber") rauszuverfen (rmmod) und iweder zu laden (modprobe).

Nur wie schon gesagt, kenne auch exte Kracks, die sich daran ausgebissen haben...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Dr. Boris Neubert

Hallo,

mein einer Raspberry Pi 3 verliert auch ab und an die Verbindung. Der Stromsparmodus des WLAN-Treibers ist aus. Ich behelfe mir mit folgendem Skript, welches ich von cron alle 5 Minuten ausführen lasse. Das funktioniert bei mir.

Viele Grüße
Boris

#!/bin/bash

# vi /etc/crontab
# */5 * * * *     root    /home/pi/scripts/checkwifi.sh >> /dev/null 2>&1

DEBUG=0
DATE=`date "+%Y-%m-%d %H:%M:%S"`
IF=wlan0
WLAN=/sys/class/net/$IF
CARRIER=$WLAN/carrier

if [ ! -d $WLAN ] || [ $(cat $CARRIER) -eq 0 ]; then
  logger "$DATE: No network connection, restarting $IF"
  if [ -d $WLAN ]; then
        /sbin/ifdown $IF
        sleep 5
  fi
  /sbin/ifup --force $IF
  sleep 15
  echo $DATE | mail -s "DeinHostname lost network connection" -a "From: absender@example.com" empfaenger@example.com
  if [ ! -d $WLAN ] || [ $(cat $CARRIER) -eq 0 ]; then
        logger "$DATE: Still no network connection, rebooting"
        reboot                                                                                                                                                                     
  fi                                                                                                                                                                               
else                                                                                                                                                                               
  logger "$DATE: wlan0 carrier detected."                                                                                                                                           
  if [ $DEBUG -gt 0 ]; then                                                                                                                                                         
        echo $DATE | mail -s "DeinHostname is alive" -a "From: absender@example.com" empfaenger@example.com                         
  fi                                                                                                                                                                               
fi                                                                                                                                                                                 
exit 0                                                                                                                                                                             
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

betateilchen

Zitat von: Felix_K am 27 Juli 2018, 14:32:55
wobei der Shutdown-Vorgang 5 Minuten bei "plymouth-reboot.service" verweilt

Und was hindert Dich daran, plymouth komplett von Deinem Raspi zu entfernen? Brauchen tut das eigentlich niemand...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Felix_86

Zitat von: Dr. Boris Neubert am 30 Juli 2018, 18:17:15
Hallo,

mein einer Raspberry Pi 3 verliert auch ab und an die Verbindung. Der Stromsparmodus des WLAN-Treibers ist aus. Ich behelfe mir mit folgendem Skript, welches ich von cron alle 5 Minuten ausführen lasse. Das funktioniert bei mir.

Viele Grüße
Boris
Vielen Dank dafür. Ein Script zur Überwachung habe ich mir auch gebaut. Da ein ifdown / ifup, sowie der Neustart diverser Dienste und Prozesse keinen Erfolg zeigt, wenn das wlan0 Interface mal weg ist, würde hier wohl immer der finale Reboot greifen.
Diesen führe ich aktuell per FHEM AT in Abhängigkeit der Präsenz der FritzBox aus. Total unschön, aber damit läuft es größtenteils.

Aktuell bastel ich an der Antwort von Wernieman mit rmmod und modprobe um den Treiber neu zu laden. Da der WLAN Verlust aber selten dann auftritt, wenn ich davor sitze und mal Zeit / Lust zum Debuggen habe, zieht sich das Thema......


Zitat von: betateilchen am 31 Juli 2018, 09:11:28
Und was hindert Dich daran, plymouth komplett von Deinem Raspi zu entfernen? Brauchen tut das eigentlich niemand...
Danke, guter Einwand.
Ich glaube allerdings nicht, dass plymouth das Problem selbst ist, denn wenn der Raspberry eine WLAN Verbindung hat / das wlan0 Interface vorhanden ist, ist ein kompletter Reboot in 40 Sekunden erledigt. "plymouth-reboot.service" zeigt mir nur die Auswirkung auf den Reboot, wenn die WLAN Verbindung / das wlan0 Interface nicht vorhanden sind.  Die Ursache liegt aber schon viel früher am Verlust des WLAN / wlan0 Interface.
Grüße von Felix

Pi3, Raspbian 11, FHEM 6.2, ca 320 Device
SIGNALduino (TCM, TX, IT), CUL (EM, FS20, HMS), JeeLink (PCA301), HUEBridge, HUEDevice, mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS

Wuppi68

mal ne Idee zum testen ...

lege mal ne Bridge mit dem WLAN Interface an (https://wiki.ubuntuusers.de/Netzwerkbrücke/)

wenn die Bridge dann "oben" bleibt sollte es auch mit dem shutdown schneller klappen ;-)
Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen

Felix_86

Kurze (finale) Rückmeldung von mir zu diesem Thema.

Der Pi läuft nun seit fast 10 Tagen durch, ohne Neustart und ohne WLAN Verlust.

Ich bin der Antwort von fhem-hm-knecht nachgegangen und habe ein Downgrade des Kernels auf Version 4.9.35 durchgeführt. Damit läuft die WLAN Verbindung deutlich stabiler.
Mit den zuvor vorgenommenen Änderungen am WLAN Power Management habe ich nun tagsüber überhaupt keine (spürbaren) WLAN Abbrüche mehr, selbst mit der FritzBox nicht.

Darüber hinaus habe ich das Script von Dr. Boris Neubert um eine weitere Prüfung ergänzt und ein modprobe -r brcmfmac / modprobe brcmfmac mit rfkill block 0 / rfkill unblock 0 eingebaut. Das Script läuft nun allmorgendlich, um bei einem WLAN Verlust in der Nacht einzugreifen. In den letzten 7 Tagen hat das Script nicht einmal eingegriffen. D.h. selbst bei abgeschalteter FritzBox in der Nacht wird die WLAN Verbindung nach Start der FritzBox wieder aufgebaut.
Grüße von Felix

Pi3, Raspbian 11, FHEM 6.2, ca 320 Device
SIGNALduino (TCM, TX, IT), CUL (EM, FS20, HMS), JeeLink (PCA301), HUEBridge, HUEDevice, mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS

Amenophis86

Dann poste doch mal dein Script für die Nachwelt und erkläre bitte, warum du es so verändert hast. Habe ich nicht ganz verstanden :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Felix_86

Mein Script sieht nun wie folgt aus:


#!/bin/sh

# vi /etc/crontab
# */5 * * * *     root    /home/pi/Daten/Scripte/check-wlan.sh >> /dev/null 2>&1

DEBUG=0
DATE=`date "+%Y-%m-%d %H:%M:%S"`
IF=wlan0
WLAN=/sys/class/net/$IF
CARRIER=$WLAN/carrier
MAILCOMMAND=/home/pi/Daten/Scripte/sendmail.sh
LOG=/home/pi/sharedfolder/check-wlan-`date +"%Y"`-`date +"%m"`.log

if [ ! -d $WLAN ] || [ $(cat $CARRIER) -eq 0 ]; then
  sudo echo "$DATE - No network connection, restarting $IF" >> $LOG
 
  if [ -d $WLAN ]; then
        sudo /sbin/ifdown $IF
        sleep 5
  sudo /sbin/ifup --force $IF
  sleep 15
  fi

  if [ ! -d $WLAN ] || [ $(cat $CARRIER) -eq 0 ]; then
  sudo echo "$DATE - Still no network connection, resetting driver" >> $LOG
 
   if [ -d $WLAN ]; then
         sudo modprobe -r brcmfmac
         sleep 2
      sudo modprobe brcmfmac
  sleep 2
         sudo rfkill block 0
  sleep 2
         sudo rfkill unblock 0
  sleep 2
         sudo /sbin/ifdown $IF
         sleep 2
         sudo /sbin/ifup --force wlan0
  sleep 15
   fi

  fi

  if [ $DEBUG -gt 0 ]; then
echo $DATE | $MAILCOMMAND empfänger@domain.TLD "Pi lost network connection but restarted" "$DATE"
  fi

  if [ ! -d $WLAN ] || [ $(cat $CARRIER) -eq 0 ]; then
  sudo echo "$DATE - Still no network connection, rebooting Pi" >> $LOG
        reboot
  fi


else
  sudo echo "$DATE - wlan0 carrier detected" >> $LOG
  if [ $DEBUG -gt 0 ]; then
echo $DATE | $MAILCOMMAND empfänger@domain.TLD "Pi is alive" "$DATE"
  fi
fi

exit 0


Im Original von Dr. Boris Neubert wird nach dem "restarting wlan0" (ifdown / ifup) als nächster Schritt ein Reboot des Pi's durchgeführt. Da ein "restarting wlan0" (ifdown / ifup) in meinem Fall häufig nicht möglich ist / war, da das wlan0 Interface nicht vorhanden ist / war, wurde immer ein Reboot durchgeführt.
Diesen Reboot versuche ich nun zu verhindern, indem ein "resetting driver" (modprobe -r brcmfmac / modprobe brcmfmac und rfkill block 0 / rfkill unblock 0) ausgeführt wird, bevor es zum finalen Reboot des Pi kommt.
Grüße von Felix

Pi3, Raspbian 11, FHEM 6.2, ca 320 Device
SIGNALduino (TCM, TX, IT), CUL (EM, FS20, HMS), JeeLink (PCA301), HUEBridge, HUEDevice, mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS