Table of Contents
Chrony
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.
Compile & Install
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
chronyd.service
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
Make sure After=chronyd.service is in the [Unit] section of gpsd.service. Chronyd must be started first because it creates the sock that gpsd writes to.
chrony.conf
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