home Sonstiges Linux OpenBSD Links

Uhrzeit stellen mit einen DCF77-Empfänger

Meine Rechner haben immer irgendwie ein Problem mit der Uhrzeit. Wenn sie laufen und man die Uhrzeit stellt, dann stimmt diese genau solange, bis der Rechner wieder ausgeschaltet wird. Da ich nicht jedesmal Bock habe die Uhrzeit von Hand neu zu stellen und mir die Sommer/Winterzeitumstellung auch auf die Nerven geht, habe ich mir aus dem Conrad einen DCF77-Empfänger (Artikelnummer: 967602-22) besorgt.
Dieser wird über den Parallelport angeschlossen und ein Programm für Linux gibt es auch im Web unter http://www-stud.ims.uni-stuttgart.de/~voegelas/pcf.html. Es sollten die Kernelquellen vom aktuellen Kernel unter /usr/src/linux installiert sein. Die Installation für einen Kernel der Version 2.6 funktioniert folgendermassen:
root@pd6000:~ # cd /usr/src
root@pd6000:/usr/src # tar xfz /von/wo/auch/immer/pcfclock-0.44.tar.gz
Da bei jeden neuen Kernel das Modul neu erzeugt werden muß, kann man sich eine manuelle Installation sparen. Mit folgenden Script wird das Modul bei Bedarf beim Booten gebaut. Die Uhrzeit wird im gleichen Rutsch gestellt. Die Datei habe ich auf einen LFS 6.0 System als /etc/rc.d/init.d/pcfclock angelegt:
#!/bin/sh
case "$1" in
  start)
        echo -n "Checking for modul /lib/modules/$(/bin/uname -r)/misc/pcfclock.ko... "
        if test -f /lib/modules/$(/bin/uname -r)/misc/pcfclock.ko
        then
                echo "found"
        else
                echo "not found"
                echo "I will compile it now for kernel $(/bin/uname -r)"
                cd /usr/src/pcfclock-0.44
                echo "make clean"
                make clean > /dev/null
                echo "configure"
                ./configure --sbindir=/sbin > /dev/null
                echo "make"
                make > /dev/null
                echo "make install"
                make install > /dev/null
                /bin/ls -l /lib/modules/$(/bin/uname -r)/misc/pcfclock.ko
        fi
        if test -c /dev/pcfclock0
        then
                echo "/dev/pcfclock0 already there"
        else
                echo "Creating /dev/pcfclock0"
                /bin/mknod -m 444 /dev/pcfclock0 c 181 0
        fi
        echo -n "Getting and setting current DCF77 time: "
        if test -f /lib/modules/$(/bin/uname -r)/misc/pcfclock.ko
        then
                if [ "$(/sbin/lsmod | grep pcfclock )" ]
                then
                        /sbin/pcfdate -s
                else
                        /sbin/insmod /lib/modules/$(/bin/uname -r)/misc/pcfclock.ko
                        /sbin/pcfdate -s
                fi
        else
                echo "Did not find pcfclock.ko modul, maybe it did not compiled correct"
                exit 0
        fi
        ;;
  stop)
        echo "Removing modul pcfclock.ko"
        /sbin/rmmod pcfclock.ko
        ;;
  status)
        echo -n "Current DCF 77 time: "
        /sbin/pcfdate
  esac
exit 0
Jetzt die Datei ausführbar machen und noch einen symbolischen Link im Runlevel 3 setzen (kann je nach Distribution auch ein anderer sein):
root@pd6000:/etc/rc.d/init.d # chmod 755 pcfdate
root@pd6000:/etc/rc.d/init.d # cd ../rc3.d
root@pd6000:/etc/rc.d/rc3.d # ln -s ../init.d/pcfdate S90pcfdate
Jetzt wird bei jeden Start des Rechners die Uhr gestellt.
Weiterhin gibt es in Samba die Möglichkeit, einen Zeitserver einzurichten. Dazu muß in der smb.conf im Abschnitt [global] folgende Zeile eingefügt werden:
time server = true
Unter Windows wird dann mit folgenden Befehl dir Uhrzeit abgeglichen:
net time \\namedessambaservers /set /y
Idealerweise setzt man diesen Befehl in ein Loginscript.
Viel Spaß mit "nie-wieder-Uhr-stellen" ;).

Ab Kernel 2.6.17 lässt sich der Treiber leider nicht mehr als Modul kompilieren. Ich habe zwar keinen Plan von C, aber mit folgenden Patch funktioniert es.

Falls man Fehlermeldungen erhält, das keine Uhr gefunden wurde, sollte man überprüfen ob die LCD Anzeige irgendetwas gescheites anzeigt. Wenn nicht, ist die Batterie leer. Bei mir war eine vom Typ GPA76 eingebaut. So eine habe ich als Ersatz nicht auftreiben können, aber eine Renata Typ 357 tut es auch. Zu beachten ist, das die Uhr sich nicht sofort wieder neu stellt, sondern erst nachts. Solange wird weiterhin nichts im LCD angezeigt.


zurück zur Linuxübersicht
Letzte Aktualisierung dieser Seite: 16. Januar 2007