Also known as: PPM correction, PPM
PPM frequency correction compensates for the small error in an SDR’s reference oscillator, measured in parts per million, so signals land on their true frequency.1 The unit is proportional: one PPM is one millionth of the tuned frequency, so the same crystal error grows in absolute terms with frequency. At UHF a 30 PPM error is several kilohertz — more than a channel’s width — while the same 30 PPM at the HF broadcast band is only a few hundred hertz.
How it works
Every SDR derives its tuning from a reference crystal that is never exactly on its nominal frequency. Setting a PPM value scales the local oscillator by the same proportion, so a signal known to be on a particular frequency actually appears there rather than a few kHz away. In practice you find the number by tuning a station whose frequency is known precisely — a broadcast pilot, a GSM control channel, a trunking control channel — and adjusting PPM until the signal sits dead centre.
Because the correction is a single multiplicative factor, it fixes a static error across the whole band at once: dial in the right PPM and every channel lands correctly. What it cannot fix is change over time, which is the job of downstream tracking.
In practice
- Warm-up drift. A crystal’s frequency shifts as it heats from cold start to operating temperature, so PPM measured on a cold radio will be wrong once it stabilises. Let the dongle warm up ten to thirty minutes before calibrating.
- Temperature sensitivity. Plain crystals drift with ambient temperature; a TCXO-equipped SDR holds its frequency far more tightly (often within 1 PPM), reducing how often calibration matters — this is a question of the reference’s frequency stability.
- PPM is not AFC. PPM correction sets a one-time offset; where the error keeps moving, automatic frequency control tracks and cancels the residual continuously. The two work together: PPM removes the bulk static error, AFC and the demodulator’s Costas loop mop up the rest.
- Residual phase noise. Even a perfectly centred oscillator has short-term phase noise; PPM addresses the mean frequency, not this jitter.
Relevance to SDR
A wrong PPM produces the classic rotating constellation that won’t lock — the whole symbol pattern spinning because the carrier sits at a constant offset from where the receiver expects it. It is fixed by calibration, not by a better antenna or more gain, and it is one of the first things to check when a strong, clean-looking digital signal still fails to decode. GopherTrunk applies a configured PPM offset to its tuning and relies on per-channel frequency tracking to follow any remaining drift.
Sources
-
Clock drift — Wikipedia, on oscillator frequency error and drift measured in parts per million. ↩