PTP Timing Calculator for Broadcast

IEEE 1588 message intervals, SMPTE ST 2059-2 profile parameters and Synchronization Metadata, TAI/UTC conversion and ST 2059-1 frame alignment. Everything runs in your browser.

1 · Message interval converter

PTP intervals are expressed as the base-2 logarithm of seconds. logSyncInterval = −3 means 2−3 = 0.125 s, i.e. 8 messages per second.

Bandwidth is an estimate for PTP over UDP/IPv4 on Ethernet: Sync and Follow_Up 44-byte payload, Announce 64-byte, Delay_Req 44-byte, Delay_Resp 54-byte, each plus 42 bytes of UDP/IP/Ethernet header and 20 bytes of preamble and inter-frame gap. Two-step operation assumed. Use it to size a link, not to certify one.

2 · Profile parameters

Select a profile to see its permitted ranges and defaults, and to check the values you entered above.

3 · PTP time, TAI and UTC

PTP counts seconds since the PTP epoch, 1 January 1970 00:00:00 TAI. TAI does not have leap seconds, so it is ahead of UTC by a whole number of seconds — currently 37.

37 s has been the value since 1 January 2017. The USNO has announced that no leap second will be introduced at the end of December 2026, so 37 remains valid. Always take the live value from the currentUtcOffset field of the Announce message rather than hard-coding it.

4 · Frame alignment to the PTP epoch ST 2059-1

SMPTE ST 2059-1 aligns video frame boundaries to the PTP epoch. Frame 0 starts at the epoch, and every frame boundary after that is an exact multiple of the frame period. Exact integer arithmetic is used below, so there is no rounding drift.

Press Now in section 3 to fill the PTP seconds field with the current instant, then read where the next frame boundary falls.

5 · SMPTE Synchronization Metadata (SM TLV)

The fields a ST 2059-2 grandmaster puts in the Announce message. currentLocalOffset is the one that is most often wrong, because it is measured from PTP time (TAI), not from UTC.

Field names and types follow SMPTE ST 2059-2:2021 Table 2. timeOfNextJump, timeOfNextJam and timeOfPreviousJam are 48-bit unsigned PTP seconds. currentLocalOffset, jumpSeconds and previousJamLocalOffset are signed 32-bit.

Built by Elettronica Mangione, Rome — broadcast synchronisation since 1984. Values verified against SMPTE ST 2059-2:2021 and USNO leap second bulletins. This tool computes; it does not certify. Always confirm against the published standard for your installation.

What PTP is, in one paragraph

Precision Time Protocol (PTP, IEEE 1588) is how devices on a network agree on what time it is, to well under a microsecond. One device — the grandmaster — holds the reference, usually taken from GPS, and every other device measures how long its messages take to arrive so it can correct for the delay. In a broadcast plant this is what keeps cameras, audio, timecode and studio clocks on the same instant. This page does the arithmetic that configuring it requires.

Why PTP configuration goes wrong

PTP is not difficult to understand, but it is easy to misconfigure, and the mistakes are quiet: the network locks, every device reports a grandmaster, and the timing is wrong anyway. Four things account for most of it.

Message intervals, in plain numbers

Every PTP interval is written as the base-2 logarithm of a number of seconds. The interval in seconds is 2 raised to that value, and the message rate is its reciprocal:

Faster is not automatically better. Sync messages are multicast and cost the same regardless of how many devices listen, but Delay_Req is sent by every slave and its Delay_Resp comes back individually. Two hundred devices at eight requests per second is 3,200 message pairs per second arriving at one grandmaster. The calculator above estimates that load so you can size it before you deploy it.

The SMPTE ST 2059-2 profile

ST 2059-2 is the broadcast profile of IEEE 1588. It narrows the permitted ranges and adds the metadata that video needs. From the 2021 edition: domain 0 to 127 with a default of 127; logAnnounceInterval from −3 to +1 with a default of 0; logSyncInterval from −7 to −1 with a default of −3, which is eight Sync messages per second; announceReceiptTimeout from 2 to 10 with a default of 3; priority1 and priority2 from 0 to 255, both defaulting to 128. logMinDelayReqInterval initialises to the value of logSyncInterval and may be up to five steps slower.

The domain number deserves a note. The default of 127 is deliberate: it keeps a media network from colliding with a general-purpose PTP domain, which conventionally uses 0. If your grandmaster is on 127 and a device is looking at 0, they will never meet, and the device will report no grandmaster rather than a wrong one.

TAI, UTC and the 37 seconds

