[LEAPSECS] Running on TAI

jimlux jimlux at earthlink.net
Tue Jan 15 19:45:30 EST 2019


On 1/15/19 4:19 PM, Hal Murray wrote:
> 
>> The trick is to find a source that will set a POSIX system to TAI, and then
>> to avoid the gotchas that happen when such a system interacts with other
>> POSIX systems.
> 
> What do the systems that point telescopes use for maintaining their system
> clock?  Do they use NTP or a special program that listens to GPS or a local
> Hydrogen maser or ...?
> 
> Some GPSDOs have the option to return GPS time rather than UTC.  GPS is a
> fixed offset from TAI.  So it's easy to run your system on TAI.  All it takes
> is a little sysadmin hacking, no programming.
> 
> You won't easily get redundancy from checking with other NTP servers.  If you
> have several friends running similar systems, you could set up a private NTP
> network.
> 
> With some work it would be reasonable to setup a ntp server that took in UTC
> but gave out TAI.  That would be similar to the way leap smearing works.  We
> could use a separate port number to minimize confuzion.
> 
> As far as I know, the kernel doesn't know anything about what type of time it
> is maintaining.  It just sets the clock as directed and goes tick, tick, tick.
>   The trouble is with the time conversion routines.  They all assume a time_t
> is UTC.  So if you ran your system on TAI, all your log files would be off by
> 37 seconds.
> 
> How hard would it be to insert a wrapper in front of the time conversion
> routines?  The idea is to rename all the current time conversion routines from
> foo to foo_utc and implement foo_tai that concerts between UTC and TAI.  It
> would need a list of leap seconds.  The default implementation of foo would
> call foo_utc but an environment variable or such would switch to using foo_tai.
>   
> 
Some modules (Python skyfield package from Rhodes Mill) explicitly deal 
with this.  The time object has a method for each time scale..

These return utc in various formats
time.utc_jpl()
time.utc_iso()
time.utc_datetime()

These return other timescales
time.tai
time.tt
time.J
time.ut1

I confess I have used them blindly without checking, but I can do that 
quickly.


More information about the LEAPSECS mailing list