I am currently using a Ublox M8N either for positioning than for time
synchronization (as stratum0 source and stratum1 server to other
subsystems). In order to achieve this I have a gpsd listening the device
in a local port and publishing timing/positioning in shared memory (to
be visible to NTP.). I have also put PPS electrical signal from the GNSS
receiver into a gpio handled by a pps-gpio linux driver. That works fine
in my system.
PPS has been tested with ppstest tool. also ntpshmmon gives
time/position exports to shared memory for every second.
The problem is that up to now I haven't found a way to calibrate
accurately the initial calibration time offset estimations given by ntp.
I used trial-and-error approach to arrive to a combination of
calibration times for [PPS , SHM] that keeps my local clock
synchronized for as long as possible. The most I have got with that
combination is 300 seconds after ntp service restart.
After the ntp restart, the ntp shows:
|root@hostname:~# ntpq -p remote refid st t when poll reach delay offset
jitter
==============================================================================
*SHM(0) .UBL. 0 l 6 16 17 0.000 -5.601 7.147 oPPS(1) .PPS. 0 l 5 16 7
0.000 -2.434 0.391 |
but after a (short) while, ntp marks both sources as false tickers:
|root@hostname:~# ntpq -p remote refid st t when poll reach delay offset
jitter
==============================================================================
xSHM(0) .UBL. 0 l 4 16 377 0.000 -11.125 5.132 xPPS(1) .PPS. 0 l 3 16
377 0.000 -2.701 0.200 |
Sometimes it comes back to synch, and it goes back and forth. For my
purposes, it might be acceptable (since local time clock does not
diverge much until the next time ntp resync), but when I apply the same
ntp configuration to another system with the exactly the same
hardware/software configuration (even the same GNSS antenna in open
sky), the synchronization state is not stable (ntps declares false
tickers almost always). This makes me think that the ntp configuration I
have obtained is not the optimal.
The NTP configuration I have is this:
|driftfile /netlab/log/ntp.drift statsdir /netlab/log/ntpstats/
statistics loopstats peerstats clockstats logfile
/netlab/log/NTP/ntp.log enable calibrate filegen clockstats ntp.stats
clockstats type day enable # SHM driver doc: # time1 Specifies the time
offset calibration factor, in seconds and fraction, with default 0.0. #
time2 Maximum allowed difference between remote and local clock, in
seconds. Values <1.0 or >86400.0 are ignored, and the default value of
4hrs (14400s) is used instead. See also flag 1. # stratum Specifies the
driver stratum, in decimal from 0 to 15, with default 0. # refid
Specifies the driver reference identifier, an ASCII string from one to
four characters, with default SHM. # flag1 0 | 1 Skip the difference
limit check if set. Useful for systems where the RTC backup cannot keep
the time over long periods without power and the SHM clock must be able
to force long-distance initial jumps. Check the difference limit if
cleared (default). # flag2 0 | 1 Not used by this driver. # flag3 0 | 1
Not used by this driver. # flag4 0 | 1 If flag4 is set, clockstats
records will be written when the driver is polled. server 127.127.28.0
mode 1 minpoll 4 maxpoll 6 prefer fudge 127.127.28.0 time1 0.040 time2
1.00 stratum 0 flag1 1 flag4 1 refid UBL # driver 22 (ATOM PPS) # flag2
Specifies PPS capture on the rising (assert) pulse edge if 0 (default)
or falling (clear) pulse edge if 1 # flag3 Controls the kernel PPS
discipline: 0 for disable (default), 1 for enable server 127.127.22.1
minpoll 4 maxpoll 4 version 4 prefer # enable PPS API fudge 127.127.22.1
flag2 0 time1 -0.040 stratum 0 flag3 1 |
(my apologizes for the long intro)
Is there a way to systematically calibrate the offsets so the
synchronization is stably maintained (obviously under optimal sky
visibility) ?
_______________________________________________
questions mailing list
questions@lists.ntp.org
http://lists.ntp.org/listinfo/questions