PTP counts from the PTP epoch — 1 January 1970 00:00:00 TAI — and TAI has no leap seconds. UTC does, which is why the two have drifted apart by 37 seconds since the last leap second at the end of 2016. The currentUtcOffset field in the Announce message carries that number, and a receiver that ignores it will be 37 seconds fast.

The value to publish in currentLocalOffset is not your time zone. It is your time zone minus the UTC offset: local time equals PTP time plus currentLocalOffset. For Rome in summer that is 7200 − 37 = 7163 seconds. Publishing 7200 leaves every clock in the building 37 seconds fast, and it is exactly the kind of error that survives a commissioning test because everything is consistently wrong.

Frame alignment to the PTP epoch

SMPTE ST 2059-1 defines where video frames sit in time: frame 0 begins at the PTP epoch, and every boundary after that is an exact multiple of the frame period. For integer rates the pattern repeats every second. For 29.97 fps — that is 30000/1001 — it repeats every 1001 seconds, which is why two devices can agree on the time and still disagree on which frame it is if one of them rounds.

The calculator uses exact integer arithmetic for this, not floating point, so the frame index it gives you is the frame index your hardware should agree on.

The Synchronization Metadata TLV

ST 2059-2 attaches a metadata block to the Announce message carrying the things video needs and plain PTP does not: the system frame rate as a rational number, the grandmaster locking status, the local time offset, the timing of the next daylight saving change or leap second, and the times of the previous and next Daily Jam. The calculator produces all eleven fields from the plant details you enter, including the two that are most often wrong — currentLocalOffset and timeOfNextJam.

Where the hardware comes in

A calculator tells you what the numbers should be. Something still has to produce them, hold them when the GNSS antenna loses sky, and keep producing them at three in the morning. Our PTPMaster is a GNSS-disciplined PTP IEEE 1588 grandmaster with hardware timestamping, an integrated web dashboard, and support for the SMPTE ST 2059-2 and AES67 profiles — built in Rome, where we have been making broadcast timing equipment since 1984.

Frequently asked questions

What is PTP, and how is it different from NTP?

Both keep clocks in step over a network, but they are built for different jobs. NTP timestamps its packets in software and copes with the internet, which is why it runs everywhere and why it usually lands within a millisecond or so on a good local network. PTP timestamps in hardware, inside the network card and inside switches that understand it, and removes the queueing delay those switches introduce. That is what takes it below a microsecond, and often to tens of nanoseconds.

The practical difference in a broadcast plant: NTP is enough for wall clocks, logging and general IT. PTP is what SMPTE ST 2110 video and AES67 audio require, because essence has to be sample-aligned and a millisecond is far too coarse. Two more differences that catch people out — PTP counts in TAI while NTP counts in UTC, so the two are 37 seconds apart; and a PTP grandmaster sends eight Sync messages per second under the SMPTE profile, where an NTP client might poll once a minute.

What does logSyncInterval = −3 mean?

The value is the base-2 logarithm of the interval in seconds. 2−3 is 0.125 seconds, so the grandmaster sends eight Sync messages per second. It is the default for the SMPTE ST 2059-2 profile.

Why is PTP time 37 seconds ahead of UTC?

PTP counts in TAI, which has no leap seconds. UTC has had 37 leap seconds added since TAI and UTC were aligned, the most recent at the end of 2016. The Announce message carries the current difference in the currentUtcOffset field. No leap second is scheduled for the end of 2026.

What should currentLocalOffset be set to?

Your local UTC offset minus the TAI−UTC offset, because local time equals PTP time plus currentLocalOffset. In Rome in summer that is 7200 − 37 = 7163 seconds. Setting it to 7200 makes every clock 37 seconds fast.

Which PTP domain should a broadcast plant use?

SMPTE ST 2059-2 defaults to domain 127, which keeps media traffic separate from general-purpose PTP domains that conventionally use 0. Any value from 0 to 127 is permitted, but every device in the plant must use the same one.

What is the difference between ST 2059-1 and ST 2059-2?

ST 2059-1 defines how video and audio signals are aligned to the PTP epoch. ST 2059-2 defines the PTP profile itself — the permitted parameter ranges and the Synchronization Metadata carried in the Announce message.

Why does 29.97 fps alignment repeat every 1001 seconds?

Because 29.97 fps is exactly 30000/1001 frames per second. Exactly 30,000 frames fit into 1001 seconds, so the relationship between frame boundaries and second boundaries only returns to its starting point after 1001 seconds.

Can I use the IEEE 1588 default profile for video?

Not in practice. Its one Sync message per second is designed for industrial networks. Video timing needs the eight per second of the SMPTE profile, and the metadata that the default profile does not carry at all.

Is this PTP calculator free?

Yes, with no registration. Everything is computed in your browser and nothing you enter is sent anywhere.