Skip to content

Commit bd24953

Browse files
committed
Added initial version of the ptp docs.
1 parent 83fe214 commit bd24953

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

reference/best-practice/ptp.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Synchronizing machines to the High Precision Clock
2+
3+
Starting from Windows10 (build) window's System Time can be synchronized to a High Precision Time Sourse that uses [PTP](https://de.wikipedia.org/wiki/Precision_Time_Protocol) (Precision Time Protocol). PTP is more precise that NTP (Network Time Protocol), which is used normally by Windows to keep its time in sync.
4+
5+
## Overview:
6+
7+
There should be at least one PTP Source in your LAN Network. In case there are many, they agee upon each other who the `Grandmaster` is. Clients sync their time to one of the sources.
8+
9+
## Configuration of a client
10+
11+
Configuring PTP on the system takes several steps:
12+
13+
1. To check if your system has this dll: `C:\Windows\System32\ptpprov.dll`.
14+
1. Check if one of your LAN cards (Wi-Fi won't work) support PTP:
15+
1. Navigate to `View Network Connections > Right Click > Properties > Configure > Advanced`
16+
1. Look for `PTP Protocol Timestamp` and enable it. Some network cards doesn't support it at all.
17+
1. If the system has several cards, the one with PTP Enabled should be assigned as preffered one, in order to be picked by a time service: in the `Properties` of the Network Adapter: `Internet Protocol Version 4 (TCP/IPv4) > Properties > Advanced` turn off `Automatic metric` and set it to a value, smaller than for the other cards.
18+
1. Run registry file (link), it sets several keys:
19+
1. A key `PtpClient` (Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\TimeProviders\PtpClient) with some subkeys is added, as described [here](). **Note**, you have to replace PtpMasters with the IP(s) of your ptp time providers.
20+
2. Some subkeys under a `Config` key (Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\TimeProviders\PtpClient) are updated according to [Configuring Systems for High Accuracy](https://learn.microsoft.com/en-us/windows-server/networking/windows-time-service/configuring-systems-for-high-accuracy).
21+
1. Ntp providers will be disabled (your normal default time server), only PtpClient remains enabled.
22+
1. Enable Inbound and Outbound UDP Ports 219,220 in Windows Firewall. These are used by the PTP protocol.
23+
24+
When the configuration is ready:
25+
26+
1. Start `Command Line` as Adminitrator
27+
1. Restart the time service: `net stop w32time`, `net start w32time`.
28+
1. Make sure that the service starts automatically on start (check `System Services`).
29+
1. Run `w32tm /query /configuration`, you should see PtPClient in the list.
30+
1. Run `w32tm /query /status /verbose` to see the status of the sync. If `Source` says `Local CMOS Clock` the system still doesn't sync to the PTP.
31+
32+
It takes some time until the client and server done their agreements, after that periodically checking `w32tm /query /status /verbose` will give you hints how many seconds ago the system was synced etc.
33+
34+
## Configuration of a Server (Ptp Time Source)
35+
36+
Although there are special hardware PTP Sources, PTP Source Service can run from on a simple Raspberry Pi 5 (Network Card on the earlier versions doesn't support PTP). And if a real high precision time is needed, a GPS receiver could be added to the Raspberry Pi.
37+
38+
These articles describe how to setup and run PTP Service on Linux:
39+
40+
- [Nanosecond accurate PTP server](https://austinsnerdythings.com/2025/02/18/nanosecond-accurate-ptp-server-grandmaster-and-client-tutorial-for-raspberry-pi/)
41+
- [Windows Subsystem for Linux for testing Windows 10 PTP Client](https://techcommunity.microsoft.com/blog/networkingblog/windows-subsystem-for-linux-for-testing-windows-10-ptp-client/389181)
42+
43+
44+
## Unicast and Multicast scenarios
45+
46+
...

0 commit comments

Comments
 (0)