Raspberry Pi Uhrzeit über GPS beziehen – Zeitserver

Ntp Test1 – Raspberry Pi Uhrzeit über GPS beziehen – Zeitserver

Wer seinen Raspberry Pi ohne Internetanbindung betreibt, steht schnell vor dem Problem: Keine korrekte Uhrzeit – denn dem kleinen Mini-Computer fehlt eine eingebaute Echtzeituhr (RTC). Eine elegante Lösung ist ein GPS-Empfänger mit PPS-Signal. Damit lässt sich der Raspberry Pi auf Mikrosekunden genau synchronisieren – ganz ohne Internet.

In diesem Tutorial zeige ich euch, wie ihr mit einem GPS-Modul und chrony einen präzisen GPS-Zeitserver auf dem Raspberry Pi einrichtet. Chrony unterstützt PPS nativ und ist die moderne Empfehlung gegenüber dem klassischen NTP-Daemon – kein manuelles Kompilieren mehr nötig!

Hardware: GPS-Modul mit PPS-Signal

Für dieses Projekt braucht ihr ein GPS-Modul, das ein PPS-Signal (Pulse Per Second) ausgibt. Der PPS-Pin liefert genau einen Impuls pro Sekunde – präzise auf die GPS-Atomuhr synchronisiert.

Empfehlung: Verwendet ein NEO-M8N GPS-Modul – dieses hat einen dedizierten PPS-Ausgangspin und ist deutlich einfacher zu verkabeln als das ältere NEO-6M. Beim NEO-6M müsste das PPS-Signal nämlich direkt am Chip abgelötet werden (PIN3 des Moduls oder am Vorwiderstand) – das ist möglich, aber unnötig fehleranfällig.

Zusätzlich benötigt ihr:

Die Einrichtung des GPS-Moduls selbst (gpsd, serielle Schnittstelle) ist in unserem GPS-Modul Tutorial beschrieben. Stellt sicher, dass gpsd läuft und NMEA-Daten geliefert werden, bevor ihr hier weitermacht.

PPS-Signal: Verkabelung

Das PPS-Signal wird an GPIO18 (PIN 12) des Raspberry Pi angeschlossen. Diese Belegung ist wichtig, da wir sie später in der Konfiguration referenzieren.

GPS-Modul Pin Raspberry Pi PIN-Nummer
PPS GPIO18 PIN 12
GND GND PIN 6
TX RXD (GPIO15) PIN 10
RX TXD (GPIO14) PIN 8
VCC 3.3V oder 5V PIN 1 oder PIN 2

PPS aktivieren in /boot/firmware/config.txt

Auf aktuellen Raspberry Pi OS Versionen (Bookworm) liegt die Boot-Konfiguration unter /boot/firmware/config.txt – nicht mehr unter /boot/config.txt. Öffnet die Datei mit:

Fügt am Ende der Datei folgende Zeile hinzu:

Speichert mit STRG+X, dann Y und ENTER. Das PPS-Kernel-Modul wird durch das Overlay automatisch geladen – ein manueller Eintrag in /etc/modules ist bei Bookworm nicht mehr nötig.

Dann macht einen Reboot:

Software installieren: pps-tools und chrony

Nach dem Neustart installieren wir die notwendigen Pakete:

Warum chrony statt ntp? Chrony unterstützt PPS-Quellen nativ und ist in Raspberry Pi OS Bookworm die Standard-Zeitdienst-Software. Mit dem klassischen ntpd müsstet ihr den Dienst manuell mit --enable-ATOM neu kompilieren – das ist aufwendig und unnötig.

PPS testen

Bevor wir chrony konfigurieren, testen wir ob das PPS-Signal korrekt ankommt. Ihr solltet nach dem Reboot – bei GPS-Empfang – jede Sekunde eine Ausgabe sehen:

Eine erfolgreiche Ausgabe sieht so aus:

Mit STRG+C beendet ihr den Test. Falls keine Ausgabe kommt, prüft die Verkabelung und den GPS-Empfang (freie Sicht zum Himmel erforderlich).

chrony konfigurieren

Jetzt konfigurieren wir chrony so, dass es sowohl die GPS-Zeitdaten via gpsd (SHM-Interface) als auch das präzise PPS-Signal nutzt. Öffnet die chrony-Konfigurationsdatei:

Fügt folgende Zeilen hinzu (am Anfang der Datei, vor den bestehenden Server-Einträgen):

Die erste Zeile bindet die GPS-Zeitdaten via gpsd ein (SHM = Shared Memory). Die zweite Zeile nutzt das präzise PPS-Signal und koppelt es an die GPS-Quelle (lock GPS). Das PPS-Signal allein kennt keine absolute Uhrzeit – es braucht die GPS-Daten als Anker.

Möchtet ihr den Pi als reinen Offline-Zeitserver betreiben, könnt ihr die bestehenden Internet-NTP-Server in der Konfiguration auskommentieren oder entfernen. Für einen Betrieb mit Internet-Fallback könnt ihr sie auch einfach stehen lassen.

Dann startet chrony neu:

Synchronisierung prüfen mit chronyc

Nach dem Neustart dauert es einige Minuten, bis chrony die Zeitquellen ausgewertet hat. Den Status prüft ihr mit:

Eine gute Ausgabe sieht ungefähr so aus:

Das * zeigt die aktuell verwendete Hauptquelle an, + kennzeichnet Quellen die als Backup genutzt werden. Wenn PPS als Quelle erscheint und der Offset im Nanosekundenbereich liegt, ist alles perfekt konfiguriert.

Mit folgendem Befehl seht ihr noch mehr Details:

Zeitzone einstellen

Falls ihr die Zeitzone noch nicht konfiguriert habt, erledigt das mit timedatectl – deutlich komfortabler als das alte dpkg-reconfigure:

Prüfen könnt ihr die aktuelle Einstellung mit:

Eine Liste aller verfügbaren Zeitzonen gibt es mit:

Fazit

Ihr habt jetzt einen GPS-basierten Zeitserver auf eurem Raspberry Pi – präzise, ohne Internet und ohne manuelles Kompilieren. Chrony macht die PPS-Unterstützung heute kinderleicht. Wer mehrere Pis im Heimnetz hat, kann diesen Pi als lokalen NTP-Server betreiben und alle anderen Geräte darauf zeigen lassen – einfach in der chrony.conf den entsprechenden allow-Eintrag setzen.

Ähnliche Beiträge