My MacBook Pro (13-inch, 2016, Four Thunderbolt 3 Ports, 16GB) running Big Sur 11.1 won't keep accurate time. It's regularly up to a minute off. I verified this using:
- https://time.gov
- Comparison with my iPhone
sudo sntp -d time.apple.com
I've tried sntp -sS time.apple.com
, and it doesn't adjust the time. I'd expect it to step to the right time, given we're (way!) more than 50ms off.
I've tried turning off automatic time sync in the system preferences, then setting the time right by hand, then turning automatic sync back on and it puts the clock back to the wrong time!
I've tried killing timed
– it's restarted and the time remains wrong.
I've tried removing /var/db/timed/com.apple.timed.plist
and then restarting timed
. It recreates the file and the time remains wrong.
Reading this question, I checked the contents of the plist file, but mine doesn't appear to have any store of the current offset:
# plutil -p com.apple.timed.plist
{
"BootUUID" => "<redacted>"
"HostUUID" => "<redacted>"
"RTCResetCount" => 0
"TMLastNtpFetchAttempt" => 5331203.310338818
"TMLastRtcTime" => 5331203.336288487
"TMSystemTimeSet" => 0
"TMTimeSynthesizer" => {length = 499, bytes = 0x62706c69 73743030 d4010203 04050607 ... 00000000 00000179 }
"TMVersionKey" => 17
}
No mention of TMLastSystemTime
or TMTimeError
.
I'm at my wits end with this. It's a real problem because it often prevents me using 1Password-generated TOTP codes because the drift is so bad.
Any ideas, please?
Best Answer
There are other reports saying that time under Big Sur is not as accurate as it used to be, does not fully correct the time and in some cases maybe in error by many seconds. For example Time Synchronization Command line in MacOS Big Sur
In my case (2019 iMac) the time was consistently about 60 to 70 mS fast.
A simple command line check is to use the terminal command
sntp pool.ntp.org
. For examples:This result is showing what my iMac now achieves - the first number shows an error of less than 1 mS.
To achieve this accuracy Apple's
timed
daemon needs to be replaced.The cross-platform app for this is Chrony. This can be installed easily via Homebrew but its configuration might be considered as something of a black art. Much easier is to use ChronyControl. Just download, unzip and drag the app to /Applications.
With SIP disabled (if only temporarily) you can disable Apple's
timed
using:But don't worry if you want SIP enabled at all times, the
timed
daemon uses very little resources and ChronyControl will prevent it making time changes.The first time you run ChronyControl, it will configure everything for you including starting the
chronyd
daemon with a default configuration, configuring logs and starting a helpful GUI app. Here is the GUI:and the tracking display:
The only change I have made to the configuration is to replace the use of general purpose servers
pool.ntp.org
with a country specific set of serversau.pool.ntp.org
.The only other thing you might want to change is that ChronyControl puts the configuration file in
/etc/chrony.d
. Better, perhaps, to put it in/usr/local/etc/chrony.d
.Chrony is open source (and free), ChronyControl is donation-ware ($15 suggested) and its from the developer of the long established WhatRoute network utility.
I got started on using Chrony as a result of Feek's post on MacRumors to whom I give full credit for the discovery.