Raspberry Pi: NTP und GPS (2)

Im Artikel Raspberry Pi: NTP und GPS habe ich beschrieben, wie ein GPS Dongle als Zeitquelle in GPS genutzt wird. Rein prinzipiell wird der Paspberry Pi dadurch zu einem Stratum 1 Zeitserver, denn GPS ist eine Stratum 0 Zeitquelle.

Drei Dongle im Vergleich

Nur wie genau ist ein einfacher GPS Dongle als Zeitquelle. Dazu habe ich mir zusätzlich zu einem alten Dongle noch zwei neuere USB-GPS-Dongle besorgt. Diese drei habe ich miteinander (und nacheinander) an einem Raspberry Pi mit 4 GB verglichen, indem ich den Offset und Jitter der Zeit in NTP verglichen habe.

Folgende USB-GPS-Dongle habe ich benutzt:

  1. VK-162 G-Mouse mit Kabel (23,95 €)
  2. G72 G-Mouse (19,95 €)
  3. Navilock NL-701US (67 € bis 94 €)

Den Navilock NL-701US habe ich 2017 bei Reichelt gekauft. Er ist immer noch zu haben und kostet zwischen 67 € und 94 €. Er hat einen u-blox 7 Chipsatz, während die beiden anderen einen u-blox 8 Chipsatz verwenden.

Wie gut ist die GPS Zeit?

Um die drei Dongle miteinander zu vergleichen, habe ich sie über drei Nächte nacheinander an einem Raspberry Pi 4 angeschlossen und den Offset und Jitter zwischen 00:00 und 06:00 Uhr UTC aufgezeichnet. Die Dongle lagen jeweils auf der Fensterbank meines Arbeitszimmers.

Ziel war es, den Wert für time1 in fudge 127.127.28.0 time1 0.0 refid GPS in der /etc/ntp.conf zu bestimmen.             

time1 sec
                    Specifies a constant to be added to the time offset produced by the driver, a fixed-point decimal number in seconds. This is used as a calibration constant to adjust the nominal time offset of a particular clock to agree with an external standard, such as a precision PPS signal. It also provides a way to correct a systematic error or bias due to serial port or operating system latencies, different cable lengths or receiver internal delay.

man ntp.conf

Da mit kein präzises PPS Signal zur Verfügung steht, musste als externer Standard die Fritz!Box herhalten, die über den Zeitserver ntp1.t-online.de synchronisiert wird. Dank LAN und DSL 100/40 spielt der Delay und Offest zur Fritz!Box keine zwischen entscheidende Rolle. Offset und Jitter gegenüber der Fritz!Box (IP: 192.168.20.1) war im Schnitt deutlich unter 0,1 ms.

Offset unter Jitter auf dem Pi 4 während der zweiten Nacht gegenüber der Fritz!Box.

VK-162 G-Mouse

Die VK-162 G-Mouse habe ich – nach dem Navilock NL-701US – ausprobiert. Sie zeigte im Gegensatz um alten Dongle sehr viel schneller einen 3D-Fix mitten im Wohnzimmer an meinem Laptop.

Im Nachtlauf am Raspberry Pi ergab sich ein mittlerer Offset von -36,78 ms.

PeerOffset øOffset StdErrOffset MedianJitter øJitter StdErr
VK-162 G-Mouse-36,6782232,469701-36,6842851,2696841,556906
192.168.20.1-0,0154730,0823270,0022450,1101570,054253
Tabelle Mittelwerte und Standardabweichung Offset und Jitter für VK-162 G-Mouse (n=1620)

Über die 6 Stunden sah die Verteilung wie im folgenden Diagramm aus:

Offset und Jitter VK-162 G-Mouse (n=1620)

Ganz zufällig streut der Offset nicht. Hier können Umweltbedingungen, wie Wolken und Regen eine Ursache sein. Für die Ausreißer um 3 Uhr UTC habe ich keine Erklärung. Vielleicht lief zu der Zeit etwas im Hintergrund auf dem Pi. Insgesamt ist der GPS Dongle im Vergleich zum NTP-Server der Telekom eher eine schlechte Zeitquelle.

G72 G-Mouse

Bei den ersten Versuchen am Laptop hat mich die G72 G-Mouse eher enttäuscht. Sie schaffte keinen 3D-Fix im Wohnzimmer. Vielleicht hätte ich ihr mehr Zeit lassen sollen. Am Raspberry Pi war ich dann doch überrascht.

PeerOffset øOfftet StdErrOffset MedianJitter øJitter StdErr
G72 G-Mouse-25,8369221,538312-25,7909350,9524120,535000
192.168.20.1-0,0003600,0416870,0011790,0529510,033665
Tabelle Mittelwerte und Standardabweichung Offset und Jitter für G72 G-Mouse (n=1649)

Obwohl die G72 G-Mouse wie die VK162 über einen u-blox 8 Chipsatz verfügt, waren die Mittelwerte und Standardabweichungen für Offset und Jitter durchweg geringer.

Offset und Jitter G72 G-Mouse (n=1649)

Aufgrund der unterschiedlichen Skalierung und der fehlenden Ausreißer täuscht das Diagramm optisch.

Die Aussage „besser als vk-172 GPS“ in der Bewerbung könnte durchaus stimmen. Die G-Mouse ist nicht alleine für Verzögerungen und Streuung verantwortlich. Auch der Raspberry Pi und was gerade auf ihm geschieht, beeinflusst die Reaktionszeiten. Aber bei nahezu gleichen Bedingungen ist ein Unterschied im Offset von ~11 ms recht ordentlich und statistisch signifikant. Aber dies soll kein Produktvergleich sein.

