Hallo, die Systemzeit auf meinem Raspi läuft recht schnell weg, so 2min/Halbjahr. Der Raspi hängt an einer Fritzbox, die die richtige Zeit natürlich kennt. Ich muss also die Zeit auf dem Raspi mal ab und zu neu stellen. timedatectl ist mir ein wenig bekannt, damit scheints aber nicht zu gehen. Ich bin in Python unterwegs, vllt. kann man von dort direkt ntp anzapfen, ansonsten nehme ich auch gern das Linux Kommando. THX Cheers Detlef
sudo apt install ntp ntpdate Und das hier lesen und verstehen: https://www.grund-wissen.de/linux/server/ntp.html
Normalerweise installiert man den ntpd (ist im Paket ntpsec). Ohne stabiles Internet macht der aber keinen Spaß. Mit "rdate -anv pool.ntp.org" als root kann man die Systemzeit korrigieren, z.B. einmal am Tag. Der Aufruf funktioniert auf der Kommandozeile oder per cronjob oder auch mit Python. Für Python gibt es auch das Paket python-3-ntp. Das -a bei rdate steht für adjust. Die Systemuhr wird dann nicht einfach verstellt, sondern rdate sagt dem Kernel um wie viel die Uhr falsch geht. Der Kernel lässt die dann um 0.05% schneller oder langsamer laufen bis die Zeit wieder stimmt. Wichtig ist, dass es keine Zeitsprünge gibt, vor allem nicht in die Vergangenheit.
Bei der Gelegenheit dann auch noch eine RTC nachrüsten, die kann man dann auch dem Linux beibringen und es kümmert sich selber darum, die interne Uhr mit NTP synchron zu halten
Detlef _. schrieb: > die Systemzeit auf meinem Raspi läuft recht schnell weg Was für eine OS-Version hast Du installiert? Auf einem aktuellen Raspberry Pi OS (Debian 12) ist doch timedatectl aktiv, was die Zeit über ntp korrigiert.
Bauform B. schrieb: > Normalerweise installiert man den ntpd (ist im Paket ntpsec). Ohne > stabiles Internet macht der aber keinen Spaß. Ein lokaler NTP-Server ist vorhanden, den kann man verwenden: Die eingangs erwähnte Fritzbox. Die verliert ihre Zeit nur bei Stromausfall.
Also bei ntpd, openntpd und vermutlich auch chrony, dürfte der Gangfehler der Uhr automatisch ausgeglichen werden. Dafür muss sich der Raspberry PI regelmäßig synchronisieren. Das geht auch vernünftig gut direkt über das Internet. Wenn man ein paar Euro zur Verfügung hat, kann man auch einen GPS-Empfänger verwenden und PPS mit einem entsprechenden GPIO-Pin verbinden, so dass man das als PPS-Eingangsgerät verwenden kann. (keinesfalls versuchen die Sekunde per UART zu lesen!) Von den billigen Hüllkurven DCF77-Empfängern würde ich abraten, die sind weniger genau als wenn man sich die Zeit aus dem Internet holt.
Wenn bei dir ein debian 12 (bookworm) läuft, solltest du den systemd Dienst verwenden. systemctl status systemd-timesyncd.service Falls nicht vorhanden apt-get install systemd-timesyncd Für die Konfiguration schaust du in: /etc/systemd/timesyncd.conf
Christian B. schrieb: > keinesfalls versuchen die Sekunde per UART zu lesen! Weil? Es könnte ja funktionieren? Alles eine Frage der Filter, und das kann der originale ntpd ziemlich gut. Zum Vergleich Internet und ublox-6, auf dem Schreibtisch, per USB-UART:
1 | remote refid st t when poll reach delay offset jitter |
2 | ========================================================================= |
3 | +212.18.3.19 212.18.1.106 2 u 187 256 377 4.695 -1.912 0.814 |
4 | -90.187.112.137 237.17.204.95 2 u 29 256 377 21.408 -3.048 2.863 |
5 | -144.91.116.85 79.133.44.146 2 u 141 256 377 13.571 -3.284 6.628 |
6 | +78.47.56.71 17.253.14.253 2 u 82 256 377 7.497 -2.126 0.470 |
7 | 192.9.200.43 (loop) 3 u 20 64 377 0.187 -1.426 0.233 |
8 | *127.127.20.0 .GPS0. 1 l 38 64 377 0.000 -0.012 0.547 |
Axel G. schrieb: > systemctl status systemd-timesyncd.service > Falls nicht vorhanden Freuen ;) Und ntpsec installieren.
Christian B. schrieb: > ... Wenn man ein paar Euro zur Verfügung hat, kann > man auch einen GPS-Empfänger verwenden und PPS mit einem entsprechenden > GPIO-Pin verbinden, so dass man das als PPS-Eingangsgerät verwenden > kann. (keinesfalls versuchen die Sekunde per UART zu lesen!) Man sollte vor der Verwendung des PPS-Ausgangs zumindest einmal die Plausibilitaet des Signals pruefen. Ich habe hier ein GPS-Modul, dessen PPS-Ausgang mit Werten bis zu 100 µs jittert. :) Das UART Telegramm wurd bei dem wohl auch nicht besser sein. > Von den billigen Hüllkurven DCF77-Empfängern würde ich abraten, die sind > weniger genau als wenn man sich die Zeit aus dem Internet holt. Es gibt auch bessere, die ueber einen laengeren Zeitraum per Korrelation zu einer genaueren Schaetzung kommen. In Zeiten von G.P.S. lohnt sich der Aufwand aber nicht mehr wirklich. Jeder kann sich heute fuer wenige Euro einen > ublox ins Haus holen. Ein Platz am, oder noch besser vor dem Fenster, sollte man ihm aber schon goennen.
Motopick schrieb: > Ich habe hier ein GPS-Modul, > dessen PPS-Ausgang mit Werten bis zu 100 µs jittert. :) Der 1PPS Ausgang liefert, wie der Name schon sagt, nur einen Puls pro Sekunde und dessen Jitter sollte unter 100 Nanosekunden liegen. Was meinst du mit "Werten"? Motopick schrieb: > Das UART Telegramm wurd bei dem wohl auch nicht besser sein. Der Zeitpunkt zu dem das UART Telegramm kommt (welches), ist "irgendwann". Für Synchronisation im Sub-Sekundenbereich ist das ungeeignet, i.e. nicht spezififiert. 100us entspricht bei üblichen 9600Bd etwa der Bitdauer der seriellen Übertragung.
:
Bearbeitet durch User
Bauform B. schrieb: > Axel G. schrieb: >> systemctl status systemd-timesyncd.service >> Falls nicht vorhanden > > Freuen ;) Und ntpsec installieren. Wenn man gerne bastelt, ja. Debian Standard ist seit bookworm der systemd Dienst. Benötigt man über die systemd Statusausgabe hinaus noch mehr Informationen:
1 | root@v7:~# timedatectl timesync-status |
2 | Server: 2a01:4f8:200:1307::10 (2.debian.pool.ntp.org) |
3 | Poll interval: 17min 4s (min: 32s; max 34min 8s) |
4 | Leap: normal |
5 | Version: 4 |
6 | Stratum: 2 |
7 | Reference: E8E39FE7 |
8 | Precision: 4us (-18) |
9 | Root distance: 4.196ms (max: 5s) |
10 | Offset: +8.308ms |
11 | Delay: 2.762ms |
12 | Jitter: 3.236ms |
13 | Packet count: 6 |
14 | Frequency: +26,717ppm |
Wenn du die aktuelle Zeit aus der FritzBox holen möchtest, schau mal ob dieses bash-script funktioniert: https://github.com/jhubig/FritzBoxShell Falls ja, kannst die sie so auslesen (zB Änderung in der Funktion Deviceinfo):
1 | location="/upnp/control/time" |
2 | uri="urn:dslforum-org:service:Time:1" |
3 | action='GetInfo' |
4 | readout | awk -F "[T+]" '/NewCurrentLocalTime/{print $3}' |
und setzen mit: hwclock
Peter N. schrieb: > https://github.com/jhubig/FritzBoxShell Was es nicht alles gibt, vielen Dank für den Link! Aber rein für die Uhrzeit scheint es mir ein wenig übertrieben, verglichen mit "/sbin/rdate -pnv 192.168.178.1". Ja, "FRITZ!Box als Zeitserver im Heimnetz bereitstellen" muss angekreuzt sein (Heimnetz -> Netzwerk -> Netzwerkeinstellungen).
Peter N. schrieb: > dieses bash-script Uff. Dann lieber, wie es der TO wollte, in Python: https://www.mattcrampton.com/blog/query_an_ntp_server_from_python/
sMario M. schrieb: > https://www.mattcrampton.com/blog/query_an_ntp_server_from_python/ Na da würde ich in Python lieber ntplib verwenden
1 | sudo apt install python3-ntplib |
edit: habe ich gerade auf meinem Rechner gefunden (stammt nicht von mir)
1 | #!/bin/python3
|
2 | |
3 | import ntplib |
4 | from datetime import datetime, timezone |
5 | c = ntplib.NTPClient() |
6 | # Provide the respective ntp server ip in below function
|
7 | response = c.request('de.pool.ntp.org', version=3) |
8 | response.offset |
9 | print (datetime.fromtimestamp(response.tx_time, timezone.utc)) |
:
Bearbeitet durch User
Bauform B. schrieb: > Aber rein für die Uhrzeit scheint es mir ein wenig übertrieben... Naja, ich habe die Aussage: „Der Raspi hängt an einer Fritzbox, die die richtige Zeit natürlich kennt” so verstanden, dass die Zeit aus der FritzBox geholt werden soll, also händische Aktualisierung per hwclock und nicht als Zeitserver oder mit ntp (macht die FB selber). Gut, nur für die Uhrzeit ists ein wenig übertrieben, das script bietet aber soviel mehr... Anrufliste, FB Reboot, akt. IP, Wlan Ein/Aus...
Peter N. schrieb: > Gut, nur für die Uhrzeit ists ein wenig übertrieben, das script bietet > aber soviel mehr... > > Anrufliste, FB Reboot, akt. IP, Wlan Ein/Aus... Dafür gibt es auch ein großes Lob!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.