Jetson/FAQ/BSP/PTP Synchronization

Below steps show how to do PTP synchronization between two Jetson devices.

Steps
1. Prepare two Jetson devices, 1 master DUT 1 slave DUT

2. Install ptp package on both DUTs sudo apt update sudo apt install linuxptp 3. Run below commands to disable default ptp service on both DUTs systemctl stop ptp4l systemctl disable ptp4l systemctl reboot 4. Assign static IP to both DUTs

5. Connect two DUTs directly with cable. Make sure two DUTs can ping each other

6. Disable time/date sync using below command on both DUTs sudo timedatectl set-ntp 0 7. Run below command on slave DUT to set a different timestamp sudo date 040403312012 8. Run below command on both DUTs sudo ifconfig eth0 allmulti promisc 9. Run below command on master DUT with gPTP.cfg (run in different terminal) sudo ptp4l -i eth0 -m -f gPTP.cfg # start ptp daemon sudo phc2sys -w -s eth0 -O 0 # sync system time with ptp 10. Run below commands on slave DUT gPTP.cfg (run in different terminal) sudo ptp4l -i eth0 -m -s -f gPTP.cfg # start ptp daemon sudo phc2sys -w -s eth0 -O 0 # sync system time with ptp

Then you can see slave's system time is synced with master

gPTP.cfg:  [global] twoStepFlag		1 gmCapable		1 priority1		248 priority2		248 domainNumber		0 clockClass		248 clockAccuracy		0xFE offsetScaledLogVariance	0xFFFF free_running		0 freq_est_interval	1 logAnnounceInterval	1 logSyncInterval		-3 logMinPdelayReqInterval	0 announceReceiptTimeout	3 syncReceiptTimeout	3 delayAsymmetry		0 fault_reset_interval	4 neighborPropDelayThresh	800 min_neighbor_prop_delay	-20000000 assume_two_step		1 logging_level		6 path_trace_enabled	1 follow_up_info		1 hybrid_e2e		0 tx_timestamp_timeout	1000 use_syslog		1 verbose			0 summary_interval	0 kernel_leap		1 check_fup_sync		0 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 [eth0] transportSpecific	0x1 [global] ptp_dst_mac		01:80:C2:00:00:0E p2p_dst_mac		01:80:C2:00:00:0E uds_address		/var/run/ptp4l network_transport	L2 delay_mechanism		P2P time_stamping		hardware tsproc_mode		filter delay_filter		moving_median delay_filter_length	10 egressLatency		0 ingressLatency		0 boundary_clock_jbod	0
 * 1) Default Data Set
 * 1) Default Data Set
 * 1) Port Data Set
 * 1) Port Data Set
 * 1) Run time options
 * 1) Run time options
 * 1) Servo options
 * 1) Servo options
 * 1) Transport options
 * 1) Transport options
 * 1) Default interface options
 * 1) Default interface options