Using GPS as only source for NTP daemon

I have questions regarding the use of a GPS receiver as an external clock source for realization of a time server with NTP daemon (client version 3), on a local network with no connection to external time servers.

I tried using three different GPS devices:

  • u-blox - NEO-M8N-0-10,
  • Adafruit Ultimate GPS breakout v3 module PA8H,
  • Digilent PmodGPS,

and two different driver types: 20 (NMEA) and 28 (SHM - Shared Memory type). For backup I have an undisciplined local clock (driver type 1) for the instances when the GPS is not available.

When the driver type 28 is used and the GPS signal is gone or has failed sanity check, the system starts using its local clock, however in this case there is too much dispersion. If a remote server exists, the system continues to work properly and uses the remote (spare) server for synchronization. The system will be/is operating in the circumstances where there is only local network connection. When the driver type 20 is used, I get tally “*” instead of “o” and it seems that PPS signal is not used for the synchronization, although ppstest passed.

  1. Is there a possibility to configure NTP to have stable clock using only GPS signal if it's available and local clock if not?
  2. Is it better to use driver type 20 or type 28?

Remove the undisciplined local clock source, it is not useful. Disciplined clock with zero peers but known drift will perform better than forcing it to follow undisciplined clock.

Determine if running with no reference gives sufficient performance for you. If not, consider bringing in more redundancies: a receiver for a different satnav constellation, an appliance with a good oscillator.