Best timesync method, NTPd/Chrony/Custom Driver with i/O interrupt & nmea sentances?


Under the basic premise of having a super accurate NTP server; how best would I time sync the beagle bone black(green)? Currently using the provided debian image.

If I kick off NTPd & GPSd and include a 1PPS over an io as root, what would my expectations be for offset from utc? Would moving OS also help in this scenario? I believe Chrony/NTPd are comparable on their timesync?

The above assumes I am running on the am335x; is it possible to offload the timesync process onto the PRU? I would assume that it could provide a more accurate time and allow for the processor to handle other tasks?

Would writing a custom driver that takes an interrupt (PPS) over IO (is a certain pin best?), reads time from GNS, & sets time w/ an added offset for delay in reading time from GNS be the best solution? Again, would it be better performance if it ran on the PRU?

The linux kernel has a pps driver, which we have activated…

Here is an older example i did with a GNSS-5-CLICK, using tx/rx and pps signal pin…

once you setup the pps signal, follow the rest of this:

for the software stack…


Thank you @RobertCNelson; the information is incredibly helpful and reassuring.
I have followed some similar material here: GPSD Time Service HOWTO
In the material I have followed; it has a summary table for typical accuracy.

Am I correct in assuming that the beagle by default has KPPS support enabled and the method you have described would be closer to the ±1uSec rather than the ±5uSec?

My ultimate goal is for the beagle’s systime time to be as close to UTC as possible, preferably below ±1uSec. If I am trying to bring the offset to UTC down lower; do you know of any such method that involves the PRU? Have I missed something by chance? (That happens alot)

Best & Thank you so much!