Wie kann ich die Raspberry Timekeeping genau halten?

8

Ich habe 3 Raspberry 3 Model B Geräte. Ihr Betriebssystem ist Windows 10 IOT, sie wurden am selben Tag (gestern) installiert.

Ich habe sehr seltsame Erfahrungen mit ihrer Zeitmessung, sie sind sehr ungenau. Einige von ihnen ein paar Sekunden hinter der richtigen Zeit, während andere 3-4 Minuten. Das übliche Verhalten ist Ungenauigkeit.

Ich versuche, die Zeitsynchronisierung bei jedem Start durch Aufruf von "w32tm / resync / force" in einem geplanten Startskript zu erzwingen. Es scheint überhaupt nicht zu helfen.

Ich habe auch versucht, verschiedene Wi-Fi-Netzwerke (von verschiedenen Anbietern) zu verwenden, das Problem existiert auf allen von ihnen.

Beim Abfragen des Zeitstatus durch w32tm / query / status erhalte ich folgende Ergebnisse:

Gerät 1

Sprunganzeige: 3 (letzte Minute hat 61 Sekunden) Schicht: 0 (nicht spezifiziert) Präzision: -23 (119.209ns pro Tick) Root-Verzögerung: 0,0000000s Wurzeldispersion: 0,0000000s ReferenceId: 0x00000000 (nicht angegeben) Letzte erfolgreiche Synchronisierungszeit: nicht angegeben Quelle: Lokale CMOS-Uhr Poll-Intervall: 10 (1024s)

Gerät 2

Sprunganzeige: 0 (keine Warnung) Stratum: 3 (Sekundärreferenz - syncd durch (S) NTP) Präzision: -23 (119.209ns pro Tick) Root-Verzögerung: 0,1734432s Wurzeldispersion: 0.4173777s Referenz-ID: 0x338C7FC5 (Quell-IP: 51.140.127.197) Letzte erfolgreiche Synchronisierungszeit: 7/14/2017 7:48:12 Quelle: time.windows.com, 0x9 Poll-Intervall: 15 (32768s)

Gerät 3

Sprunganzeige: 0 (keine Warnung) Stratum: 3 (Sekundärreferenz - syncd durch (S) NTP) Präzision: -23 (119.209ns pro Tick) Root-Verzögerung: 0.1850726s Wurzeldispersion: 16.7226250s Referenz-ID: 0x338C7FC5 (Quell-IP: 51.140.127.197) Letzte erfolgreiche Synchronisierungszeit: 14.07.2017 11:42:52 Quelle: time.windows.com, 0x9 Poll-Intervall: 10 (1024s)

Ich habe Themen über das Internet gelesen, aber ich konnte keine funktionierende Lösung finden. Ich finde es sehr seltsam für mich, dass die Zeit in den meisten Anwendungen ein kritischer Faktor sein sollte, also muss es eine Lösung geben.

Wären Sie so freundlich, mir zu helfen, es zu lösen? Alle Vorschläge sind sehr geschätzt!

    
Tom 14.07.2017, 09:52
quelle

5 Antworten

2

Zuerst muss ich feststellen, dass ich Windows 10 noch nicht angefasst habe und ich noch keinen Raspberry angefasst habe. Auf der anderen Seite habe ich die folgende Methode gesehen, die alle Zeitsynchronisationsprobleme mit so vielen Windows-Maschinen aller Art löst, dass Sie es versuchen könnten.

Die Probleme (meiner Erfahrung nach):

1) time.windows.com ist extrem unzuverlässig. In meinen Setups und denen mehrerer Kunden hat sich die Zeit in den meisten Fällen nach einer Out-of-the-Box-Installation von Windows nicht zuverlässig synchronisiert, auch wenn keine drahtlose Verbindung involviert war und selbst wenn es eine zuverlässige hohe Datenrate / geringe Latenz gab Verbindung zum Internetanbieter.

2) Windows scheint die NTP-Server auf ungewöhnliche Weise (wir könnten auch sagen: falsch) abzufragen. Während ich in NTP nicht tief genug bin, um eine detaillierte Erklärung zu geben, scheint Windows als Client sogenannte "symmetric active" -Pakete an Server zu senden anstatt an normale "Client-Pakete". Also funktioniert es zunächst auch sehr unzuverlässig mit anderen (Standard) NTP-Servern.

Mögliche Lösungen