Navilock NL-701US

Den Navilock habe ich mir vor etwa 5 Jahren bei Reichelt gekauft. Seitdem liegt er in der Schublade. Mit der Idee einen Zeitserver im NTP-Pool bereitzustellen, kam mir der Dongle wieder in den Sinn und so war er Ausgangspunkt für diesen Artikel. Mit seinem u-blox 7 Chipsatz sollte er nicht mithalten können. Trotzdem kostet er deutlich mehr kostet als beide zusammen. Sollte bei dem Preisunterschied nicht mehr drin sein? Im Wohnzimmer schaffte er nach einigen Versuchen einen 3D-Fix. Anfangs tat er sich damit eher sehr schwer, später ging es aus unbekannten Gründen besser.

Die Messungen des Offsets und des Jitters am Rspberry Pi 4 im Arbeitszimmer auf der Fensterbank ergaben folgende Werte:

PeerOffset øOffset StdErrOffset MedianJitter øStdErr Jitter
Navilock NL-701US-52,7922053,662798-53,4349042,8516642,226018
192.168.20.10,0014620,0266090,0035120,0435290,024447
Tabelle Mittelwerte und Standardabweichung Offset und Jitter für Navilock NL-701US (n=1651)

Die Messungen bestätigen meine Vermutung.

Offset und Jitter für Navilock NL-701US (n=1651)

time1

Der Offset der verschiedene Dongle lässt sich in /etc/ntp.conf berücksichtigen. Der Offset ist ein konstanter Wert, der einfach über den Parameter time1 auf die Zeit addiert wird. Ob ein Dongle nun einen Offset von 25 ms oder 55 ms hat, spielt keine große Rolle.

Was sich nicht berücksichtigen und einfach kompensieren lässt, ist der unterschiedliche Jitter, die Streuung des Offset. Dieser Wert bestimmt, wie genau und stabil die Zeitmessung ist.

Aus den Messungen ergeben sich folgende Korrekturwerte, wobei ich den Median bevorzuge, weil er stabiler gegenüber Ausreißern ist, als der Mittelwert.

Dongletime1 (Sekunden)
VK-162 G-Mouse0,036684285
G72 G-Mouse0,025790935
Navilock NL-701US0,053434904
Korrekturwerte time1 in /etc/ntp.conf für den jeweiligen Dongle

Ist der Dongle in Betrieb, kann man die Messungen über mehrere Tage durchführen. Aber ich wollte einen Artikel zum Thema schreiben und nicht ewig messen. Weil ich viele Messwerte haben wollte, wurde die Zeit im 16-Sekundentakt abgeglichen.

Wie genau wäre die Zeit nach GPS?

Während wir den Offset korrigieren können, bleibt der Jitter erhlaten gleich. Mit einer Standardabweichung von 1,54 ms des „besten“ Dongle läge die tatsächliche Zeit in einem Intervall von ± 3 ms. Für meinen Zeitserver (ntp.byggvir.de) sagt ntpstat, dass die Zeit auf 7 bis 12 ms genau ist.

Auf dem Raspberry Pi 4 ist die Zeit auf ~30 ms korrekt. Auf einem Raspberry Pi 3b im gleichen Netz ist die Zeit ebenfalls ~30 ms genau. Zwei Raspberry Pi an einem NetCologne-Anschluss kommen auf eine Genauigkeit von ~80 ms und die beiden virtuellen Servern bei Hetzner, die als Freifunk-Supernodes laufen, erreichen eine Genauigkeit zwischen 60 ms und 80 ms.

pi@pi2:~ $ ntpstat
synchronised to NTP server (192.168.20.1) at stratum 4  
  time correct to within 31 ms
  polling server every 16

Mit der Kompensation wäre ich besser, als Hetzner oder NetCologne. Ich habe den Offset zu einem sehr ungenauen Zeitserver bestimmt, einem Stratum 4 Server an einer Fritz!Box. Das lässt sich beheben, indem ich den Raspberry Pi mit anderen Zeitservern synchronisiere. Durch längere Messung ließe sich der Offset noch genauer bestimmen.

Aber: Innerhalb meines lokalen Netzes wäre es nicht schlimm, weil es wichtiger ist, für alle eine einheitliche, fast gleiche Zeit zu haben, als die exakte globale Zeit zu haben.

Innerhalb meines Netzes müsste der GPS-Dongle eine vergleichsweise gute Zeit liefern. Wobei zu definieren wäre, was eine gute Zeit ist. Den Jitter wird NTP glätten und die Zeit wäre damit deutlich genauer, als an einem NetCologne-Anschluss oder auf den virtuellen Servern bei Hetzner.

Fazit

Linux und Raspberry Pi laufen die drei GPS-Dongle gut.

Mit einem preiswerten GPS-Dongle lässt sich mit wenigen Einstellungen ein lokaler Stratum 1 Zeitserver basteln. Wer es nicht sehr braucht, der bekommt sogar GPS-Dongle für knapp 10 €.

Ich werde die Messungen nochmals über längere Zeit mit drei Raspberry Pi 3b wiederholen und die drei Dongle parallel laufen lassen.

Ein Kommentar

Schreibe einen Kommentar zu Raspberry Pi: NTP und GPS (3) – Byggvir of Barley Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht.