Fix it now
The time service went looking for a domain controller to synchronise with and could not resolve one, so it has no peer and is falling back on the local clock. The published text says it will try again in 15 minutes and double the interval after that. The fault is in name resolution or the domain controller locator records, not in the time service.
w32tm /query /source
nltest /dsgetdc:contoso.com
ipconfig /flushdns
w32tm /resync /rediscover
- Read the answer from
w32tm /query /source. A local clock means the machine has no peer at all, which matches the event. - If
nltest /dsgetdcalso fails, this is a DNS problem showing up as a time problem. Check that the machine points only at internal DNS servers – a public resolver will never return your domain controller records. - If the locator works but no domain controller advertises as a time server, ask for one specifically:
nltest /dsgetdc:<domain> /timeserv. - On the domain controller side, re-register the records with
nltest /dsregdns, and confirm it advertises correctly withdcdiag /test:Advertising.
Event ID 134 is the manual-peer version of the same message. If you see 134, someone configured a named peer on this machine, and it is that name that is not resolving.
If w32tm /query /source now names a domain controller, you are done. The next section covers the checks that decide whether the peer exists at all.
Why it happens
A domain member does not get time from a name you configure. It asks the domain controller locator for a domain controller and then synchronises with it, authenticating the exchange with the computer’s Kerberos session key. That dependency is the whole story here: if the locator cannot answer, the time service has nowhere to go, and it says so in terms that sound like a time fault.
The published text is specific about the retry behaviour: NtpClient was unable to set a domain peer to use as a time source, it will try again in 15 minutes, and it will double the reattempt interval thereafter. That doubling is why a transient DNS problem in the morning can leave a machine unsynchronised all afternoon even though DNS recovered, and why forcing a resync by hand is worth doing after you fix the underlying fault.
Event 134 is worth separating from 129 before you start. 134 says NtpClient was unable to set a manual peer, with a DNS resolution error on the name – in the published example, time.windows.com. A machine logging 134 has been given a named peer by somebody, and the fix is that name or the firewall in front of it, not the domain controller locator.
The machine cannot resolve domain controller records
You have this one if nltest /dsgetdc:<domain> fails as well, and w32tm /query /source shows a local clock.
- Check the DNS servers on the adapter with
ipconfig /all. Internal resolvers only. - Flush the resolver cache and try again:
ipconfig /flushdns, thennltest /dsgetdc:<domain>. - Once the locator works, force the time service to look again with
w32tm /resync /rediscoverrather than waiting for the backoff.
No domain controller is advertising as a time server
You have this one if The locator works, but nltest /dsgetdc:<domain> /timeserv fails.
- On the domain controllers, confirm the NTP server provider is enabled:
Enabledset to 1 under...\W32Time\TimeProviders\NtpServer. - Confirm AnnounceFlags – 5 on the PDC emulator, 10 on the other domain controllers.
- Run
dcdiag /test:Advertisingon a domain controller and fix what it reports before looking at the client again.
The domain controller’s own locator records are missing
You have this one if Several machines on one site lose their time source at once, and DNS has been rebuilt, scavenged or repointed recently.
- On the domain controller, re-register with
nltest /dsregdns, or restart the Netlogon service. - Check the zone actually accepted the records, especially where scavenging is aggressive.
- Flush the resolver cache on a client and confirm it can find a domain controller again.
A manual peer was configured and no longer resolves
You have this one if Event 134 rather than 129, naming a specific host such as an external NTP name.
- Read the name out of the event – the published example is time.windows.com with a DNS resolution error.
- Decide whether this machine should have a manual peer at all. Domain members should normally follow the hierarchy.
- To put it back on the hierarchy:
w32tm /config /syncfromflags:domhier /update, then restart the service.
Full reference
Two events that read alike and mean different things
| Event ID | What it says |
|---|---|
| 129 | NtpClient was unable to set a domain peer to use as a time source, because of a discovery error. It retries in 15 minutes and doubles the interval |
| 134 | NtpClient was unable to set a manual peer to use as a time source, because of a DNS resolution error on the named peer |
Events that travel with these
Microsoft documents events 24, 29 and 38 together, as the set logged on a virtualised domain controller that is synchronising both from the hypervisor’s integration service and from the domain hierarchy. If you are seeing those three on a virtual domain controller, the fix is on the host: disable the time synchronisation integration for that guest, and let it follow the domain hierarchy. Microsoft’s stated reason is worth the trouble – a domain controller whose system time jumps can leave lingering objects in caches and can stop replication.
Checks in the order that saves time
w32tm /query /sourceon the client. A local clock confirms there is no peer.nltest /dsgetdc:<domain>. If this fails, stop and fix DNS.nltest /dsgetdc:<domain> /timeserv. If this fails while the previous one works, the problem is on the domain controllers.dcdiag /test:Advertisingon a domain controller.w32tm /monitorto see the offsets across the domain controllers once a source exists.w32tm /resync /rediscoveron the client, because the backoff means it will not retry promptly on its own.
What has to be open
- UDP 123 between the client and the domain controller, in both directions. The NTP client can only use UDP 123 as its source port.
- The usual domain controller locator path, since the time service depends on finding a domain controller before it can synchronise at all.
- Nothing else. If UDP 123 is open and the locator works, remaining failures are configuration on the domain controllers rather than the network.
The registry values you may need to read
| Value | Key | Meaning |
|---|---|---|
Type |
...\W32Time\Parameters |
NT5DS for a domain member following the hierarchy; NTP where a manual peer list is in use |
NtpServer |
...\W32Time\Parameters |
The manual peer list. On a domain member this should normally be irrelevant |
SpecialPollInterval |
...\W32Time\TimeProviders\NtpClient |
Poll interval in seconds when the source is unavailable |
ResolvePeerBackoffMinutes |
...\W32Time\TimeProviders\NtpClient |
The backoff the event refers to, 15 minutes by default |
ResolvePeerBackoffMaxTimes |
...\W32Time\TimeProviders\NtpClient |
How many times that interval doubles before it stops growing |
Every code this article covers
| Code | What it points at | Source |
|---|---|---|
Event ID 129 |
NtpClient was unable to set a domain peer to use as a time source because of a discovery error; it retries in 15 minutes and doubles the interval thereafter | Microsoft Learn |
Event ID 24 |
No published per-event text was found. Documented as part of the 24, 29 and 38 set logged on a virtualised domain controller synchronising from both the host and the domain hierarchy | not published by the vendor |
Event ID 38 |
As above: no published text, documented only as part of that virtualised domain controller set | not published by the vendor |
Event ID 36 |
No acceptable source publishes a meaning for this ID. Treat it functionally as the service reporting a long period with no usable time sample, and confirm with w32tm /query /status |
not published by the vendor |
Event ID 134 |
NtpClient was unable to set a manual peer to use as a time source because of a DNS resolution error on the named peer | Microsoft Learn |
Confirm the fix worked
w32tm /query /sourcenames a domain controller rather than a local clock.nltest /dsgetdc:<domain> /timeservreturns a domain controller.w32tm /query /statusshows a recent successful synchronisation and a sensible stratum.- No new 129 or 134 events after a reboot.
w32tm /monitorshows this machine’s offset in line with the domain controllers.
Questions people ask about this
Is the clock already wrong when this appears?
Not necessarily. The machine has no peer, so it is running on its own clock and will drift. The event is a warning about the source, not a report of drift.
Why does it not recover on its own after DNS is fixed?
Because of the documented backoff: it retries in 15 minutes and doubles the interval thereafter. Force it with w32tm /resync /rediscover once the locator works.
What is the difference between 129 and 134?
129 is a domain peer it could not discover; 134 is a manual peer it could not resolve by name. The second means someone configured a specific server on this machine.
Should a domain member ever have a manual peer?
Rarely. Domain members should follow the hierarchy with Type NT5DS. Manual peers belong on the forest root PDC emulator.
Does fixing this cost anything?
No. It is DNS, the domain controller locator records and a couple of registry values on the domain controllers.
