Reputation: 13700
I've created a project (https://github.com/kshetline/aw-clock) that, among many other things, detects GPS time sync with PPS by examining the output from the ntpq
command. What I'm expecting is output that looks like this:
pi@clock:~ $ ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
0.debian.pool.n .POOL. 16 p - 64 0 0.000 +0.000 0.001
1.debian.pool.n .POOL. 16 p - 64 0 0.000 +0.000 0.001
2.debian.pool.n .POOL. 16 p - 64 0 0.000 +0.000 0.001
3.debian.pool.n .POOL. 16 p - 64 0 0.000 +0.000 0.001
*SHM(2) .PPS. 0 l 9 64 377 0.000 -0.007 0.001
xSHM(0) .GPS. 0 l 10 64 377 0.000 -586.75 58.377
-eterna.binary.n 128.138.140.44 2 u 79 128 377 62.565 +2.244 4.420
+t2.time.bf1.yah 98.139.133.62 2 u 53 64 377 28.750 +3.667 10.354
-65-100-46-164.d .SOCK. 1 u 3 64 377 88.300 +3.213 9.568
+time-ewr.0xt.ca 17.253.14.251 2 u 11 64 377 19.489 +2.813 12.572
For my own purposes, checking for the line with both SHM and PPS with the following regex has been working fine for me:
/^\*SHM\b.+\.PPS\.\s+0\s+l\s+.+?\s([-+]?[.\d]+)\s+[.\d]+\s*$/
One of the users of my project says he has GPS sync, but my code isn't detecting it. He's not sure about PPS sync. His output from ntpq
looks like this:
pi@raspberrypi:~ $ ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
0.debian.pool.n .POOL. 16 p - 64 0 0.000 +0.000 0.001
oPPS(0) .PPS. 0 l 7 16 377 0.000 -290.00 0.321
*SHM(0) .GPS. 1 l 4 16 377 0.000 +4.782 4.952
SHM(2) .SHM2. 0 l - 16 0 0.000 +0.000 0.000
time.skylineser 130.207.244.240 2 u 50 64 1 37.196 -285.61 0.322
+ntp1.ring-u.net 130.207.244.240 2 u 49 64 1 28.878 -280.98 1.622
+50-205-244-108- 50.205.244.27 2 u 47 64 1 27.833 -287.90 3.220
sonic.boom.net 128.9.176.30 2 u 57 64 1 71.871 -284.30 0.001
I can't find sufficient documentation for ntpq
to explain how this output works thoroughly enough for me to understand whether this output indicates proper PPS sync, just in a different way than it shows up for me, or if this indicates a problem.
Upvotes: 0
Views: 593
Reputation: 3113
The user output is actually the same as yours just without/broken formatting.
It looks like the PPS
offset is rather large so I wonder if they have everything configured correctly. They also have an SHM(2)
entry which appears to be doing nothing. I wonder if their shared memory config is correct. My input sources list is:
NMEA GPS:
xSHM(0) .GPS. 0 l 3 16 377 0.000 -116.89 24.632
PPS:
*SHM(1) .PPS. 0 l 6 16 377 0.000 -0.014 0.045
The docs for ntpq
can be found here. And the part that explains the status flags can be found here.
Extract from the docs:
discarded as not valid x discarded by intersection algorithm . discarded by table overflow (not used) - discarded by the cluster algorithm + included by the combine algorithm # backup (more than tos maxclock sources) * system peer o PPS peer (when the prefer peer is valid)
I'd be curious to see their actual ntp.conf
I wonder if they have an odd or specific setup. At a quick glance I'd say they're actually using the GPS/NMEA
as the system peer rather than the PPS
. I run several production S1 servers and haven't had a situation where the PPS
is marked with an o
.
I'm also guessing when they sent you through that output the server had not been running long (or a least not had much connectivity) as the reachability of the remote IP servers is only 2
and given they're polling every 64
sec I'd say they're not reachable or don't like high frequency polls.
Ideally they need to leave it running for a while (at least til everything has a reach of 377) then look again. If they have the full ntpq
suite then get the output from ntpq -pcrv
and it will provide deeper details.
Upvotes: 0