|







| |
DCF77 - Der Zeitsender
Die
in Braunschweig
betreibt eine der genauesten Atomuhren der Welt. Sie weicht weniger
als eine Sekunde in 300 000 Jahren ab. Uhrzeit und Datum werden von
dem Sender "DCF77" mit 77,5 kHz ausgestrahlt. Der Sender befindet
sich in Mainflingen bei Frankfurt/Main.
Das Zeitsignal hat eine Reichweite von 2000 km (siehe Karte).
|
Zeitsynchronisation in einem
Windows Netzwerk:
Windows als NTP Client / Server
Windows XP/Server
2003 kann bereits selbständig einen NTP Server abfragen und die Zeit
angleichen. Die Einstellungen können in der Systemsteuerung unter
"Datum/Uhrzeit" vorgenommen werden.
Damit Windows XP/Server 2003 auch als NTP-Server fungiert, sind im
Registryschlüssel HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time
folgende Einträge nötig:
|
Variable |
Wert |
Bemerkung |
|
Parameters\Type |
NTP |
|
|
Config\AnnounceFlags |
5 |
Der Server ist ein "Verlässliche Zeitquelle" (Reliable time
source) |
|
TimeProviders\NtpServer\Enabled |
1 |
|
|
Parameters\NtpServer |
|
Falls die Systemzeit von einer Funkuhr synchronisiert wird,
freilassen. Falls nicht, eine durch Leerzeichen getrennte
Liste von Zeitservern (IP-Adressen oder DNS Namen) |
Starten Sie den
Dienst nach den änderungen neu. Hier die Microsoft Support Artikel:
Windows XP und Windows 2003 Server
Windows 2000
Windows 2000
bietet mit dem integrierten Dienst "w32time.exe" die
Möglichkeit als NTP Server oder Client zu fungieren. Zur Aktivierung
des NTP-Client/Servers unter Windows 2000 müssen dem System die
erforderlichen Parameter bekannt und der entsprechende Zeitdienst
dauerhaft gestartet sein.
Der Zeitdienst findet sich unter "Verwaltung/Dienste" als
"Windows-Zeitgeber" (engl.: "Windows Time"). Er sollte nach
Einstellung der Parameter mit dem Autostarttyp "Automatisch"
gestartet werden. (Starts und Stopps dieses Dienstes sind auch mit
den Command-Line-Befehlen "net start w32time" beziehungsweise
"net stop w32time" möglich.)
Die für den Zeitdienst relevanten Parameter finden sich alle in der
Registry und lassen sich dort bei Bedarf auch editieren:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters.
Eine Dokumentation der einzelnen Registry-Einträge finden Sie bei
Microsoft.
Damit Windows 2000 als NTP-Client fungieren kann ist die Adresse des
Zeit-Servers, der bei jeder Synchronisation abgefragt werden soll,
einzutragen. Der oder die ausgewählten NTP-Server lassen sich
entweder in der Registry unter dem Eintrag "ntpserver"
editieren oder mit dem Command-Line-Befehl "net time /setsntp[:NTP-Serverliste]".
(Wird eine ganze Liste eingegeben, so sind die einzelnen Adressen
durch Leerzeichen abzutrennen und die Liste beim net-Befehl in
Anführungszeichen zu setzen.) Beim nächsten Start des Zeitdienstes
werden die Einträge übernommen und die Zeit synchronisiert.
Standardmäßig geschieht dies dann in Folge alle acht Stunden.
Die Frequenz versteckt sich unter dem Eintrag "Period" und
ist standardmäßig als REG_SZ mit dem Wert "SpecialSkew"
abgelegt. Um beispielsweise 24-mal am Tag zu synchronisieren, muss
dieser "Period"-Eintrag durch einen entsprechenden REG_DWORD
mit dem Dezimalwert 24 ersetzt werden (das heißt: den alten Eintrag
komplett löschen oder umbenennen und einen Neueintrag zur Eingabe
numerischer Werte anlegen).
Die aktuell gesetzten Zeit-Server lassen sich übrigens auch via
Command-Line mit dem Befehl "net time /querysntp" anzeigen.
Damit Windows 2000 nicht nur als NTP-Client, sondern auch als Server
fungiert, ist in der Registry folgender Eintrag nötig: "LocalNTP"
muss von standardmäßig "0" auf "1" gesetzt werden.
Nach anschließendem Neustart des Dienstes können jetzt auch
beliebige NTP/SNTP-Clients von diesem Windows-2000-Rechner die Zeit
abfragen. Ein weiterer Parameter in der Registry könnte
gegebenenfalls interessant werden: die Frequenz, mit der die
Zeit-Server von Windows 2000 abgefragt werden.
Eventuelle Fehlermeldungen des Zeitdienstes werden im
Systemprotokoll der Ereignisanzeige eingetragen. Zu Diagnosezwecken
lässt sich übrigens auch die Command-Line-Utility "w32tm.exe"
nutzen, der Zeitdienst muss dabei deaktiviert sein. Eine übersicht
der Aufrufvarianten bietet der Hilfe-Befehl "w32tm /?".
Beispielsweise kann mit "w32tm -once" eine einmalige
Synchronisation mit detaillierter Anzeige ausgelöst werden.
Windows NT
Dieser Dienst ist
auch für Windows NT erhältlich und ersetzt den alten Zeitdienst
Timeserv aus dem NT Resource-Kit. Microsoft bietet w32time für
Windows NT hier (FTP) zum Download an
|
NTP mit einer Expert mouseCLOCK (USB) unter Linux betreiben
Die Expert
mouseCLOCK kann mit
Hilfe des NTP Paketes unter Linux betrieben werden. NTP steht
für NetworkTimeProtocol. Es wird verwendet um die Systemzeit von
Computern über TCP/IP zu synchronisieren.
Windows 2000 und Windows XP lassen sich bereits ohne
Zusatzsoftware als NTP Client/Server konfigurieren.
Das NTP Netzwerkprotokoll arbeitet auf TCP bzw. UDP Port 123. Mit
NTP können Sie einen eigenen NTP Server aufbauen, welcher die
Expert mouseCLOCK
am ComPort bzw. USB-Port abfragt und die daraus resultierende
Zeitinformation im Netz bereitstellt. Das Paket besteht im
Wesentlichen aus folgenden Komponenten, die nach Kompilierung zur
Verfügung stehen:
| ntpd |
: NTP Daemon v4.2.2 |
| ntpq |
: NTP Analyse Tool |
| ntp.conf |
: Konfigurationsdatei /etc/ntp.conf |
| testdcf |
: Tool zum Testen des DCF Signals ohne NTP |
Betreiben Sie eine
Expert mouseCLOCK
an einem USB-Port, benötigen Sie den Linux
USB-Treiber der Expert mouseCLOCK.
|
NTP Installation
Das Paket herunterladen und kompilieren können
Sie entweder mit dem Skript
make_all.sh oder indem Sie die folgenden beiden Schritte NTP
Download und NTP kompilieren durchführen. Das Skript
kompiliert übrigens NTP direkt für die Expert mouseCLOCK,
Expert GPS CLOCK und EMC Professional. Dem tgz liegt
zusätzlich noch eine Beispiel Konfiguration ntp.conf und ein
Beispiel rc-script (s.u) bei.
NTP Download
Viele Linux Distributionen bzw. Unix Derivate
verfügen bereits über einen compilierten ntpd und dessen zugehörige
tools, jedoch kann es sein, dass der Hersteller beim Kompilieren des
ntpd den notwendige Treiber für das Format auf der seriellen
Schnittstelle nicht eingebunden hat. Dies ist besonders bei
internationalen Distributionen der Fall, da DCF ein örtlich sehr
begrenztes Signal ist. (das ntp RPM von S.u.S.E. Linux ist jedoch
vollständig und kann direkt verwendet werden, so dass Sie mit NTP
Konfiguration fortfahren können.) Andernfalls empfehlen wir den
aktuellen NTP-Quellcode zu beziehen, diesen zu Kompilieren und zu
installieren: Die neuste Version von NTP ist v4.2 und kann bei
http://ntp.isc.org/ bezogen werden. Neben den Quellpaketen (TGZ)
finden Sie dort auch ausführliche Dokumentation zur Installation und
Konfiguration eines NTP Servers.
NTP kompilieren
Entpacken Sie das TGZ Packet mit
gzip -d ntp-4.2.2.tar.gz && tar -xvf ntp-4.2.2.tar
und wechseln Sie in das von tar neu angelegte Verzeichnis. Erstellen
Sie ein Makefile mit dem Befehl
./configure --enable-RAWDCF
kompilieren Sie die Quellen mit
make
und installieren Sie die Binaries mit
make install
Waren alle Schritte erfolgreich, können Sie nun mit der
Konfiguration beginnen.
|
|
NTP Konfiguration
Bei seriellem Anschluss:
Schließen Sie die Expert mouseCLOCK
an einen freien ComPort an. NTP greift durch den symbloischen Link /dev/refclock-0
auf die Expert mouseCLOCK
zu. Haben Sie die mouseCLOCK beispielsweise an COM1angeschlossen,
dann muss /dev/refclock-0 auf /dev/ttyS0 (für COM2 /dev/ttyS1 usw.)
zeigen. Besitzen Sie eine Linux Distribution mit einem Kernel 2.4
(oder älter) können Sie den Link mit
ln -s /dev/ttyS0 /dev/refclock-0 erstellen.
Ab Kernel 2.6 verwaltet udev die Eingabe/Ausgabe
Gerätedateien. Damit der Link auf refclock-0 von udev automatisch
erstellt wird, muss eine "rule" für diesen Link angelegt werden.
Wechseln Sie dazu in den Ordner rules.d Ihres udev-Verzeichnises (
z.B. /etc/udev/rules.d). öffnen Sie die Datei 50-udev.rules
und fügen Sie
KERNEL=="ttyS0", NAME="%k", SYMLINK="refclock-%n", GROUP="uucp"
an die Stellen, wo die seriellen Schnittstellen defeniert werden.
Anschließend muss udev bzw. der Rechner neugestarted werden.
Als Beispiel ein Ausschnitt aus der 50-udev.rules einer Suse
Distribution inklusive der Regel für den refclock Link.
# serial devices
KERNEl=="ttyS0", NAME="%k", SYMLINK="refclock-%n", GROUP="uucp"
KERNEL=="tty[A-Z]*", NAME="%k", GROUP="uucp"
KERNEL=="pppox*", NAME="%k", GROUP="uucp"
|
Bei USB Anschluss:
Zur Installation des USB-Treibers müssen die Kernelquellen eines
2.6er Kernels bereits in /usr/src/linux vorliegen und die Quellen
des
USB-Treiber vorhanden sein. Melden Sie sich als root an und
entpacken Sie das Archiv mit tar -xvzf
gudedcf_v2.11_Kernel_2.6.x.tgz. Wechseln Sie in das von Tar
erstellte Verzeichnis gudedcf. Dort befinden sich jetzt folgende
Dateien:
drwxr-xr-x 6 root root 352 Feb 6 15:34 .
drwxr-xr-x 6 root root 360 Feb 6 12:20 ..
-rw-r--r-- 1 root root 1370 Feb 1 12:13 Makefile
-rw-r--r-- 1 root root 2866 Jan 11 13:08 Readme.txt
drwxr-xr-x 4 root root 392 Feb 6 15:02 build
-rw-r--r-- 1 root root 15797 Jan 20 14:49 gude_dcf.c
drwxr-xr-x 3 root root 232 Jan 11 13:04 kernel_patch
drwxr-xr-x 3 root root 288 Jan 17 15:45 ntp_tools
|
Mit make test kann überprüft werden, ob die
Kernel Quellen installiert sind. Die Ausgabe sollte wie folgt
aussehen:
linux: /usr/src/gudedcf # make test
Checking for Kernel build found '/lib/modules/2.6.11.4-20a-default/build'
Checking for Kernel source found '/lib/modules/2.6.11.4-20a-default/source'
Checking for Kernel version found '2.6.11'
|
Führen Sie den Befehl
make
aus, um den Treiber zu kompilieren. Führen Sie anschließend
make install
aus. Damit wird gude_dcf.ko in das Verzeichnis /lib/modules kopiert.
Mit make load kann der Treiber geladen werden. Der Treiber
legt auch den für NTP wichtigen symbolischen Link refclock-0
an. Wenn Sie den Treiber als Kernel Patch installieren möchten,
finden Sie in der readme.txt eine Anleitung.
|
ntp.conf einrichten
Jetzt muß nur
noch der richtige Treiber in der Datei /etc/ntp.conf angegeben
werden. Hier eine ausreichende Beispielkonfiguration:
server 127.127.8.0 prefer mode 14
logfile /var/log/ntp
logconfig =all
driftfile /var/log/ntp.drift
|
dies bedeutet,
daß die Zeitinformation mit Hilfe des Treibers 14 der Gruppe 8
vom Device reflock-0 geholt werden soll. Zu Testzwecken können
Sie hier auch den Treiber 127.127.1.0 wählen, was NTP veranlaßt,
nur die rechnerinterne CMOS Uhr als Zeitinformation zu
verwenden.
|
NTP Starten
Zum manuellen
Start von NTP koennen Sie das binary ntpd einfach dort wo es
installiert ist starten, z.B. per '# /usr/sbin/ntpd'. Um eine
genaue Aussage über die Empfangsqualität des Empfängers zu
erhalten, müssen Sie das Programm ntpq verwenden (Befehl "ntpq
-c clocklist"). Wird ntpq ohne weitere Optionen aufgerufen,
so wird der Localhost als NTP-Server angenommen, die Steuerung
von ntpq erfolgt dann über die Kommandozeile.
status=0001 clk_okay, last_clk_noreply,
device="RAW DCF77 CODE (DTR SET/RTS CLR)",
timecode="-----------------D--S124-12-P124-1-p-2--1-1-----8--2------P",
poll=29, noreply=1, badformat=3, baddata=0, fudgetime1=258.000,
fudgetime2=0.000, stratum=0, refid=DCFa, flags=0,
refclock_time="c10254a1.00000000 Mon, Aug 12 2002 15:37:05.000 UTC",
refclock_status="DST; TIME CODE; (LEAP INDICATION; ANTENNA)",
refclock_format="RAW DCF77 Timecode",
refclock_states="*NOMINAL: 00:29:05 (94.07%); NO RESPONSE: 00:01:16 (4.09%);
ILLEGAL DATE: 00:00:34 (1.83%); running time: 00:30:55"
|
In diesem
Beispiel hat die Uhr bei einer Gesamtlaufzeit von ca. 31 Minuten
(siehe running time) etwa 30 Minuten lang guten Empfang. Dies
entspricht 94.07%.
Mit dem Kommando "peers" werden in einer Tabelle die
aktiven Referenzuhren zeilenweise angezeigt. Ein der Zeile
vorangestellter Stern "*" zeigt an, dass dieser Peer die
aktuelle Zeitreferenz ist:
ntpq -c peers localhost
remote refid st t when poll reach delay offset jitter
==============================================================================
*GENERIC(0) .DCFa. 0 l 5 64 1 0.000 22.846 0.008
|
Folgende
Informationen werden u.a. angezeigt:
| - remote |
: Auflistung aller
verfügbaren Zeit-Server (ntp.conf) |
| - refid |
: Referenznummer
|
| - when |
: wann die letzte
Abfrage stattgefunden hat (in Sekunden) |
| - poll |
: in welchem Intervall
der Zeitserver abgefragt wird |
| - offset |
: Differenz zwischen
Systemzeit und Referenzzeit (in Millisekunden) |
|
NTP
Daemon einrichten
Wie alle Unix
Systemdienste (daemons) sollte ntpd mit Hilfe eines sog.
rc-script gestarted werden. Verwenden Sie ntp aus dem RPM von
SuSE Linux, so finden Sie ein solches rc-script in /etc/init.d/xntpd.
Hiermit koennen Sie per '# /etc/init.d/xntpd start' bzw. '#
/etc/init.d/ntpd stop' den NTP Daemon starten bzw.
herunterfahren. Im folgenden finden Sie ein Beispiel eines
solchen rc-scripts, falls Sie ntpd selbst compiliert haben.
Um das rc-script automatisch beim Systemstart zu starten, müssen
Sie dafür sorgen, dass in den relevanten runleveln ein Link auf
/etc/init.d/xntpd angelegt ist. (SuSE Linux user können hierfür
den Runlevel Editor in 'yast' verwenden).
Startscript für NTP-Daemon:
case "$1" in
start)
echo -n "Starting ntpd "
/usr/sbin/ntpd
echo -e " done"
;;
stop)
echo -n "Shutting down ntpd:"
killall /usr/sbin/ntpd
echo -e " done"
;;
reload|restart)
$0 stop && $0 start
;;
status)
echo -n "Checking for service ntpd: "
checkproc /usr/sbin/ntpd && echo OK || echo No process
;;
*)
echo "Usage: $0 {start|stop|status|reload|restart}"
exit 1
esac
|
Nach einer
erfolgreichen Synchronisation taucht im NTP-Logfile folgende
Nachricht auf:
ntpd[967]: PARSE receiver #0: packet format "RAW DCF77 Timecode"
ntpd[967]: PARSE receiver #0: STATE CHANGE: -> DST; TIME CODE;
ntpd[967]: PARSE receiver #0: SYNCHRONIZED
ntpd[967]: clock GENERIC(0) event 'clk_okay' (0x00)
|
Herzlichen
Glückwunsch, Ihr Server fungiert jetzt als NTP Zeit-Server!
|
alle Angaben ohne Gewähr
|