acquiring…
--:--:--.---
----‑--‑-- --:--:-- UTC
A brief history of precise time

For most of history, time was the sky: a shadow creeping across a sundial, the steady swing of a pendulum. And it was stubbornly local: every town kept its own noon by its own meridian, agreeing only with the church clock across the square.

Some clocks even learned to speak: from the 1730s, a Black Forest cuckoo clock called the hour aloud into the parlour, time you heard rather than read.

But a clock is only useful if everyone can share it, and the first public time signals weren't read, they were watched. From 1833, a great red time ball rose up its mast atop the Royal Observatory, Greenwich and, at exactly 13:00, dropped, ship captains on the Thames below timing the fall through telescopes to set their marine chronometers before putting to sea. A single shared instant, fired for a whole city at once. The idea outlived the ships: every New Year, a million people still watch the Times Square ball fall to land precisely at midnight.

But any signal is only as good as the clock behind it. In 1859 the pendulum reached its public summit in the Great Clock of Westminster: a gravity escapement held its swing immune to the wind and snow piling on the great hands, so steady that its hour, tolled as Big Ben and checked twice a day against Greenwich by telegraph, became a sound a whole nation set its clocks by.

Then time learned to travel as sound. In America, WWV has hummed across the shortwave bands since 1920, still transmitting on 2.5, 5, 10, 15 and 20 MHz, while its sister station WWVB whispers a 60 kHz digital time code that the radio-controlled “atomic” clock on your wall receives and decodes to set itself, automatically, every night. WWV hides a gift for musicians, too: once an hour it holds a pure 440 Hz tone, concert-pitch A, a tuning fork broadcast to a whole continent.

That 440 Hz belongs to a whole family of standard tones: WWV alternates 500 and 600 Hz through most minutes because it is, above all, a frequency standard. Every tone is phase-locked to the same caesium clock that defines the second, so its 500 Hz is exactly 500 Hz, and for decades anyone with a receiver could zero-beat an oscillator against it to calibrate equipment against a national atomic reference, free and over the air. Threaded quietly beneath all of it runs a 100 Hz subcarrier sending the date and time as one binary-coded-decimal bit per second: WWV's own machine-readable time code, the data this clock now ticks out under the WWV signal.

In Britain, the Greenwich Time Signal, “the pips,” has marked the minute since 1924: six 1 kHz tones: five short pips of 100 ms on the closing seconds, and, since 1972, a lengthened sixth of 500 ms whose leading edge is the exact top of the minute. You can still hear it on BBC Radio 4 (FM, DAB and online) and the World Service, but its historic 198 kHz long wave from the Droitwich transmitter, on the air since 1934, falls silent on 27 June 2026, switching off the last of Britain's long-wave masts after nearly a century. And if you mean to set a clock by them, use FM: that analogue signal arrives in near-real time, while DAB and online streams lag by several seconds, enough to make the pips decorative rather than precise.

And the clocks themselves kept getting better. Quartz crystals, humming tens of thousands of times a second, shrank the drift to seconds a year, but they were still just very good machines. Then, in 1967, the second stopped being an astronomical accident and became a physical constant: defined as 9,192,631,770 oscillations of a caesium-133 atom. The atomic age had begun: the second was now something you could count, identical everywhere in the universe.

Then we did something audacious: we flew the atomic clocks into orbit. A GPS satellite is a caesium (or rubidium) clock in space, 20,000 km up, broadcasting its own time continuously. A receiver on the ground listens to a handful of them at once and solves, simultaneously, for where it is and what time it is: the translation that makes the clock above tick.

How this clock is tuned & operates

kohltime is a stratum-1 time server: it takes its time straight from a physical reference, the GPS constellation, rather than from another computer over the network or internet. Stratum 0 is the reference itself; this machine sits one hop below it, and everything else on the network inherits the second from here.

The receiver: u-blox ZED-F9T

A high-precision, multi-constellation GNSS timing receiver. An ordinary GPS is tuned to tell you where you are; the “-T” variant is tuned to tell you when it is. It tracks GPS, Galileo, BeiDou and QZSS at once, and its on-board oscillator produces a timepulse aligned to UTC.

