Raspberry Pi in Watchdog-Loop

Da der Raspi bei mir durch die oft beschriebenen Probleme mit dem smsc95xx relativ wacklig auf dem Netzwerk und den beiden USB-Ports ist und dadurch in unregelmäßigen Abständen unmotiviert die Arbeit einstellt, hatte ich den Hardware-Watchdog des Raspi aktiviert. Dieser veranlasst in meinem Fall einen Neustart des Systems wenn länger als 15 Minuten nichts mehr in eine bestimmte Datei geschrieben wird. Wie die Einrichtung des Watchdog genau funktioniert, ist z.B. hier beschrieben.

Diese Woche war es nun plötzlich so, das der Raspi in einer Endlosschleife bootete und anschliessend sofort wieder ein Signal zum Shutdown bekam, bootete, shutdown, ….

Meine erste Vermutung war das Netzteil. Den gleichen Effekt gab es aber auch mit einem anderen Netzteil. Der Ersatz-Raspi mit der gleichen SD-Karte rebootete auch ständig. Also kein Hardware-Fehler!

Also Monitor angeschlossen und mal geschaut was da beim booten so passiert. Das letzte was der Raspi so von sich gab bevor er wieder neu startete war:

WDT device closed unexpectedly.  WDT will not stop!

WDT ist der Watchdog Timer. Dieser schien sich selbständig gemacht zu haben. Nun hieß es also irgendwie diesen Watchdog zu stoppen. Die Zeit zwischen einem möglichen Login, Befehl absetzen etc. ist aber so kurz, das ich es vor einem Shutdown nie geschafft habe irgendwas sinnvolles auf der Konsole zu tun.

Abhilfe schafft z.B. das Programm „pLink“. Die plink.exe ist Teil von puTTy und unter Windows im gleichen Verzeichnis wie die putty.exe zu finden. Hiermit muss nicht erst eine gesonderte SSH-Verbindung zum Server aufgebaut werden, sondern es kann direkt der entsprechende Befehl abgesetzt werden.

In meinem Fall habe ich dem Watchdog um seine Konfiguration beraubt, wodurch dieser beim nächsten Neustart (der ja höchstwahrscheinlich ein paar Sekunden später erfolgt) nicht mehr gestartet wird.

plink -ssh -pw <passwort> <benutzer>@<pi_ip> sudo mv /etc/watchdog.conf /etc/watchdog.alt

Beraubt um seine Konfigdatei, sollte der Watchdog beim nächsten Restart nicht mehr starten. Gespannt hab ich ein paar Sekunden gewartet aber es kam kein Neustart mehr.

Woran es letztendlich gelegen hat das der Watchdog diesen immerwährenden Neustart erzwungen hat weiß ich noch nicht. Auch die Konfiguration des Watchdogs muss ich nochmal prüfen. Jedenfalls läuft der Raspi nun wieder!

5 Gedanken zu „Raspberry Pi in Watchdog-Loop

  • 22. Oktober 2014 um 08:33 Uhr
    Permalink

    Hallo Hr.Schiel
    habe /hatte selbiges Problem mit dem watchdog wie sie.
    Nach suche im Web fand ich ihren Blog.
    Die Lösung mit „Plink“ kannte ich nicht und ist sehr hilfreich.
    Danke dafür.
    Nun zu unserem Problem. Der WD startet automatisch mit dem System und überwacht eine Datei die sich bei mir alle 5 Min. ändert. Wenn nun, wie bei mir letzte Nacht ein Stromausfall ist der länger anhält als die Überwachungszeit, fährt der WD sofort wieder runter. Zudem stimmt die Systemzeit auch noch nicht , solange die Uhr nicht aktualisiert wurde.
    Als Lösung (was ich praktisch noch nicht ausprobiert habe, wg Zeit, war ja erst gestern Abend) sollte folgendes helfen:
    in der Datei rc.local am Ende folgendes einfügen
    sudo /etc/init.d/watchdog stop
    sleep „Zeit je nach update der zu überwachenden Datei“
    sudo /etc/init.d/watchdog restart

    Hoffe geholfen zu haben.
    MfG Dieter

    Antwort
    • 22. Oktober 2014 um 14:57 Uhr
      Permalink

      Hallo Dieter,

      ich habe tatsächlich auch gestern nochmal den Watchdog eingeschaltet und danach die SD-Karte gesichert. Das hat länger gedauert als die von mir eingestellte Dateiüberwachung (mache das auch so wie von Dir beschrieben).
      Nach dem nächsten Reboot hing ich auch wieder in der Schleife weil die Datei länger nicht geändert wurde! Zumindest wissen wir jetzt wo das Problem herkommt. Den Watchdog für die Zeit x anhalten klingt gut. Vielleicht reicht ja auch ein „touch“ auf die Datei. Müsste prüfen worauf der Watchdog genau triggert. Jedenfalls muss das Stoppen oder der „touch“ vor dem „erwachen“ des Wachundes geschehen. Ich werde das mal testen.

      Aber Danke für den Tip!

      Gruß
      Chris

      Antwort
  • 3. Januar 2015 um 16:18 Uhr
    Permalink

    Hallo,

    ich starte den Watchdog verzögert über den Cronjob (@reboot /bin/sleep 240; …watch..) und nicht über init.d beim boot.

    Weis jemand wie man den Watchdogtimer stopt?

    sudo /etc/init.d/watchdog stop
    [FAIL] Stopping watchdog daemon… failed!
    [FAIL] Starting watchdog keepalive daemon… failed!

    klappt nicht und so startet der Pi beim runterfahren neu.

    Antwort
    • 3. Januar 2015 um 17:03 Uhr
      Permalink

      Hi,

      das ist auch eine Lösung.

      Ich habe das jetzt mit einem „touch“ auf die Datei beim Start des Raspberry gemacht.
      Dazu in „/etc/rc.local“ eine Zeile mit „sudo touch “ eingefügen. Klappt bestens.

      Das mit dem Stoppen des Watchdogs sollte eigentlich wie von Dir beschrieben funktionieren.
      Was sagt das Log in „/var/log/messages“ dazu?

      Gruß
      Chris Antwort

  • 3. Januar 2015 um 17:08 Uhr
    Permalink

    in dmesg steht nix und auch im watchdog Log ist nichts zu finden.

    dachte zuerst es läge an

    options bcm2708_wdog nowayout=1 heartbeat=15 in /etc/modprobe.d/watchdog.conf

    aber wenn ich nowayout abschalte funktioniert es auch nicht.

    Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert