Raspberry Pi als Funkuhr und NTP-Stratum-1-Zeitserver

© Maikloff, Fotolia

Chronometer

Mit einem DCF77-Funkempfängermodul ausgestattet, bezieht der RasPi nicht nur eine präzise Uhrzeit für alltägliche Anwendungen, sondern stellt diese auch im Netzwerk zur Verfügung.

README

Der RasPi ist ein zeitlos gutes Spielzeug – buchstäblich, denn er verfügt über keinen Uhren-Chip. Mit einem Empfänger für den Zeitzeichensender DCF77 synchronisiert sich der RasPi direkt mit der Atomuhr der Physikalisch-Technischen Bundesanstalt und somit mit der offiziellen Zeit Deutschlands. Fast schon nebenbei versorgt er als Stratum-1-NTP-Zeitserver andere Rechner im lokalen Netzwerk mit dieser Zeitinformation.

Wenn Sie schon einmal die Meldungen beim Hochfahren eines Raspberry Pis im Detail verfolgt haben, dann konnten Sie dabei feststellen, dass beim ersten Setzen der Systemuhr sowohl das Datum als auch die Uhrzeit in der Vergangenheit liegen – zum Teil recht deutlich, was davon abhängt wie lange der RasPi ausgeschaltet war.

Bei genauerem Hinsehen fällt außerdem auf, dass diese Zeit beim ersten Start der Distribution Raspbian "Wheezy" nur wenige Minuten vor dem Zeitstempel des Distributionabbilds liegt (Listing 1).

Listing 1

-rw-r--r--  1 pi pi 1939865600 Mai 25 19:59 2013-05-25-wheezy-raspbian.img
[...]
Starting fake hwclock: loading system time.
Sat May 25 17:56:59 UTC 2013
[...]

Das liegt daran, dass es weder im Systemchip des RasPis noch sonst irgendwo auf dem Board des Minirechners eine permanent laufende Real-Time-Clock (RTC) gibt, so wie sie jeder PC, jedes Notebook, Handy oder Tablet mitbringt. Daher lädt der Raspberry Pi die Systemzeit bei jedem Systemstart aus der Datei /etc/fake-hwclock.data, die bei jeder Raspbian-Version deren Entstehungszeitpunkt verewigt – beim Release 2013-05-25 eben dem 25. Mai 2013 um 17:56:59 Uhr UTC (was kurz vor 19:57 Uhr CEST entspricht – siehe Dateidatum des Raspbian-Images).

Schon kurze Zeit nach dem Systemstart stimmt die Zeit dann allerdings auf wenige Millisekunden genau – vorausgesetzt, der RasPi hat Zugang zum Internet. Dafür sorgen das Programm ntpdate und der Daemon ntpd (siehe Kasten "Der NTP-Daemon"), die über das Network Time Protocol NTP [1] mindestens einen NTP-Zeitserver kontaktieren.

Der NTP-Daemon

Der NTP-Daemon fungiert als Server und Client zugleich. Seine wesentliche Aufgabe besteht darin, die lokale Systemzeit im Kernel zu stellen und zu regeln. Als Client steht er über das Network Time Protocol NTP mit anderen Zeitservern im Internet in Verbindung und synchronisiert die lokale Zeit mit deren Zeitangaben über einen Phase-Locked-Loop-Regler (PLL). Zusätzlich kann der Daemon die Zeitinformation auch aus verschiedenen lokal angeschlossenen Zeitnormalen [3] beziehen. Gleichzeitig bietet er seine Zeitinformation per NTP im Netzwerk zur Synchronisation an.

NTP sieht zum Absichern der Qualität den Aufbau einer Zeitserver-Hierarchie vor, die jedem einzelnen Zeitserver jeweils einen sogenannten Stratum-Wert zuordnet. Der Wert 0 gilt für ein Zeitnormal (etwa eine Atomuhr oder einen Zeitzeichenempfänger), Werte größer 15 bezeichnen unsynchronisierte Uhren. Dabei erhält ein Zeitserver, der sich gegen ein Stratum(n)-Gerät synchronisiert, selbst einen Stratum-Wert von n+1.

Dabei setzt Ntpdate beim Hochfahren der Netzwerkschnittstelle die Systemzeit. Ntpd synchronisiert dann während der gesamten Laufzeit die lokale Systemzeit im Kernel mit der eines Zeitservers im Netz. Das kann er freilich nur bis zum nächsten Systemstopp, bei dem er dann die aktuelle Systemzeit für den Neustart in der bereits erwähnten Datei /etc/fake-hwclock.data sichert. Dieser Zeitstempel taucht dann beim nächsten Start des RasPi als initiale Systemzeit wieder auf. Im Embedded-Bereich ohne Internetzugang, aber auch in Inselnetzwerken reicht das nicht – doch guter Rat ist hier erfreulicherweise nicht teuer.

In Mainflingen bei Frankfurt am Main steht der Zeitzeichensender DCF77. Die Hüterin der deutschen Zeit, die Physikalisch-Technische Bundesanstalt (PTB, [2]) sendet über diesen eine Normalfrequenz von 77,5 kHz und, diesem Träger aufmoduliert, eine von einer Atomuhr stammende Zeitinformation aus. Jede Funkuhr im Umkreis von bis zu 2000 Kilometern (Abbildung 1) kann von dort ihren Zeit-Wert beziehen. Theoretisch könnte mithilfe des ausgestrahlten Zeitzeichensignals jeder Empfänger seine Systemzeit binnen einer Minute auf wenige Millisekunden Versatz genau abgleichen und langfristig auf etwa eine Mikrosekunde phasensynchron halten (siehe Kasten "DCF77-Zeitzeichen und Empfängermodule").

Abbildung 1: Standort und Reichweite des Zeitzeichensenders DCF77. (Karte: OpenStreetMap)

Für den praktischen Einsatz im Embedded-Bereich gibt es recht einfache und preisgünstige DCF77-Empfängermodule (siehe Tabelle "DCF77-Empfängermodule: Bezugsquellen"). Zwei davon – jene der Anbieter Conrad und Pollin – kamen für diesen Artikel zum Einsatz und bewiesen dabei ihre Tauglichkeit (Abbildung 2).

Abbildung 2: Der RasPi mit dem Conrad-Modul, zum Vergleich das Pollin-Modul ohne Beschaltung.

DCF77-Zeitzeichen und Empfängermodule

Für den Embedded-Bereich geeignete DCF77-Empfängermodule bieten ein aus der AM-Hüllkurve des 77,5-kHz-Trägers demoduliertes, digitales Signal an. Dieser serielle Datenstrom überträgt mit 1 bit/s einen 60-Bit-Datenblock pro Minute, in minutensynchrone Rahmen zusammengefasst. Die einzelnen Bits sind in den Pulsbreiten (100 ms: "0", 200ms: "1") kodiert. An einer seriellen Schnittstelle angeschlossen, kann ein spezieller Treiber im NTP-Daemon dieses Signal dekodieren.

Neben einigen anderen Informationen überträgt das DCF77-Signal Uhrzeit und Datum minutengenau in jedem Datenblock. Der Rahmenstart selbst legt auch den Startzeitpunkt der Minute fest. Zwar lässt sich die Zeitinformation im Datenpaket recht einfach dekodieren, doch die Genauigkeit jedes Pulsstart-Zeitpunkts hängt sehr von der Bandbreite und Qualität des Empfängers ab. Bei den in der Tabelle "DCF77-Empfängermodule: Bezugsquellen" vorgestellten Empfängern kann man mit einer Grundunsicherheit im Millisekundenbereich rechnen.

Tabelle "DCF77-Empfängermodule: Bezugsquellen"

Anbieter

WWW

Produkt

Artikelnummer

Conrad

http://www.conrad.de

C-Control DCF-Empfängerplatine

641138-62

ELV

http://www.elv.de

DCF-Empfangsmodul DCF-2

