Watchdog für PC
Einleitung
Da ich zu Hause mehrere Computer (Server) laufen habe und ich unter der Woche nicht zu Hause bin (die Server jedoch erreichbar sein sollen), ist es sehr störend, wenn sich einer der Server aufhängt. Deshalb habe ich nach einem Watchdog für meine PCs gesucht. Kommerzielle Watchdogs sind meist PCI- oder ISA-Steckkarten mit mehreren Zusatzfunktionen und einem recht hohen Preis (ab ca. EUR 150,–). Nach längerem Suchen im Netz bin ich auf einen Artikel von Guido Socher auf www.linuxfocus.org gestoßen. In diesem Artikel beschreibt Guido wie er für sich selbst einen wirklich günstigen Watchdog entworfen hat.
Da Guido ein “Linux-Fan” ist, gibt es für seinen Watchdog natürlich nur Linux-Treiber. Da ich aber auch Windows auf einem (Multimedia-) Server einsetze war ich dazu gezwungen einen Treiber für Windows zu schreiben.
Funktionsweise
Wenn das Treiber-Programm startet wird der RTS-Pin der seriellen Schnittstelle auf high gesetzt. Das RTS-Signal stellt die Versorgungsspannung des Watchdogs dar. Solange RTS high ist, befindet sich der Watchdog in “Lauerstellung”. Gleichzeitig wird auch DTR für kurze Zeit (10ms) auf high gesetzt. DTR wird alle 12 Sekunden für ca. 10 Millisekunden auf high gesetzt. Bleiben diese Pulse für ca. 35 bis 40 Sekunden aus dann startet (Hardware-Reset) der Watchdog den Computer neu.
Nebenbei achtet der Treiber immer darauf (), ob sich am CD-Pin ein high Pegel befindet. Ist dies der Fall wird beim Linux-Treiber der Computer heruntergefahren (halt) und beim Windows-Treiber die ausgewählte Aktion durchgeführt.
Eine genauere Beschreibung der Funktionsweise gibt es im linuxfocus-Artikel.
Hardware
Guido hat auf seiner Seite mehrere Varianten für den Hardware-Aufbau bereitgestellt. Dazu möchte ich noch eine Bemerkung machen: Bei meinem ersten Versuchsaufbau am Notebook hat die Schaltung nicht richtig funktioniert. Das Relay hat wegen einer zu geringen Spannung nicht geschalten. Die Spannung am Relay war zu gering, da die serielle Schnittstelle an meinem Notebook (Sony Vaio FX805) nicht wie normal 10V Pegel sondern nur 5V Pegel ausgibt. Es ist natürlich möglich die Schaltung an einer Schnittstelle mit nur 5V Pegel zu betreiben, jedoch muss die Schaltung dafür etwas verändert werden: Durch Ersetzen von D4 und R5 mit einer Drahtbrücke wird ein zuverlässiges (wenn auch nur kurzes) Schalten des Relais erreicht.
Bei meinen Servern hatte ich mit der Schaltung jedoch keine Probleme.
Ich habe mir erlaubt Guidos Schaltplan etwas übersichtlicher zu gestalten. Weiters habe ich nur beschränkte Möglichkeiten was das Ätzen einer Platine anbelangt. Deshalb habe ich die Schaltung auf einer Lochrasterplatine verwirklicht. Ein sehr nützliches Programm zur Planung von Schaltungen auf Lochrasterplatinen ist Lochmaster von ABACOM.
Software
Wie bereits in der Einleitung erwähnt, gibt es bereits einen Treiber für Linux (von Guido). Wie ihr diesen installieren müsst, steht in der readme-Datei im zip. Den Treiber für Windows (WindowsWatchDog) habe ich selbst geschrieben. Zur Installation: Am besten einfach in das Windows-Verzeichnis kopieren und eine Verknüpfung im Autostart-Ordner des Startmenüs anlegen, damit das Programm bei jedem Windows-Start automatisch geladen wird. WindowsWatchDog benötigt die Datei mscomm32.ocx die auch im zip liegt. Diese Datei am besten in das Verzeichnis Windows\System32 kopieren (wenn noch nicht vorhanden).
Download
Schaltplan (png, Protel)
Lochrasterplatine (pdf, Lochmaster-Datei)
Linux-Treiber (v0.5, v0.6)
Windows-Treiber (v1.0, v1.1 – mit HDD-Zugriffstest)
Tags: Elektronik, Linux, Visual Basic, Windows