RTK grade: what that means

Real-Time Kinematics uses the GPS carrier wave itself (not just the coarse code) plus a correction stream to resolve a position to centimetres, where ordinary GPS manages metres. For a fixed time server that precision pays off sideways: knowing exactly where the antenna is lets the receiver solve purely for when, and even hold accurate time from a single satellite.

The serial path: how time leaves the receiver

The F9T talks to the Raspberry Pi over a UART serial link at 115 200 baud, streaming NMEA sentences. Alongside the data wire it raises a dedicated PPS (pulse-per-second) line into GPIO18, a sharp electrical edge that snaps high exactly on each UTC second. Data on one wire, the heartbeat on another.

GPS → NMEA → PPS: how it operates

This is the translation that makes the clock above tick. The receiver speaks the satellites' atomic time two ways at once:

NMEA  ·  which second it is  ·  ≈ milliseconds
+
PPS  ·  the exact instant of that second  ·  nanoseconds

NMEA is ASCII text over the serial line, human-readable sentences that name the second (“it is now 14:32:07”), but smeared by the latency of being assembled, sent and parsed: good to milliseconds. The PPS carries no information at all (it's a single voltage edge), but it arrives precisely on the second, to nanoseconds. One labels the second; the other pins it.

chrony marries them: it takes the number from NMEA and the instant from PPS, and disciplines this little computer's clock to atomic time overhead. A modest box, inheriting the second from caesium in space, and ringing the same six pips London has rung for a hundred years.

How it was tuned

· The receiver's timepulse quantization error was measured directly (UBX-TIM-TP qErr): ±2.5 ns. The pulse itself is essentially perfect.

· The antenna cable delay was corrected. Signal travels through coax at roughly 1.3 ns per foot; the 5-metre cable adds ≈25 ns. The receiver shipped with a generic 50 ns default; it was set to the true 25 ns, removing a systematic offset.

· The limit was characterised. The Pi's interrupt capture of the PPS edge carries ~580 ns of jitter (that floor is set by the computer, not the receiver), and chrony's statistical filter tames it to ~180 ns RMS in the served clock. The CPU was pinned to a fixed frequency to remove one more latency variable.

Serving the network: NTP for all, PTP for the critical few

kohltime hands that time out two ways. The workhorse is NTP, and even the everyday route is hardware-stamped: chrony reads the network card's own clock to timestamp each exchange in silicon rather than software, so every device on the LAN holds the second to well under a microsecond. For infrastructure that can take it, kohltime goes the extra mile and speaks PTP (IEEE 1588): a hardware-timestamped grandmaster, traceable to the very same GPS/PPS reference, disciplining capable critical machines, the network's DNS servers among them, to within a few hundred nanoseconds. Ordinary clients ride NTP; the equipment that matters most rides PTP.

The web clock: how far off it can be

This page is a window onto that clock, and a browser is a hostile place to keep time: its own clock drifts, and JavaScript timers are throttled and jittery. So the page doesn't trust the browser. On load, and every 30 seconds after, it runs a miniature SNTP exchange against the server's GPS-disciplined clock (/api/now): it takes six round-trip samples, keeps the one with the lowest latency and (assuming the network delay was symmetric) solves for the offset between this browser and true UTC. The big digits then run off the machine's monotonic high-resolution timer plus that offset, repainted every animation frame.

The pips, ticks and voice can't ride JavaScript timers: they'd land late and ragged. Instead every sound is scheduled on the Web Audio hardware sample-clock with output-latency compensation, so a pip's leading edge falls on the UTC second to within one audio buffer, not whenever a timer happened to fire. So how far off can the display be? The limiting factor is network round-trip asymmetry: the assumption that the question and the answer each took the same time to travel. On the LAN that's well under a millisecond; over Wi-Fi or WireGuard, a few. The time shown here is therefore conceivably wrong by perhaps 1 to 5 ms, six orders of magnitude coarser than the server's ~180 ns, but about as close as a web page can honestly get. The instrument is the little box; this is a faithful pane of glass over it.

“You can close your eyes to reality, but you cannot stop the clock from ticking.”Haruki Murakami