Chrony has some advantages over old NTPd.
However, the version packaged for Debian/Ubuntu seems to be broken in that SOCKs don't work. If you manually compile and install it you'll be good.
This assumes a brand new debian-based install.
sudo apt install git bison build-essential asciidoctor -y git clone https://github.com/mlichvar/chrony cd chrony ./configure make ; make docs sudo make install
A systemd service file is not included, here's a very simple one.
[Unit] Description=chrony, an NTP client/server Documentation=man:chronyd(8) man:chronyc(1) man:chrony.conf(5) Conflicts=openntpd.service ntp.service ntpsec.service Wants=time-sync.target Before=time-sync.target After=network.target [Service] Type=forking ExecStart=/usr/local/sbin/chronyd -f /etc/chrony.conf [Install] Alias=chronyd.service WantedBy=multi-user.target
Install:
cp chronyd.service /lib/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable chronyd
After=chronyd.service is in the [Unit] section of gpsd.service AND gpsd.socket. chronyd must be started first because it creates the sock that gpsd writes to.
Note! Change ttyAMA0 to whatever your UART is coming in on!
server time-a.nist.gov server time-a-wwv.nist.gov server time-a-b.nist.gov refclock SOCK /run/chrony.ttyAMA0.sock refid GPS rtcsync logchange 0.5 local stratum 10 makestep 1.0 3 logdir /var/log/chrony log statistics tracking dumpdir /var/log/chrony driftfile /chrony.drift allow