Introduction
This series discusses the setup of an NTP server using a Raspberry Pi single board computer. Each entry in the series will build upon the preceding ones, so following the posts in order is recommended!
So what is NTP anyway?
NTP, or Network Time Protocol is a computer protocol for clock synchronisation. At the top level, it's how your computer works out what time it is. This is more important than you might think. If your clock drifts (and computer clocks drift more than you might expect!), functions such as secure communication (such as HTTPS websites) can start to fail.
Out of the box, computers, mobile phones, etc are configured to get this time automatically from various public servers. For most people, problem solved!
But we're not most people.
Why might you want to make an NTP server?
Reducing the load on public servers
If you're on Windows, your computer gets its time from Microsoft's time servers. If you're on Android, you get time from Google's servers, and so on. If you're running on Linux, you most likely get your time from the NTP Pool.
The NTP Pool is a growing collection of timeservers made available to the public across the world. It's run by volunteers, providing access to their servers with no expectation of reward.
Each device you have in your home or business will be querying these servers individually, and the requests can add up faster than you might expect. In my own home, some of my smart home devices contact NTP servers to check the time every five minutes. The Synology router (much to my annoyance) queries NTP servers every 60 seconds - totally excessive, but not possible to change. All in all, the devices in my home check the time a staggering six thousand times a day.
With an NTP server in your own home, you can allow your devices to get the time from it as often as they like, and therefore greatly reduce your impact on the public servers.
Trying to improve your clock precision
With a normal NTP setup, you'll typically find yourself within a few hundred milliseconds of Coordinated Universal Time (UTC). That's good enough for all home purposes.
By adding a local reference to your NTP server using a GNSS Receiver, you could find yourself within microseconds of 'true' time. Totally unnecessary, but potentially a fun project to experiment with.
I personally find it interesting to tinker with my NTP server system and try to get ever better performance out of it.
Joining the NTP Pool
Maybe you've read about the NTP Pool, and you think it's a project you'd like to support. This is an easy way to get involved and learn something along the way!
Learning
Timing is a field with tremendous depth. Making an NTP server from a Raspberry Pi will teach you about how timing works at a much deeper level, it'll teach you something about how Linux works, and it'll teach you something about how GNSS can be used in the field of timing.