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
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