Table of Contents

NTP

ntptime

Issues

Not synchronized clock

Cannot set correct time. Manual setting time by date command is ignored.

$ sudo timedatectl 
               Local time: Mon 2019-10-28 18:11:50 CET
           Universal time: Mon 2019-10-28 17:11:50 UTC
                 RTC time: Mon 2019-10-28 15:58:24
                Time zone: Europe/Warsaw (CET, +0100)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no
$ sudo ntptime
ntp_gettime() returns code 5 (ERROR)
  time e161a024.e5878318  Mon, Oct 28 2019 18:13:08.896, (.896599762),
  maximum error 16000000 us, estimated error 16000000 us, TAI offset 0
ntp_adjtime() returns code 5 (ERROR)
  modes 0x0 (),
  offset 0.000 us, frequency 93.212 ppm, interval 1 s,
  maximum error 16000000 us, estimated error 16000000 us,
  status 0x2041 (PLL,UNSYNC,NANO),
  time constant 3, precision 0.001 us, tolerance 500 ppm,

Reason is: there is no possibility to set clock to past. It is possible to adjust kernel clock to slow down. Also some AMD platform are known for big clock drifts.

You can only set times in the future, setting past times with date command will do nothing and no error will be shown. Ntpd service will correct slowly the time at small steps. It's not like in Windows       where you can set any time and see the result immediately.

Solution:

stop all ntp daemons, delete /var/lib/ntp/ntp.drift

# set initial adjtimex params
$sudo adjtimexconfig
Comparing clocks (this will take 70 sec)...done.
Adjusting system time by -9.67758 sec/day to agree with CMOS clock...done.
 
# print current ticks
sudo adjtimex -p
 
         mode: 0
       offset: 0
    frequency: 5766574
     maxerror: 16000000
     esterror: 16000000
       status: 8257
time_constant: 3
    precision: 1
    tolerance: 32768000
         tick: 9998
     raw time:  1572283011s 863855330ns = 1572283011.863855330
 
# Slow down clock, to do not wait few days for correction
adjtimex -tick 9000 
 
# Watch how it works
adjtimex -compare

When clock reach good value. Start ntpd. Wait some time and observe 'adjtimex -compare' output. Ntpd will periodically makes adjustments to clock drift to keep clocks synchronized. Finally it is good to store correct time to RTC hwclock -w