68-091610

Pollin

http://www.pollin.de

DCF-Empfangsmodul DCF1

810054

Reichelt

http://www.reichelt.de

DCF77-Modul

DCF77 MODUL

Serielle Schnittstelle

Normalerweise ist am RasPi die serielle Schnittstelle /dev/ttyAMA0 schon belegt: Beim Systemstart dient sie als Konsole für den Kernel-Debugger und zur Ausgabe der Boot-Meldungen, danach bietet der Minirechner dort ein Login-Terminal an.

Um das Empfängermodul betreiben zu können, müssen Sie diese Funktionen in den entsprechenden Konfigurationsdateien deaktivieren. Dazu entfernen Sie aus der Kernel-Kommandozeile in der Datei /boot/cmdline.txt alle Einträge, die ttyAMA0 enthalten (Listing 2). Außerdem kommentieren Sie in der Datei /etc/inittab die Zeile mit ttyAMA0 aus (Listing 3). Nach dem nächsten Systemstart ist die serielle Schnittstelle dann frei.

Listing 2

# alt:
# dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk02p2 rootfstype=ext4 elevator=deadline rootwait
# neu:
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk02p2 rootfstype=ext4 elevator=deadline

Listing 3

#Spawn a getty on Raspberry Pi serial line
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

NTP-Daemon vorbereiten

Um den NTP-Daemon einzurichten, installieren Sie mithilfe des Paketmanagers aus den Raspbian-Repositories die beiden Pakete ntp und ntpdate:

$ sudo apt-get install ntp ntpdate

Der NTP-Daemon versucht, auf etwaige Zeitnormalen grundsätzlich über eine der vier möglichen Zeitnormal-Gerätedateien /dev/refclock-0 bis /dev/refclock-3 zuzugreifen. Eine davon gilt es per symbolischen mit der seriellen Schnittstelle zu verbinden, am besten direkt im Start-Skript des NTP-Daemons (siehe Listing 4, Zeile 10).

Der NTP-Daemon läuft mit den Benutzer/Gruppen-Rechten ntp/ntp, die serielle Schnittstelle wird beim Systemstart aber mit den Rechten root/tty angelegt. Daher empfiehlt es sich, den Benutzer ntp dauerhaft in die Gruppe tty aufzunehmen:

$ sudo adduser ntp tty

Standardmäßig dient /etc/ntp.conf als Konfigurationsdatei für den NTP-Daemon. Aber jedes Mal, wenn eine Netzwerkschnittstelle hochkommt und dem DHCP-Client am RasPi einen NTP-Server mitteilt, legt dieser eine aktualisierte Konfiguration in /var/lib/ntp/ntp.conf.dhcp an und startet den NTP-Daemon mit dieser neu. Um nur das Empfängermodul als Zeitquelle zu betreiben, gilt es, entsprechende Konfigurationswechsel im Startskript zu deaktivieren.

In Listing 4 finden Sie ein Diff-File, das die entsprechenden Änderungen zusammenfasst. Speichern Sie es als ntp.diff in Ihrem Home-Verzeichnis ab und spielen Sie es anschließend mit dem Befehl patch -p0 /etc/init.d/ntp ntp.diff ins System ein.

Listing 4

--- ntp.old     2009-12-26 18:29:45.000000000 +0100
+++ ntp 2013-07-05 15:40:21.991558752 +0200
@@ -22,10 +22,14 @@
        . /etc/default/ntp
 fi
-if [ -e /var/lib/ntp/ntp.conf.dhcp ]; then
-       NTPD_OPTS="$NTPD_OPTS -c /var/lib/ntp/ntp.conf.dhcp"
+if [ ! -L /dev/refclock-0 ]; then
+       ln -s /dev/ttyAMA0 /dev/refclock-0
 fi
