I run gpsd attached to the serial console which has the GPS connected, and for PPS I want to use chrony, so this is the configuration I've set:
# cat chrony.conf
refclock SHM 0 refid GPS
refclock PPS /dev/pps0 lock GPS refid PPS
makestep 100 5
logdir /tmp/logs
log measurements tracking statistics refclocks
I got in-kernel pps debug enabled, so when I start chronyd I can see on the console that the PPS signal is arriving and that there's someone (chronyd) accesing /dev/pps0:
pps pps0: PPS_FETCH
pps_core: ACCESS OK: READ at 0xbf85eb6c (size 0x3c), seg 0xbfffffff
pps pps0: timeout 0.000000000
pps pps0: PPS event at 1523615280.496954999
pps pps0: capture assert seq #902
pps_core: ACCESS OK: WRITE at 0xbf85eb6c (size 0x3c), seg 0xbfffffff
pps pps0: PPS event at 1523615281.472931499
pps pps0: capture assert seq #903
pps pps0: PPS_FETCH
pps_core: ACCESS OK: READ at 0xbf85eb6c (size 0x3c), seg 0xbfffffff
pps pps0: timeout 0.000000000
pps_core: ACCESS OK: WRITE at 0xbf85eb6c (size 0x3c), seg 0xbfffffff
pps pps0: PPS event at 1523615282.472780341
pps pps0: capture assert seq #904
pps pps0: PPS_FETCH
pps_core: ACCESS OK: READ at 0xbf85eb6c (size 0x3c), seg 0xbfffffff
pps pps0: timeout 0.000000000
pps_core: ACCESS OK: WRITE at 0xbf85eb6c (size 0x3c), seg 0xbfffffff
pps pps0: PPS event at 1523615283.472628439
pps pps0: capture assert seq #905
However, chrony doesn't seem to understand /dev/pps0 output, because this is what 'sources' command reports:
210 Number of sources = 2
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
#* GPS 0 4 377 22 +50ms[ +59ms] +/- 8042us
#? PPS 0 4 0 - +0ns[ +0ns] +/- 0ns
As such, refclocks.log shows only entries for GPS Refid, but none for PPS, as it seems even though it's connected, it isn't able to decipher what is being sent to it.
Any ideas?
Thanks, best regards!