Perhaps an elementary question, but maybe someone knows. The goal is to
have getnstimeofday() return a synchronized time value for 2 systems in a
kernel module. To do this, I would expect a simple "date" call from each
system to be pretty close, but it is not.


Using 2 x Jetson TX2 boards running Ubuntu 16.04 + ptp4l on Device 1 we set
an arbitrary date.

ptp4l is running as a service on both:
 /usr/sbin/ptp4l -f /etc/linuxptp/ptp4l.conf -i eth0


set an arbitrary date on Device1:


nvidia@jetson-randy1:~$ sudo date -s "Dec 1 2015 04:00:00"
Tue Dec  1 04:00:00 UTC 2015

nvidia@jetson-randy1:~$ timedatectl
      Local time: Tue 2015-12-01 04:00:01 UTC
  Universal time: Tue 2015-12-01 04:00:01 UTC
        RTC time: Wed 2017-03-01 12:12:00
       Time zone: Etc/UTC (UTC, +0000)
 Network time on: no
NTP synchronized: no
 RTC in local TZ: no


on Device2 we set a different arbitrary date:

nvidia@jetson-randy2:~$ sudo date -s "Mar 10 2018 12:00:00"
Sat Mar 10 12:00:00 UTC 2018

nvidia@jetson-randy2:~$ timedatectl
      Local time: Sat 2018-03-10 12:00:01 UTC
  Universal time: Sat 2018-03-10 12:00:01 UTC
        RTC time: Sat 2018-12-01 13:11:21
       Time zone: Etc/UTC (UTC, +0000)
 Network time on: no
NTP synchronized: no
 RTC in local TZ: no


Now we start ptp4l and phc2sys on each device.

Device 1:

Dec  1 04:02:06 jetson-randy1 systemd[1]: Started Precision Time Protocol
(PTP) service.
Dec  1 04:02:06 jetson-randy1 ptp4l: [83945.116] selected /dev/ptp0 as PTP
clock
Dec  1 04:02:06 jetson-randy1 ptp4l: [83945.117] port 1: INITIALIZING to
LISTENING on INITIALIZE
Dec  1 04:02:06 jetson-randy1 ptp4l: [83945.117] port 0: INITIALIZING to
LISTENING on INITIALIZE
Dec  1 04:02:08 jetson-randy1 ptp4l: [83946.193] port 1: new foreign master
00044b.fffe.c56e7b-1
Dec  1 04:02:12 jetson-randy1 ptp4l: [83950.194] selected best master clock
00044b.fffe.c56e7b
Dec  1 04:02:12 jetson-randy1 ptp4l: [83950.195] assuming the grand master
role
Dec  1 04:02:12 jetson-randy1 ptp4l: [83950.195] port 1: LISTENING to
GRAND_MASTER on RS_GRAND_MASTER

and

nvidia@jetson-randy1:~$ sudo phc2sys -a -r -m
phc2sys[83977.835]: reconfiguring after port state change
phc2sys[83977.839]: selecting eth0 for synchronization
phc2sys[83977.840]: nothing to synchronize


Device 2:

Mar 10 12:03:02 jetson-randy2 systemd[1]: Started Precision Time Protocol
(PTP) service.
Mar 10 12:03:02 jetson-randy2 ptp4l: [75310.117] selected /dev/ptp0 as PTP
clock
Mar 10 12:03:02 jetson-randy2 ptp4l: [75310.118] port 1: INITIALIZING to
LISTENING on INITIALIZE
Mar 10 12:03:02 jetson-randy2 ptp4l: [75310.118] port 0: INITIALIZING to
LISTENING on INITIALIZE
Mar 10 12:03:04 jetson-randy2 ptp4l: [75312.065] port 1: new foreign master
00044b.fffe.c4cf6f-1
Mar 10 12:03:08 jetson-randy2 ptp4l: [75316.066] selected best master clock
00044b.fffe.c4cf6f
Mar 10 12:03:08 jetson-randy2 ptp4l: [75316.067] port 1: LISTENING to
UNCALIBRATED on RS_SLAVE
Mar 10 12:03:09 jetson-randy2 ptp4l: [75317.066] master offset
71740766475479566 s0 freq +62500000 path delay         0
Mar 10 12:03:10 jetson-randy2 ptp4l: [75318.066] master offset
71740766475512626 s1 freq +62500000 path delay     -4004
Mar 10 12:03:12 jetson-randy2 ptp4l: [75320.068] master offset -124949356
s2 freq -62449356 path delay     -1768
Mar 10 12:03:12 jetson-randy2 ptp4l: [75320.068] port 1: UNCALIBRATED to
SLAVE on MASTER_CLOCK_SELECTED
Mar 10 12:03:13 jetson-randy2 ptp4l: [75321.067] master offset  -62730032
s2 freq -37714839 path delay     -4004
Mar 10 12:03:14 jetson-randy2 ptp4l: [75322.068] master offset  -24937060
s2 freq -18740876 path delay     -6240
Mar 10 12:03:15 jetson-randy2 ptp4l: [75323.067] master offset   -1649428
s2 freq -2934362 path delay  -4492000

and

nvidia@jetson-randy2:~$ sudo phc2sys -a -r -m
phc2sys[75361.130]: reconfiguring after port state change
phc2sys[75361.133]: selecting CLOCK_REALTIME for synchronization
phc2sys[75361.133]: selecting eth0 as the master clock
phc2sys[75361.133]: CLOCK_REALTIME phc offset 71740802475284240 s0 freq
+30393 delay   5600
phc2sys[75362.134]: CLOCK_REALTIME phc offset 71740802475284367 s1 freq
+30520 delay   5664
phc2sys[75363.134]: CLOCK_REALTIME phc offset      -400 s2 freq  +30120
delay   3136
phc2sys[75364.135]: CLOCK_REALTIME phc offset        17 s2 freq  +30417
delay   3168
phc2sys[75365.135]: CLOCK_REALTIME phc offset       502 s2 freq  +30907
delay   5664
phc2sys[75366.136]: CLOCK_REALTIME phc offset       100 s2 freq  +30656
delay   5632
phc2sys[75367.137]: CLOCK_REALTIME phc offset      -117 s2 freq  +30469
delay   5664
phc2sys[75368.137]: CLOCK_REALTIME phc offset      -114 s2 freq  +30437
delay   5663
phc2sys[75369.138]: CLOCK_REALTIME phc offset      -174 s2 freq  +30342
delay   5568

yet if we run these commands quickly:

nvidia@jetson-randy1:~$ date
Tue Dec  1 04:05:21 UTC 2015

nvidia@jetson-randy2:~$ date
Tue Dec  1 04:04:45 UTC 2015

we notice that the times are off by about 40 seconds.

Thoughts?
Randy
_______________________________________________
Linuxptp-users mailing list
Linuxptp-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-users

Reply via email to