Recently, the clocks on my home networked PCs began drifting off sync until the difference was around 30 minutes. At first i thought that my SBS server was no longer synching with time.windows.com (the default time server for windows). After a quick look at the event log, I could see that it was syncing correctly and that the date and timezone were correct. So I began to look at how I could change the NTP server that Windows was syncing with. Unlike Windows XP, which had a tab were you could set the source and even add your own in the date and time control panel applet, Windows Server 2008 and Windows 7 have nothing of the sort, so how was I going to change the source. A quick look on technet led me to an article titled Windows Time Services Tools and Settings.
To query the time service about its current status open up an elevated command prompt and type in:
w32tm /query /status
This will display the following output (it will either state Source: Local CMOS Clock or time.windows.com)
After working out the souce and that it was synching without error as well as the obvious the fact the time was way off I needed to find a reliable Time service. After a bit of searching around the web I found pool.ntp.org which is the part of the home for the Network Time Protocol open source project (ntp.org). Members work together to provide a public pool of time servers for use by individuals and businesses. pool.ntp.org uses DNS round robin to make a random selection from a pool of time servers who have volunteered to be in the pool making this service highly redundant and reliable.
If you navigate to the Time Servers page on their wiki you will see a list of servers as rell as regional servers which you can also choose from. Since I’m in Australia I narrowed it down to Oceanaia and then Australia leaving me with au.pool.ntp.org. So basically I now had to reconfigure the Windows Time service to sync with the NTP Australian Server Pool. A quick look over the technet documentation told me the commands I needed to run which was:
w32tm /config /manualpeerlist:au.pool.ntp.org
Which after being executed in an elevated command prompt will leave you with command completed successfully. Once that is configured we need to restart the time service by either doing net stop/start w32time or via the Services Control Panel on Windows Time.
You can then query the time service again using /query and /status which will present you with the above output. As you can see the time service is now synching with the service that I specified it to. You can look around the NTP site to find a group of services which are closer to your location, but it generally doesn’t matter where you pick the NTP server from.
And there you have it, how to reconfigure the Windows Time service to look at a different time source. As a side note before closing off the article, Microsoft don’t fully support the Windows 32 Time service for use in high accuracy environments as mentioned in this Knowledge base article. So if you need something which is highly accurate then you need to look elsewhere.
17 thoughts to “How to set (and change) an NTP time source in Windows Server 2008 R2 (SBS 2011 and Vanilla Server).”
Thank you, this worked great.
Glad to see it helped you out. I am doing this for pretty much all of the clients I manage now as it helps to keep everything ticking along nicely.
Finally, an answer that applied to my situation and worked perfectly. Thanks.
Thank you so much for the info, it helps a lot! 🙂
If i setup Win Svr 2012 as a NTP server, then how about other PC to connect / sync with this Win Svr 2012.
So long as the 2012 machine is a DC (and is your PDC) then clients will automatically sync. If not then you need to modify group policy and windows firewall to allow clients to sync up. If you are not on the domain, you can use the command in this post on the clients to point to the 2012 server (just change the pool.ntp address to address of 2012 server).
I had trouble with the above command not applying on a Windows Server 2012 DC.
The following command worked instead, and also didn’t require the service to be restarted.
w32tm /config /manualpeerlist:au.pool.ntp.org /syncfromflags:all /update
The orginal Solution did not work on my Server 2008 R2 but Solomon’s command did! Thanks!
This procedure does not work for SBS 2011. After restarting the time service your command merely changed the update source from “free-running system clock” to “Local CMOS clock”.
Begs the basic question, how do you set and change an NTP time source in Windows SBS 2011
Original command didnt update the source (Local CMOS Clock) or stratum:1
The solomun command (w32tm /config /manualpeerlist:au.pool.ntp.org /syncfromflags:all /update)worked a treat
Updated to au.poool.ntp.org and the stratum:4 (which means synced by NTP>
Another person here trying to use this approach on a SBS 2011 server, and failing.
The initial command seems to complete successfully, and the service stops and starts… but when queried it is still using the local CMOS clock.
Ed, make sure you’re typing the commands in correctly and that the time source is valid. Check out the MS KB article if you’re still stuck.
Been trying this for nearly 6 months and the problem keeps popping up Again every 2nd month (give or take).
Our SBS2011 simply WILL not move from ‘Local Cmos’
I was able to get the original commands to work on SBS 2011.
After you stop and restart the w32time service it does indeed say Local CMOS.
But if you wait for like 30 seconds and then query again, it lists the Time server I entered.
Also, instead of au.pool.ntp.org I used 1.au.pool.ntp.org (there are 0.au.pool.ntp.org, 1.au.pool.ntp.org, 2.au.pool.ntp.org and 3.au.pool.ntp.org
net stop w32time
w32tm /config /manualpeerlist:time.domain.com /syncfromflags:all /reliable:yes
net start w32time
w32tm /query /status
My observation is telling me there is a running config that is saved and you cannot update it while it is running. You need to turn the service off to update it.
Also, you have to run w32time /query /status about 10 times for it change from cmos clock to time.domain.com.
I used the original command on a SBS 2011 server. After a stop and restart of the service, it did say Local CMOS. I tried the original command again (without stop/start), and then it did say pool.ntp.org.
Now I wounder what will happen at a server restart, but thankfully that doesn’t happen so often.
Also on SBS 2011, thank you for the tip that you just need to wait 30 (or less) seconds to check the status. I haven’t rebooted but after the Source updated to au.pool.ntp.org (I’m also Australia), I then stopped and restarted the service and checked status and it first said Local CMOS, then checked status again and it updated to au.pool.ntp.org
So it seems that some SBS 2011 process sets the source to Local CMOS initially upon w32tm startup before then changing it to the source that you configure.
I would also guess that if you stopped and started it and checked the status first before changing it at all it would say Local CMOS and then after some seconds it would change to Free-running System Clock. I don’t care enough to google why it is different on SBS, but there you have it.