NTS Time Server ntp.bollar.com
dev at ve2mrx.dyndns.info
Sat Mar 21 00:22:37 UTC 2020
I noticed that, except from the NTS part, our setups look similar (Pi
3B+, Buster, NTPsec 1.1.8, u-Blox MAX-M8Q GNSS, you probably use GPSd
I also noticed that you don't have quite as good precision and jitter as
I do (but close), and that you seem to use multiple GNSS systems. I
offer below many elements that helped me get my Pi to it's best, use
what you need. I very recently went through all my notes and validated
them to the current ways as there is a lot of obsolete stuff out there.
This is from my refreshed notes for Buster.
Extract from my ntp.conf:
# kernel PPS
refclock pps unit 0 refid kPPS flag2 0 flag3 0 minpoll 4 prefer # Best is minpoll 4!
# GPS PPS reference - PPS shm from GPSd - the serial shm is redundant as the PPS shm has all the info
refclock shm unit 1 refid gPPS minpoll 4 # Best is minpoll 4!
# *** NOTE: by default, the ARP cache flushes after 60 seconds. If so, use maxpoll 5 ***
# *** I modified the ARP flush on rPi to 65sec, so maxpoll 6 (64s) works ***
# sudo cat /etc/sysctl.d/ntp_arp.conf < net.ipv4.neigh.default.gc_stale_time = 65
# Take note: using iburst will make the ntpd first lock to the pool, instead of the PPS.
# LAN servers: <example>
server 192.168.10.11 minpoll 4 maxpoll 6 # !!! On LAN !!! # For ARP reasons, set maxpoll 6 -> 64s
# I use official government NTP servers to validate the quality of the pool
# Less an issue with a reliable GNSS timesource, but helps if you have an antenna problem and GNSS becomes unsynchronized
# Official Canadian gov NTP servers (Stratum 2)
server time.nrc.ca maxpoll 6 # For ARP reasons, set maxpoll 6 -> 64s
server time.chu.nrc.ca maxpoll 6 # For ARP reasons, set maxpoll 6 -> 64s
# Pool: use a geographically near pool - I set maxpoll to 10, but it is usually set to 6 by NTPsec
pool <local pool>.pool.ntp.org maxpoll 10
Also, if not already done, you should configure the Max-M8Q for time
service. GPSd settings are too general purpose:
* UBX-CFG-PRT set baudrate to 115200 but GPSd will need to be told
about it in it's startup script, ubxtool can set the uBlox GNSS,
* UBX-CFG-PRT set protocol out to 0-UBX, ubxtool can set the uBlox GNSS,
* UBX-CFG-GNSS enable only ONE GNSS system (GPS or Galileo or GLONASS
* UBX-CFG-SBAS select the SBAS system covering your zone else disable,
disable all SBAS features except integrity (activate it),
* UBX-CFG-PMS set power to 0-Full power or
* UBX-CFG-RXM set power to 0-Continous mode
* UBX-CFG-NAV5 set dynamic model to 2-Stationary, Fix mode to 1-2D,
* UBX-CFG-TMODE2 set Time mode to 2-Fixed mode, enter surveyed (fairly
* UBX-CFG-TP5 set antenna cable delay (from cable length and velocity,
* Last, UBX-CFG-CFG Save configuration to nvram
That should optimize your Max-M8Q for stationary time service. Sorry,
I'm too lazy to write some script using ubxtool to do it, so I use
uBlox's u-Center on Windows, save, and disconnect the RxD line of the
M8Q to prevent GPSd from re-configuring it. I think there is a GPSd
toggle (for "Broken" receivers, -u?) that prevents GPSd from writing to
the GPS, but my home-made interface card has a jumper I remove.
Also, check if you need to disable the systemd time setting service:
sudo timedatectl set-ntp false
From your graphs, it looks like it's OK, but it is an SNTP time setting
service that competes with NTPd and messes with precision. It shows up
as a few time jumps per hour on ntpviz graphs.
If you want my scripts/notes/miscellaneous files, just ask. I'm open to
corrections too, as I said, there is plenty of outdated information out
there and I want to get rid of mine.
Have a nice day!
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the users