Buildings and terrain reflect the broadcast, so the antenna hears the same symbol several
times, delayed and faded — multipath. The equalizer is a
256-tap adaptive filter that models those echoes and subtracts them.
It trains on the field-sync sequence, whose symbols are known exactly (mapped to ±5).
Every field it computes its output, measures the error against that known target, and nudges each
tap down the gradient — textbook LMS. Between fields it keeps adapting blindly,
slicing to the nearest legal level and trusting its own decisions.
The free gift: the training error it already computes is a
measurement of signal quality. No extra hardware — the equalizer hands you a live meter.
Two refinements sit on top, both opt-in and both settled by measurement rather than preference. The filter can warm-start from a per-antenna, per-channel snapshot of taps it learned last time, instead of re-deriving the room from scratch on every tune. And a widely-linear variant filters the signal and its complex conjugate, which buys real margin exactly at the cliff edge — but measurably loses under clean thermal noise, so it is selected per channel and never made the default.
// filter output
y = Σ tapk·xk
// error vs known ±5 field sync
e = y − d
// gradient step μ = 5·10⁻⁵
tap ← tap − μ·e·x
// between fields: normalised LMS
μeff = DD_MU / (ε + ‖x‖²)
A diverging tap vector (‖taps‖ > 50 — the guard tests total tap energy, not any single tap) trips a bail-out: a last-known-good snapshot restores lock, or the filter falls back to a pass-through delta if no LKG has been banked yet.