Zeitsync zwischen zwei Pi

  • Hi zusammen,


    ich versuche verzweifelt die Zeit von zwei Raspberries zu synchronisieren. Ich bin noch recht neu im Umgang mit den Geräten und Linux. Bisher habe ich folgendes gemacht:


    - Pis über Netzwerk verbunden

    - auf beiden Pis NTP installiert

    - Auf dem Pi, der die Zeit geben soll, habe ich die ntp.conf so verändert, dass ich die NTP-Server rauskommentiert habe. Dann habe ich folgende Zeilen verändert:


    restrict "IP des Client PI" mask 255.255.255.0

    broadcast "IP des Client PI"

    broadcast 224.0.1.1


    -Auf dem Client Pi habe ich die NTP.conf wie folgt verändert:


    server "IP des Server PI"

    disable auth

    broadcastclient


    Die letzen beiden standen schon drin, waren aber rauskommentiert. Die habe ich aktiviert.


    Welche Zeit gerade tatsächlich ist, ist unwichtig. Wichtig ist nur, dass auf den beiden Pis die gleiche Zeit läuft. Ich habe mich durch mehere Tutorials gearbeitet, aber scheine trotzdem irgendwas falsch zu machen. Ich entschuldige mich schon mal, falls ich irgendwas komplett bescheuertes mache, aber wie gesagt, ein neues Feld für mich :)


    Viele Grüße und besten Dank!

  • ich versuche verzweifelt die Zeit von zwei Raspberries zu synchronisieren.

    Poste vom Zeitgeber-PI die Ausgaben von:

    Code
    date
    sudo netstat -ulpena | grep -i 123
    ps aux | grep -i [n]tp

    installiere auf dem Zeitnehmer-PI:

    Code
    sudo apt install rdate

    und poste danach vom Zeitnehmer-PI, die Ausgaben von:

    Code
    date
    rdate -4npu <IP-Adresse-Zeitgeber-PI>
    rdate -4npu 130.133.1.10
    sudo netstat -ulpena | grep -i 123
    ps aux | grep -i [n]tp

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • Vielen Dank für deine Antwort!


    Hier der Output:


    Code
    date
    sudo netstat -ulpena | grep -i 123
    ps aux | grep -i [n]tp

    Mi 23. Nov. 05:51:12 CET 2022


    udp 0 0 192.168.0.15:123 0.0.0.0:* 116 16554 526/ntpd

    udp 0 0 127.0.0.1:123 0.0.0.0:* 0 13137 526/ntpd

    udp 0 0 0.0.0.0:123 0.0.0.0:* 0 13133 526/ntpd

    udp6 0 0 fe80::ac70:21fb:5cd:123 :::* 116 15765 526/ntpd

    udp6 0 0 ::1:123 :::* 0 13139 526/ntpd

    udp6 0 0 :::123 :::* 0 13130 526/ntpd


    526 0.0 0.0 8176 2792 ? Ssl 05:17 0:00 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 116:124


    Code
    date
    rdate -4npu <IP-Adresse-Zeitgeber-PI>
    rdate -4npu 130.133.1.10
    sudo netstat -ulpena | grep -i 123
    ps aux | grep -i [n]tp

    Mi 23. Nov 09:23:33 CET 2022

    rdate: Ignoring NTP server with alarm flag set

    rdate: Unable to get a reasonable time estimate

    Usage: rdate [-46acnpsv] [ -b sec ] [-o port] [ -t msec ] host

    -4: use IPv4 only

    -6: use IPv6 only

    -a: use adjtime instead of instant change

    -b num: use instant change if difference is greater than

    num seconds, or else use adjtime

    -c: correct leap second count

    -n: use SNTP instead of RFC868 time protocol

    -o num: override time port with num

    -p: just print, don't set

    -s: just set, don't print

    -u: use UDP instead of TCP as transport

    -t msec: does not set clock if network delay greater than msec

    -v: verbose output


    udp 0 0 192.168.0.255:123 0.0.0.0:* 116 16500 556/ntpd

    udp 0 0 192.168.0.10:123 0.0.0.0:* 116 16496 556/ntpd

    udp 0 0 127.0.0.1:123 0.0.0.0:* 0 13788 556/ntpd

    udp 0 0 0.0.0.0:123 0.0.0.0:* 0 13784 556/ntpd

    udp6 0 0 fe80::1e0f:db26:6dc:123 :::* 116 15424 556/ntpd

    udp6 0 0 ::1:123 :::* 0 13790 556/ntpd

    udp6 0 0 :::123 :::* 0 13781 556/ntpd


    ntp 556 0.0 0.0 7864 3308 ? Ssl Nov22 0:07 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 116:124

  • rdate: Ignoring NTP server with alarm flag set

    rdate: Unable to get a reasonable time estimate

    Kannst ja mal suchen, ob man beim ntpd dieses "alarm flag" zur run time konfigurieren kann, oder ob es bei der build time gesetzt worden ist.


    BTW: In FreeBSD kann der ntpd als Zeitserver fungieren:

    Code
    :~ # rdate -4np 127.0.0.1
    Wed Nov 23 09:45:14 CET 2022

    In RasPI-OS nicht:

    Code
    :~# rdate -4npu 127.0.0.1
    rdate: Unable to receive NTP packet from server: Connection refused
    rdate: Unable to get a reasonable time estimate

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • Vielen Dank,


    also wenn ich das Problem richtig verstehe, gibt der Zeitgeber sich selbst eine alarm flag und deswegen kann der Zeitnehmer damit nicht synchronisieren?


    Ich schaue, ob ich das umgehen kann. Würde sich das Problem lösen, wenn ich eine RTC verbaue und der Zugriff auf die Fake clock nicht mehr stattfindet?

  • ..., wenn ich eine RTC verbaue und der Zugriff auf die Fake clock nicht mehr stattfindet?

    ich weiß nicht wie eine RTC in einem Subnetz bzw. für ein anderes Gerät, als Zeitserver zugänglich ist bzw. benutzt werden kann, weil ich eine RTC nie benutzt bzw. nie konfiguriert habe. Aber hier im Forum gibt es user, die eine RTC benutzen und dir evtl. helfen können.


    EDIT:


    Wie ist auf deinem Zeitgeber-PI die Ausgabe von:

    Code
    strings $(which ntpd) | grep -iE 'set_alarm|alarm'

    ?


    EDIT 2:


    BTW: Du könntest auf deinem Zeitgeber-PI ja auch FreeBSD oder OpenBSD installieren. Was muss der Zeigeber-PI sonst noch machen bzw. sonst noch können?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Edited 3 times, last by rpi444 ().

  • Code
    strings $(which ntpd) | grep -iE 'set_alarm|alarm'

    Das gibt mir folgendes aus:


    alarming: normal

    alarming: overflow

    alarming: initializing TRUE

    leap_alarm


    Quote

    BTW: Du könntest auf deinem Zeitgeber-PI ja auch FreeBSD oder OpenBSD installieren. Was muss der Zeigeber-PI sonst noch machen bzw. sonst noch können?


    Auf beiden PIs wird jeweils ein Python-Script ausgeführt, welches jeweils ein paar Infos austauscht und Picam-Module startet und Aufnahmen macht. Ich starte das Py-Script auf dem Zeitgeber per ssh vom Zeitnehmer. Der Zeitgeber wartet dann auf das Trigger-Signal vom Zeitnehmer, welches kommt sobald ich das Py-Script auf dem Zeitnehmer starte.


    Ich brauche auf beiden Systemen einen möglichst synchronen Timestamp für den Moment, wo die Aufnahme startet damit ich die Videos im Anschluss synchronisieren kann. Ich überlege jetzt zum einen, ob ein Wechsel zu FreeBSD Sinn ergibt, oder ob ich den Timestamp vom Zeitnehmer mit schicke. Dafür bereite ich gerade ein Script vor, dass mir die Offset-Messung macht und ich dann abschätzen kann, wie konstant da ein Time-Lag ist.

  • ... und Picam-Module startet und Aufnahmen macht....

    Nein, das geht nicht mit FreeBSD.

    Dann wird m. E. nur RTC (oder gleichwertig) die Lösung sein.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • ich denke es gibt doch eine Lösung für dich. Du hast auf dem Zeitgeber-PI den ntp installiert, oder?

    Code
    apt policy ntp

    Wenn ja, dann deinstalliere diesen und versuch mal mit:

    Code
    apt show openntpd

    denn:

    Auf dem Zeitnehmer-PI solltest Du dann systemd-timesyncd (statt ntpd) benutzen können.


    EDIT:


    Als Alternative gibt es auch chrony, der auch als Server benutzt werden kann:

    Code
    Chronyd implements the NTP protocol and can act as either a client or
     a server.
    Code
    apt show chrony

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Edited once, last by rpi444 ().

  • Ich brauche auf beiden Systemen einen möglichst synchronen Timestamp für den Moment, wo die Aufnahme startet damit ich die Videos im Anschluss synchronisieren kann. Ich überlege jetzt zum einen, ob ein Wechsel zu FreeBSD Sinn ergibt, oder ob ich den Timestamp vom Zeitnehmer mit schicke. Dafür bereite ich gerade ein Script vor, dass mir die Offset-Messung macht und ich dann abschätzen kann, wie konstant da ein Time-Lag ist.

    Wenn das bist jetzt geschriebene nicht funktionieren sollte, gibt es noch einen workaround, mit inetd und dem time-Protokoll auf dem Zeitgeber-PI und rdate und fake-hwclock auf dem Zeitnehmer-PI.


    Z. B.:

    Code
    :~$ rdate -4p -o 37 192.168.178.13
    Wed Nov 23 11:34:39 CET 2022
    Code
    :~# cat /etc/inetd.conf | grep -i time
    #daytime        stream    tcp    nowait    root    internal
    time        stream    tcp    nowait    root    internal

    Mit rdate kann man die Zeit setzen "-s" und mit "-p" wird sie nur gezeigt.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden