Am looking to have a small NTP server (Chrony) provide time to different computers located on the same student under water vehicle connected via ethernet cables. We are primarily concerned with having different parts of the vehicle synchronized to each other to <10ms over several days.
Some electronics are being synchronized directly by a 1PPS source, so keeping the NTP server and the 1PPS source synchronized is important.
"System time" synchronized to the real world is not required but nice to have if it comes for free.
Currently we have:
- 1PPS frequency source
- imbedded computer with an RTC which is read at startup
- GPS Receiver but this ideally cannot be relied on as GPS does not work well underwater.
We currently feed the 1PPS signal and the GPS serial string into a USB-Serial converter (FTDI), this is then ready by gpsd, which correctly picks up the 1PPS and the GPS string for Chrony. This works and provides us about 2us synchronisation with 1PPS & GPS.
The existing setup has limitations for our application:
gpsd requires a valid gps time string to initialize the time, this is not always available as we have poor GPS reception on the water and none, underwater.
gpsd also require continuous valid strings to process the 1pps interrupt. This is mainly an issue if we want to disable the GPS receiver underwater to save power but want to keep syncing to the 1PPS.
Once GPS is lost or the GPS unit is turned off, the system time starts drifting from the 1PPS source.
I realize that "gpsd" is heavily relying on gps, so i am using the wrong tool.
Questions:
Is it possible to feed the 1PPS directly to chrony?
1.1 Could chrony use this 1PPS and the system time alone without ever getting real world time source apart from the RTC?
Are they examples on how to add a /dev/pps source using an FTDI USB-to-Serial converters RI or DCD pin? e.g what gpsd does under the hood, but without using it.