gnomon / metronomon: terminal tools for watching NMEA timing and PPS on stratum 1 servers

Hi all,

I run a few GNSS-based stratum 1 servers at home (Raspberry Pi and small PCs with PPS, plus a couple of NTP appliances), and one of them is in the pool. I kept wanting to see things that GPS viewers don’t show, so I wrote two small terminal tools and published them as open source:

  • gnomon: an NMEA 0183 monitor modelled on gpsd’s gpsmon. It reads from gpsd, raw NMEA over TCP (e.g. the NMEA port of an NTP appliance) or a serial port, and shows when each epoch’s output actually arrives relative to the UTC second (“Lag”), per-sentence intervals and dropouts, checksum errors, plus the usual satellites and fix.
  • metronomon: a PPS monitor for the Linux PPS API (/dev/ppsN). It shows every pulse’s offset, 1 and 10 minute statistics, second-to-second jitter, and missing or extra pulses. It only uses PPS_FETCH, so it runs next to chronyd or ntpd on the same device without disturbing them.

Both are written in Rust with no external crates, and never write anything to the receiver.

cargo install gnomon-gnss

Repo and screenshots: GitHub - tanyorg/gnomon: NMEA 0183 GNSS monitor in Rust, modelled on gpsd's gpsmon (gpsd or raw NMEA over TCP) · GitHub

Feedback, bug reports and NMEA captures from receivers I haven’t tried are very welcome.

Many thanks to the gpsd developers, whose gpsmon this is modelled on.