Gekoppelt mit einem DCF77-Funkmodul, eignet sich der RasPi perfekt als hochpräziser Zeitgeber fürs heimische LAN. Das Einrichten des Gespanns hat sich jedoch in den letzten Jahren drastisch verändert.
Er klang dann doch etwas verzweifelt, der Hilferuf, der die Redaktion kürzlich erreichte. Ein Leser hatte sich vorgenommen, seinen mit Pi OS “Buster” und einem DCF77-Modul von Conrad bestückten RasPi 3B+ nach unserer Anleitung aus dem Jahr 2014 [1] in eine Funkuhr zu verwandeln. Die damals vorgestellte Software mochte allerdings auf dem sieben Jahre jüngeren Betriebssystem [2] nicht mehr laufen, und selbst wenn es möglich gewesen wäre, hätte es nichts genutzt, wie wir noch sehen werden. Ein Rollback auf das Raspbian “Wheezy” von 2013 wäre auch keine Lösung gewesen: Auf einem RasPi 3 bekommt man es nicht mehr gebootet.
Mithilfe des vorliegenden Artikels verwandeln Sie einen aktuellen Raspberry Pi mit ebenso aktuellem Betriebssystem in einen NTP-Zeitserver mit Funkuhr für ein lokales Netzwerk, zum Beispiel für ein Insel-LAN ohne Anbindung ans Internet. In dieser Hinsicht ersetzt er den ursprünglichen Artikel vollständig. Den haben wir aber dennoch für Sie zum Download (QR-Code am Ende des Artikels) bereitgestellt, damit Sie bei Interesse nachvollziehen können, was sich in der Zwischenzeit so alles verändert hat.
Der Lauf der Zeit
Was hat sich also in diesen sieben Jahren getan, und warum scheitert das 2014 vorgestellte Kochrezept mittlerweile zwangsläufig? Am Zeitzeichensignal [3] der Physikalisch-Technischen Bundesanstalt (PTB) liegt es nicht, denn das wird seit 1973 praktisch unverändert vom Langwellensender Mainflingen ausgestrahlt. Die Technik der Empfänger (siehe Tabelle “DCF77-Empfängermodule: Bezugsquellen”) und die Dekodierung der Zeitinformation [4] blieb also gleich.
|
Anbieter |
WWW |
Produkt |
Artikelnummer |
|---|---|---|---|
|
Conrad |
C-Control DCF-Empfängerplatine |
641138-62 |
|
|
ELV |
DCF-Empfangsmodul DCF-2 |
68-091610 |
|
|
Pollin |
DCF-Empfangsmodul DCF1 |
810054 |
|
|
Reichelt |
DCF77-Modul |
DCF77 MODUL |
Die wesentlichen Änderungen fanden, wie nicht anders zu erwarten, am Raspberry Pi statt. Das betrifft in Sachen Hardware die Darstellung und Anwendung der UART [5] sowie bei der Software den Boot-Prozess und die Umstellung von SysVinit auf Systemd [6]. In den nächsten zwei Abschnitten gehen wir im Detail auf diese beiden Bereiche ein, erst dann geht es an die eigentliche Konfiguration des NTP-Servers.
UART
Mittlerweile gibt es in der Raspberry-Pi-Dokumentation eine recht umfangreiche Seite zur seriellen Schnittstelle und deren Konfiguration über die verschiedenen Hardware-Versionen hinweg [5]. Das ist wegen der Komplexität des Themas auch dringend notwendig.
Vereinfacht gesagt: Auf jedem Raspberry-Pi-SoC sind zwei verschiedene UART-Hardware-Typen verbaut, und nur mit einem (PL011, Gerätedatei /dev/ttyAMA0) bekommt man den DCF77-Empfänger ans Laufen. Beim anderen (miniUART, /dev/ttyS0) gelingt das (zumindest dem Autor) nicht.
Hinzu kommt die Unterscheidung zwischen dem primären (Gerätedatei /dev/serial0) und sekundären (/dev/serial1) UART. Normalerweise lässt sich nur der primäre UART auf der GPIO-Stiftleiste (TxD auf GPIO14/Pin 8 und RxD auf GPIO15/Pin 10) erreichen. Er stellt in der Standardkonfiguration den Anschluss für eine Linux-Konsole bereit, wogegen der sekundäre UART sie bei den Modellen mit Bluetooth-Funktion bedient.
Sie müssen nun abhängig vom verwendeten RasPi-Modell entsprechend der UART-Dokumentation [5] den UART vom Typ PL011 als primären UART konfigurieren. Nutzen Sie einen Pi Zero, RasPi 1 oder RasPi 2, brauchen Sie in der Standardkonfiguration nichts mehr zu tun.
Handelt es sich aber um einen Pi Zero W, RasPi 3 oder RasPi 4, dann müssen Sie eine der beiden Zeilen in Listing 1 aktivieren. Die im Listing gezeigte Konfiguration mit auskommentiertem Overlay miniuart-bt deaktiviert Bluetooth komplett. Kommentieren Sie dagegen die obere Zeile aus und aktivieren die unteren, wäre Bluetooth über den miniUART zwar aktiv, aber möglicherweise in der Performance eingeschränkt. In beiden Fällen fungiert nach einem Neustart PL011 jetzt als primärer UART. Wenn der symbolische Link serial0 auf ttyAMA0 zeigt, passt alles (Listing 2, erste Zeile).
Listing 1
/boot/config.txt
[..] dtoverlay=disable-bt #dtoverlay=miniuart-bt [..]
Listing 2
UART-Konfiguration prüfen
$ ls -gG /dev/serial?
lrwxrwxrwx 1 7 Apr 25 22:34 /dev/serial0 -> ttyAMA0
lrwxrwxrwx 1 5 Apr 25 22:34 /dev/serial1 -> ttyS0
Nun müssen Sie noch die Linux-Konsole auf dem primären UART deaktivieren. Dazu entfernen Sie wie in Listing 3 gezeigt in der Datei /boot/cmdline.txt den Eintrag der Konsole in der Kernel-Kommandozeile. Nach einem anschließenden Neustart können Sie das DCF77-Empfängermodul an der GPIO-Stiftleiste anschließen.