+#if [ -e /var/lib/ntp/ntp.conf.dhcp ]; then
+#      NTPD_OPTS="$NTPD_OPTS -c /var/lib/ntp/ntp.conf.dhcp"
+#fi
+
 LOCKFILE=/var/lock/ntpdate

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 7 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Bücher rund um den Raspberry Pi

    Rund um den Raspberry Pi haben Verlage weltweit eine breite Palette an Büchern auf den Markt geworfen. Die zum Teil umfangreichen Ausgaben versprechen umfassendes Wissen zum Mini-PC. Unsere Bücherecke nimmt einzelne Bücher unter die Lupe und zeigt, was Sie erwartet und ob sich der Kauf lohnt.

  • Erste Schritte mit dem Raspberry Pi

    Frisch ausgepackt liegt Ihr neuer Raspberry vor Ihnen auf dem Tisch – und jetzt? Wir führen Sie durch die ersten Schritte beim Zusammenbau der nötigen Komponenten und der Installation des Standard-Betriebssystems Raspbian.

  • Bücher rund um den Raspberry Pi

    Rund um den Raspberry Pi haben Verlage weltweit eine breite Palette an Büchern auf den Markt geworfen. Die zum Teil umfangreichen Ausgaben versprechen umfassendes Wissen zum Mini-PC. Unsere Bücherecke nimmt einzelne Werke unter die Lupe und zeigt, ob sich der Kauf lohnt.

  • GPIO-Pins unter Scratch verwenden

    Mithilfe der Programmiersprache Scratch und den GPIO-Pins des Raspberry Pi machen Sie aus dem eher langweiligen Spiele-Urgestein Pong einen echten Hingucker – samt leuchtender LEDs und einem zweiten Ball.

  • Daten-Logging am Fahrrad und Motorrad mit dem RasPi

    Studenten der FH Joanneum bringen den RasPi auf die Straße – als Data-Logger am Fahrrad oder Motorrad.

Aktuelle Ausgabe

08/2018
Projekte & Hacks

Diese Ausgabe als PDF kaufen

Preis € 7,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Fernverkehr

    Zwar wurde I2C eigentlich für die interne Gerätekommunikation konzipiert, doch mithilfe geeigneter Extender-Bausteine überbrückt der Bus Distanzen bis zu 100 Metern.

  • Neues auf der Heft-DVD

    Nur mit dem optimalen System und der richtigen Software nutzen Sie das volle Potenzial eines Mini-PC. Mit der Heft-DVD erhalten Sie nicht nur die neusten Distributionen für den RasPi und Co., sondern gleichzeitig auch die passenden Programme zu den Artikeln.

  • Farbenspiele

    Der winzige Sensorbaustein APDS-9960 vereint vier unterschiedliche Anwendungsfälle in einem Chip.

  • Finger weg!

    Mit einem Read-only-Dateisystem schützen Sie die SD-Karte vor dem Altern durch Schreibvorgänge. Beim Aufsetzen gilt es, einige wichtige Punkte zu beachten.

  • Auf Zuruf

    Mit dem bereits Anfang 2017 angekündigten und jetzt endlich verfügbaren Voice offeriert Matrix Labs eine neue Erweiterung, die den Raspberry Pi fit für Sprachsteuerung machen soll.

  • Experimentell

    Wer elektronische Schaltungen entwirft, experimentiert oft erst einmal mit einem Breadboard. Genau für diese Bastler bietet sich der NanoPi-Duo als Steuerrechner an.

  • Aufgemöbelt

    Mit dem Desktop-Kit von Farnell gibt der RasPi auch auf dem Schreibtisch technisch und optisch eine gute Figur ab.

  • PiBot

    Aus einem Fischertechnik-Baukasten lässt sich schon mit wenigen Teilen ein Roboter aufbauen. Fehlt nur noch ein Gehirn: Das stellt der Raspberry Pi.

  • Heißkalt serviert

    Wie verwandelt sich ein Linux-System auf einem RasPi in einen Datenlogger? Indem es mit einem Bluetooth-fähigen Multimeter spricht.

  • Türwächter

    Der RasPi beteiligt sich am Internet der Dinge und wacht als smartes Schließsystem autonom über den Zugang zum Eigentum.