Hotspot "can't hear you": step-by-step MMDVM frequency calibration

Category: CalibrationDifficulty: ★★★~8 minutes

A classic situation: the hotspot is online, the radio is half a metre away, and yet there's no link — or reception is choppy and distorted. In 9 cases out of 10 the culprit is frequency drift in a cheap MMDVM modem. Let's look at why this happens and how to cure it by tweaking the frequency offset.

Why the modem "drifts"

The ADF7021 radio chip is clocked by a reference oscillator (TCXO). On budget modems, that reference varies from unit to unit and with temperature. As a result, the modem thinks it's transmitting on 433.000, while the actual carrier is hundreds of Hz to several kHz off. The radio expects an exact frequency, picks up the shifted one, and decodes with errors — the BER (Bit Error Rate) climbs, all the way to a complete loss of link.

Key metricThe goal of calibration is the lowest possible BER. That's the percentage of bit errors on reception. 0% is ideal, a few percent is workable, and tens of percent means the link falls apart.

The fix: RXOffset / TXOffset

The MMDVM firmware has RXOffset and TXOffset corrections (in Hz) — they shift the actual receive and transmit frequencies, compensating for reference drift. The task is to find the offset at which the BER drops to zero.

Method 1. Frequency sweep (by BER)

  1. Run a Parrot/echo (TG 9990) on the hotspot, or just talk into a radio nearby.
  2. Step RXOffset in increments of, say, 100–200 Hz across roughly −1500…+1500 Hz.
  3. At each step, watch the BER (in the modem logs / on the display / in the dashboard).
  4. Find the offset with the lowest BER — that's the receiver's "zero". Tune TXOffset the same way.

That's the BER sweep: you walk through the range of offsets and look for the dip in errors.

Method 2. MMDVMCal (precise measurement)

The MMDVMCal utility (G4KLX) puts the modem into calibration mode and lets you precisely measure and set the frequency against a reference receiver/analyzer. It's more accurate than a sweep, but it requires test equipment and stopping the modem's normal operation.

If calibration doesn't help

A lesson from the fieldIf the hotspot logs are clean (the modem receives the radio, BER is low), but the radio still won't receive the hotspot's transmission — the problem is most likely in the radio itself / its firmware, not in the hotspot calibration. Test with a second radio: if it receives fine, then fiddling with the hotspot's offset is pointless — the issue is the first radio.

Also check the obvious: does the Color Code match, is the time slot correct (TS2 for simplex), is the antenna attached, and is there a strong interferer nearby?

In DMRhub, calibration is one click

So you don't have to tweak the offset by hand, the DMRhub panel has built-in auto-calibration: the agent runs the BER sweep across the offset range itself and sets the best value. You just press "Calibrate" in the hotspot card.

Sources

  1. MMDVMCal (G4KLX) — github.com/g4klx/MMDVMCal
  2. MMDVMHost (RXOffset/TXOffset parameters) — github.com/g4klx/MMDVMHost
  3. Pi-Star hotspot frequency tuning — pistar.uk