Enabling PPS on Xavier AGX

UART on the GPIO, I disable nvgetty service on ttyTSH0

in such confiuration we used:
in udev rules

KERNEL=="ttyTHS0", SYMLINK+="gps0"
KERNEL=="pps0", MODE="0660", SYMLINK+="gpspps0",TAG="systemd"

in ntp.conf

server 127.127.20.0 mode 48 baud 38400 minpoll 3 burst iburst prefer
fudge 127.127.20.0 stratum 1 flag1 1 flag2 0 flag3 1 flag4 0 time1 0.0 time2 0.095 refid GPS0

then monitored the status with

 watch -n5 '(ntpq -p ; echo "" ; ntptime ; echo "" ; phc_ctl eth0 get cmp)'

However, the baudrate, also mode should match the environment.
ref: http://doc.ntp.org/current-stable/drivers/driver20.html

Thanks for your config .
For the udev rules, I plan to make it.

What output give you ntp service status if it’s well configured ?

watch -n5 '(ntpq -p ; echo "" ; ntptime ; echo "" ; phc_ctl eth0 get cmp)'
Every 5.0s: (ntpq -p ; echo "" ; ntptime ; echo "" ; phc_ctl eth0 get cmp) 

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
oGPS_NMEA(0)     .GPP0.           1 l    2    8  377    0.000   +0.001   0.002
*time-d-b.nist.g .NIST.           1 u   38   64  377   10.751   +2.109   0.446

ntp_gettime() returns code 0 (OK)
  time e2a77473.5d017db0  Wed, Jul  1 2020 14:45:39.363, (.363304958),
  maximum error 2000 us, estimated error 7 us, TAI offset 0
ntp_adjtime() returns code 0 (OK)
  modes 0x0 (),
  offset 0.491 us, frequency 5.540 ppm, interval 1 s,
  maximum error 2000 us, estimated error 7 us,
  status 0x2001 (PLL,NANO),
  time constant 3, precision 0.001 us, tolerance 500 ppm,

phc_ctl[28757.094]: clock time is 1593636376.365505506 or Wed Jul  1 14:46:16 2020

phc_ctl[28757.094]: offset from CLOCK_REALTIME is -37000000006ns

However, as far as I remember it would require both pps & NMEA working to get such state

Sorry, I mean what give you this :

sudo service ntp status

ntp should give you PPL,NANO status ? not PPS ?

@Andrey1984, it seems that your kernel accept PPS for NTP.
Did you add other options to the kernel ?

in our implementation it uses ntp configuration file, not a kernel level support for this;
from kernel level we only use pps device creation

Ok I will test with your config file on the AGX Xavier
On my search for an answer, I think you didn’t get the error because you put flag3 to 1.

according to the cloudera

status 0x2001 (PLL,NANO): This indicates that the local clock is synchronized with the true time up to the maximum error above

However we do not see there PPSFREQ,PPSTIME,PPSSIGNAL,

It may have use your other clock provider from ntp server ?
I set only the GPS for testing and be sure to get the correct status and the main goal is to obtain those status PPSFREQ,PPSTIME,PPSSIGNAL

Seems that PPSSIGNAL is required based on http://www.ntp.org/ntpfaq/NTP-s-config-adv.htm#S-CONFIG-ADV-PPS

Hi:
Did you solve the problem? I am sorry that I may have the same problem with you, I used the /dev/pps1 and /dev/ttyTHS1 for synchronization. I can get the PPS signal and NMEA-0183 but I could not get those in the NTP. Do you figure it out? Thx!