Major/minor sources

What if you had a very accurate pulse per second (PPS) source you wanted to use for time, but it was only a PPS? There’s great information there telling you the boundaries of a second, but nothing indicating the time of day (or month or year).

This happens pretty frequently in testing and validation, where a high quality PPS is delivered, but that host also needs to know the time of day in order to make use of it. That host may be able to get time of day information from a local NTP server. Even if that NTP feed is relatively inaccurate (can’t guarantee time to the microsecond/nanosecond level), it can still be used to provide major time (time of day to within a second) to match with the minor time (accurate information about the nanosecond/microsecond range) provided by the PPS.

Configuring TimeKeeper for major/minor sources

TimeKeeper can be configured to combine these sources into one highly accurate local clock as well as act as a time server on the network. Here is an example of how to configure for this scenario:

SOURCE0() { 
	PPSDEV=/dev/ttyS1
	MAJORTIME=SOURCE1
}
SOURCE1() { 
	NTPSERVER=hostname
}

PPSDEV in source 0 here is a local PPS via a serial input, it could instead be a local bus card, as detailed elsewhere in these documents. In this configuration, the primary time source (SOURCE0) is a serial device providing an accurate pulse per second but no time of day information. SOURCE1 is an NTP server with time data accurate to the second. SOURCE0 combines the PPS with the NTP data to provide an accurate primary source. In this configuration, if the PPS is lost, TimeKeeper will fall back to use just the NTP server. (Other sources could be listed in between SOURCE0 and SOURCE1 or after SOURCE1 also.)