Hi and thanks for a great open-source project. I am trying to setup a grandmaster based on a BeagleBone Black which synchronizes its system clock to a uBlox F9P GNSS receiver through ntpd. I am using phc2sys to synchronize the PTP clock to the system clock. It mostly works great except that it announces "currentUtcOffsetValid:0" even though an offset is applied to the UTC time,. At the bottom of the email I have added the ptp4l config file and the phc2sys service file. If I understand it correctly phc2sys is waiting for ptp4l to start and then applies the utcOffset desired by ptp4l to the system clock when synchronizing. I can verify the currentUtcOffsetValid:0 on both slave and gm side:
erling@ubuntu-ntnu ~> sudo pmc -u -b 0 'GET TIME_PROPERTIES_DATA_SET' sending: GET TIME_PROPERTIES_DATA_SET a4bb6d.fffe.b27ab3-0 seq 0 RESPONSE MANAGEMENT TIME_PROPERTIES_DATA_SET currentUtcOffset 37 leap61 0 leap59 0 currentUtcOffsetValid 0 ptpTimescale 1 timeTraceable 0 frequencyTraceable 0 timeSource 0xa0 and at the grandmaster side: debian@beaglebone:~$ sudo pmc -u -b 0 'GET GRANDMASTER_SETTINGS_NP' sending: GET GRANDMASTER_SETTINGS_NP 78a504.fffe.caf7d4-0 seq 0 RESPONSE MANAGEMENT GRANDMASTER_SETTINGS_NP clockClass 128 clockAccuracy 0xfe offsetScaledLogVariance 0xffff currentUtcOffset 37 leap61 0 leap59 0 currentUtcOffsetValid 0 ptpTimescale 1 timeTraceable 0 frequencyTraceable 0 timeSource 0x20 I have taken a look at the source code but it seemed like the currentUtcOffsetValid only was modified through the pmc utility. I have verified that I can in fact manually set the currentUtcOffset by using pmc 'SET GRANDMASTER_SETTINGS_NP', this would have to be done at each boot. My question for you is twofold 1. Is there another perferred way of getting the grandmaster to announce currentUtcOffsetVaid: 1? 2. As far as I understand the UTC-TAI offset is changing so by hardcoding an offset (which I have done) in the ptp4l config will at some point in the future make it outdated (wrt TAI) A) Is there a way to have phc2sys and ptp4l update the utcOffset in the future when a new leap second is added? B) What are the practical consequences of having an outdated UtcOffset? We are using it in a robotics system and timestamp events in UTC. I would assume that in this case I could use an arbitrary UtcOffset as long as it is announced and currentUtcOffsetValid:1 I have a feeling that I am failing to understand something fundamental about how these tools work and I gladly take pointers are links to documents/blogs/etc describing it. Thanks for your time, Erling R. Jellum -------------------------------------- ### phc2sys service file: ### debian@beaglebone:~$ cat /lib/systemd/system/phc2sys.service [Unit] Description=Synchronize system clock or PTP hardware clock (PHC) Documentation=man:phc2sys # I have added ntp.service here to try to make sure that the system clock is synced to GPS before phc2sys runs After=ntp.service After=ntpdate.service Requires=ptp4l.service After=ptp4l.service [Service] Type=simple ExecStart=/usr/sbin/phc2sys -a -rr [Install] WantedBy=multi-user.target ### ptp4l ### debian@beaglebone:~$ cat /lib/systemd/system/ptp4l.service [Unit] Description=Precision Time Protocol (PTP) service Documentation=man:ptp4l [Service] Type=simple ExecStart=/usr/sbin/ptp4l -f /etc/linuxptp/ptp4l.conf -i eth0 [Install] WantedBy=multi-user.target debian@beaglebone:~$ cat /etc/linuxptp/ptp4l.conf [global] # # Default Data Set # twoStepFlag 1 slaveOnly 0 priority1 128 priority2 128 domainNumber 0 utc_offset 37 clockClass 128 clockAccuracy 0xFE offsetScaledLogVariance 0xFFFF free_running 0 freq_est_interval 1 dscp_event 0 dscp_general 0 # # Port Data Set # logAnnounceInterval 1 logSyncInterval 0 logMinDelayReqInterval 0 logMinPdelayReqInterval 0 announceReceiptTimeout 3 syncReceiptTimeout 0 delayAsymmetry 0 fault_reset_interval 4 neighborPropDelayThresh 20000000 # # Run time options # assume_two_step 0 logging_level 6 path_trace_enabled 0 follow_up_info 0 hybrid_e2e 0 net_sync_monitor 0 tx_timestamp_timeout 1 use_syslog 1 verbose 0 summary_interval 1 kernel_leap 1 check_fup_sync 0 # # Servo Options # pi_proportional_const 0.0 pi_integral_const 0.0 pi_proportional_scale 0.0 pi_proportional_exponent -0.3 pi_proportional_norm_max 0.7 pi_integral_scale 0.0 pi_integral_exponent 0.4 pi_integral_norm_max 0.3 step_threshold 0.0 first_step_threshold 0.00002 max_frequency 900000000 clock_servo pi sanity_freq_limit 200000000 ntpshm_segment 0 # # Transport options # transportSpecific 0x0 ptp_dst_mac 01:1B:19:00:00:00 p2p_dst_mac 01:80:C2:00:00:0E udp_ttl 1 udp6_scope 0x0E uds_address /var/run/ptp4l # # Default interface options # network_transport UDPv4 delay_mechanism E2E time_stamping hardware tsproc_mode filter delay_filter moving_median delay_filter_length 10 egressLatency 0 ingressLatency 0 boundary_clock_jbod 0 # # Clock description # productDescription ;; revisionData ;; manufacturerIdentity 00:00:00 userDescription ; timeSource 0x20
_______________________________________________ Linuxptp-users mailing list Linuxptp-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-users