System clock always unsynced

Christian Weisgerber naddy at mips.inka.de
Mon Apr 27 15:11:20 UTC 2015


I run OpenNTPD, from ports/net/openntpd, and I've noticed that after
each reboot, the initial system time is further off.  (This is quite
noticeable with OpenNTPD, since by default it does *not* jump the
clock on startup like the base ntpd does.)  It's as if the RTC was
never synchronized to the system clock.

Some digging in sys/kern/kern_ntptime.c shows indeed that the RTC is
only synced if STA_UNSYNC is not set, and dumping the value of the
timex struct...

offset:    0
freq:      2730304
maxerror:  84860000
esterror:  500000
status:    UNSYNC
constant:  0
precision: 0
tolerance: 32500000
state:     ERROR

... reveals that the clock remains permanently unsynced.  Clearly,
OpenNTPD, which uses adjtime(2) to correct offsets and ntp_adjtime(2)
with MOD_FREQUENCY to correct the frequency, doesn't handle this
quite right.

What *does* an ntpd daemon need to do to sync the clock?

The ntp_adjtime(2) man page documents struct timex in detail, but
is very vague on what all of this means.

-- 
Christian "naddy" Weisgerber                          naddy at mips.inka.de


More information about the freebsd-hackers mailing list