Die Lösung für Problem 1) liegt auf der Hand: Installieren Sie einen Standard-NTP-Server irgendwo in Ihrem Netzwerk. Wenn Sie eine Linux-Box zur Hand haben, könnte ich Ihnen bei der korrekten Konfiguration helfen. Verbinden Sie dann Ihre Raspberrys mit diesem NTP-Server über ein Kabel und verwenden Sie auf den Raspberrys die Lösung für Problem 2 (siehe unten).

Die Lösung für Problem 2) ist weniger offensichtlich und beinhaltet das Setzen eines undokumentierten Flags (zumindest ist es in Windows 7 Pro nicht dokumentiert, das ich gerade in Händen habe) für den Windows-Zeitdienst. Sie haben den Windows-Zeitdienststatus bereits abgefragt und Sie haben uns die Ausgabe gezeigt. Bitte beachten Sie den folgenden Teil Ihrer Ausgabe (z. B. für Gerät 2):

Source: time.windows.com,0x9 Poll Interval: 15 (32768s)

Das Problem ist die 0x9 , die 0x8 sein sollte. Um dieses Flag zu ändern, öffnen Sie ein Befehlszeilenfenster als Administrator (nur zur administrativen Gruppe gehörend ist nicht genug) und führen Sie den folgenden Befehl aus:

w32tm /config /manualpeerlist:xxx.xxx.xxx.xxx,0x8 /syncfromflags:MANUAL

Beachten Sie, dass das richtige Flag 0x8 hinzugefügt wird (natürlich ist xxx.xxx.xxx.xxx die IP-Adresse Ihres NTP-Servers, aber Sie könnten einen normalen Host-Namen (zB ntpserver.example.org) angeben Gut). Im Wesentlichen teilt die obige Zeile dem Windows-Zeitdienst mit, auf welchen Server er synchronisiert werden sollte, dass er only mit diesem Server synchronisieren sollte und dass er normale Client-Anforderungspakete (anstelle von aktiven symmetrischen Paketen) an diese senden sollte dieser Server.

Nachdem Sie dies getan haben, müssen Sie die Änderung entweder durch einen Neustart des Windows-Zeitdienstes anwenden, indem Sie dessen Konfiguration aktualisieren (ich bevorzuge den ersten).

Wenn Sie dann den Status erneut abfragen, wird der folgende Teil in Ihrer Ausgabe sein:

Source: xxx.xxx.xxx.xxx,0x8 Poll Interval: xx (xxxxxs)

Beachten Sie, dass sich das Flag in der Ausgabe jetzt von 0x9 in 0x8 geändert hat.

Zwei abschließende Anmerkungen

1) Ich bin mir nicht sicher, ob die Lösung für Problem 2) funktioniert, wenn Sie auf time.windows.com synchronisieren. Da es nicht zuverlässig ist, habe ich es seit Jahren nicht mehr benutzt. Es besteht die Möglichkeit, dass die Situation sogar noch schlimmer wird, wenn Sie das Flag von 0x9 auf 0x8 ändern, aber immer noch time.windows.com als NTP-Server verwenden.

Das Einrichten eines eigenen NTP-Servers in Ihrem lokalen Netzwerk ist aus mehreren Gründen eine sehr gute Idee (ich werde hier nicht ins Detail gehen, weil es nicht zum Thema gehört). Wenn Sie dies nicht tun können oder wollen, empfehle ich andere öffentliche Zeitserver (starten Sie Ihre Suche, indem Sie Ссылка besuchen ) anstelle von time.windows.com. Sie werden definitiv mit der Lösung von Problem 2) arbeiten.

2) Als letzten Ausweg könnten Sie versuchen, einen anderen Zeitdienst in Windows zu installieren. Zum Beispiel gibt es einen vollständigen Port der NTP-Software für Windows, aber AFAIK, nur für die Intel-Plattform. Da ich nichts über die Raspberry (ARM) -Plattform weiß, weiß ich nicht, ob es überhaupt eine andere Zeitdienstsoftware gibt, also ist dies nur eine Idee, falls jede andere Methode fehlschlägt.

    
Binarus 29.07.2017, 08:54
quelle
5

Gerät 1 scheint überhaupt keinen Zeitserver zu verwenden, erzwingt die gleiche Konfiguration auf allen Geräten.

Ich würde dir einfach vorschlagen, einen anderen Zeitserver auszuprobieren. Ich hatte ähnliche Probleme, manchmal ist das nicht einmal Hardware-bezogen, sondern eine Netzwerk-Sache. Niemand weiß, was zwischen Ihnen und einem Zeitserver ist und es kann ausreichen, ein anderes Netzwerk auszuprobieren.

Ссылка

%Vor%

Es sollte gut genug sein ... aber das RPi hat keine RTC (Echtzeituhr) an Bord. Sie können ein Tho kaufen, google für raspberry pie rtc .

Ohne eine RTC erstellt das RPi eine Zeit mit seinen CPU-Zyklen. Diese sind nicht so genau und können sogar noch driften, wenn Sie die CPU übertakten.

Diese Frage könnte vielleicht besser auf Ссылка

beantwortet werden

Wenn Sie den Chip nicht kaufen möchten, könnten Sie versuchen, die Spannung zu ändern und die Zeit öfter von den Zeitservern aktualisieren zu lassen.

    
DanFromGermany 21.07.2017 15:22
quelle
4

Da dem Pi eine Echtzeituhr fehlt, sollten Sie für beste Ergebnisse einen zweigleisigen Ansatz wählen.

Wählen Sie einen anderen Zeitserver, um langfristige Korrekturen vorzunehmen, und installieren Sie dann das Echtzeituhrmodul , das diesem ähnelt obendrein, um die Zeit sehr nahe zu halten, wenn sie nicht mit dem Netzwerk verbunden ist. Dieses Modul ist temperaturstabilisiert, erfordert kein Löten, nutzt die allgegenwärtige I2C-Schnittstelle und beansprucht hohe Genauigkeit und lange Batterielebensdauer. Mit vielen Adafruit-Produkten zufrieden gewesen.

Was Zeitserver betrifft, schauen Sie sich diese Ressource an. Sie enthalten sogar (in ihren Nutzungsbedingungen) Richtlinien zur Einrichtung von ntp für die beste Verwendung (und verteilte Last auf ihren Pool).

    
TomServo 26.07.2017 00:40
quelle
0

Versuchen Sie es mit einer Echtzeituhr (RTC) wie dies , denn mit einigen Geräten Wenn Sie den Stecker ziehen, werden Uhrzeit und Datum zurückgesetzt. Wenn die Zeit Ihrer Uhr um einiges abgelaufen ist. Es kann bis zu 3 Stunden dauern, um sich selbst zu korrigieren, da Änderungen vom Server schrittweise auf Ihre lokale Uhr angewendet werden. Die Netzwerkstabilität hat den größten Einfluss auf die Genauigkeit, da ein unvorhersagbares Netzwerk (etwas drahtloseres wie 3G) es sehr schwer macht, genau zu sein. Sie können auch eine Unterstützung finden. Wenn Sie das fake-hwclock -Paket haben, wird auch ein Zeitstempel-Speichertrick durchgeführt, um zu verhindern, dass die Uhr zurückgesetzt wird. Dadurch wird die Zeit nicht verlängert, während das Gerät ausgeschaltet ist. Die interne Uhr driftet auch ein kleines bisschen weiter.

Quellen

    
QandA 26.07.2017 16:45
quelle
0

Ich kann einen Einblick basierend auf Erfahrung bieten. Unsere Maschinengeräte verfügen über eine Vielzahl von Ressourcen, um die Zeit zu aktualisieren. Etwas eine Voraussetzung für die Bereitstellung. Obwohl sich auf unserem Gerät eine interne Uhr befindet, reicht die Batterie nicht aus, um sie über lange Zeiträume genau zu halten, wenn das jeweilige Fahrzeug nicht läuft. (Hardware-Upgrades wurden vorgenommen, um dies zu verbessern.)

Wir bieten einen Webservice und einen Zeitdienst an, die jeweils die Aktualisierung der internen Uhr alle 24 Stunden oder nach dem Einschalten ermöglichen. In einigen Fällen ist die Zeit bei einigen der Datenübertragungen enthalten, die das Gerät ausführt und auf Genauigkeit überprüft, und es wird gesagt, dass es aktualisiert werden muss, wenn die Varianz zu groß ist. In einigen Konfigurationen kann der Benutzer die Zeit überprüfen und bei Bedarf aktivieren und aktualisieren. Ein bisschen Old School, aber diese gibt es schon seit ein paar Jahren.

Eine hochwertige RTC und Batterie sollten spezifiziert werden, wenn die Gerätelösung dies erfordert. Schöpfen Sie diese Hardware nicht aus, wenn sie wirklich benötigt wird.

Hier ist ein ziemlich guter Fehlerbehebungsleitfaden , ich denke, das ist eine andere Hardware als die Prinzipien sind ähnlich.

Hier ist eine gute Liste einiger RTCs

Auch hier ist ein Link zu Adafruit

    
htm11h 28.07.2017 13:37
quelle