Featured image of post Windows Troubleshooting: Fixing Automatic Time Sync Issues

Windows Troubleshooting: Fixing Automatic Time Sync Issues

Such a basic service can't start automatically, I'm not sure if this is a bug in Windows or a problem I accidentally caused later.

For some unknown reason, my computer never automatically syncs its time with the NTP server. While it doesn’t have much of an impact in the short term, if left unchecked, a significant time drift could cause problems with applications that rely on timestamps, such as SSL and TOTP. Additionally, manually pressing the sync button is quite inconvenient. Today, I decided that I must resolve this issue.

SpecialPollInterval

After searching online for a while, I found that someone mentioned the SpecialPollInterval key. Its specific location is HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient. Microsoft’s official documentation describes it as follows:

This entry specifies the special poll interval in seconds for manual peers. When the SpecialInterval 0x1 flag is enabled, W32Time uses this poll interval instead of a poll interval determined by the operating system. The default value on domain members is 3,600. The default value on stand-alone clients and servers is 604,800.

For regular clients, the default value of this key is 604800, which means it syncs once a week. This interval is obviously too long, so I set it to 3600 to make it sync every hour.

w32tm

A few days later, when I checked the time again, I found that it still hadn’t automatically synced. This time, the drift had reached 15.8 seconds.

System time is ahead by 15.8 seconds

I then searched for more information about “SpecialPollInterval” to understand its specific function and why it didn’t meet my expectations. I came across a troubleshooting guide from Microsoft. The guide pointed out: “Each time a client polls the time sample from the NTP server, the NTP client enters the SPIKE state. The time service manages its internal state, and if the client enters the SPIKE state, the client will not sync its time.”

To resolve this issue, you need to configure Windows Time to use MinPollInterval/MaxPollInterval as the polling interval.

1
w32tm /config /update /manualpeerlist:cn.pool.ntp.org /syncfromflags:MANUAL

Service Not Started

When I ran this command, I received a “service not started” message, indicating that the service responsible for time synchronization had not started at all. I’m not sure if this is a Windows bug or something I inadvertently caused later on. Regardless, the first step is to start this service:

1
2
net start w32time
w32time /register   # Registers basic registry keys and related services

Next, press Win + R, run services.msc to open the services management panel, find the “Windows Time” service, and set its startup type to “Automatic” to ensure it starts automatically on boot.

Set W32Time startup type to automatic If “Next synchronization” appears, it means success

After restarting the computer, open “Settings” –> “Time & Language” –> “Date & Time” –> “Additional Clocks,” switch to the “Internet Time” tab. If you see the “Next synchronization” message, it means the system is finally working correctly.

Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy