Linrad Notes
Unofficial notes on the internal DSP of Linrad, the software-defined-radio receiver by Leif Åsbrink, SM5BSZ, written from a reading of the source code. They cover the noise blankers, the two-channel adaptive-polarization (diversity) reception, and the FFT-based filter chain.
Linrad itself (source, binaries, and Leif's documentation) is at sm5bsz.com and on SourceForge; this fork, with SDRplay RSP (API 3.x) support, is the fventuri/linrad repository these notes accompany. The code is © Leif Åsbrink, MIT-licensed.

Each page pairs a description and a block diagram with a collapsible "In the source" panel pointing at the functions and lines it refers to.
Contents#
- Signal-chain overview — the path from antenna to loudspeaker
- Architecture: threads and buffers — how the pipeline is wired
- First FFT and the strong/weak channel split — the split that feeds the noise blanker
- Noise blankers — the clever (pulse-fitting) and stupid (threshold) blankers
- Diversity and adaptive polarization — combining two RF channels for optimum signal-to-noise
- Mixers, filters, baseband and output — tuning, the baseband filter, AGC, demodulation and resampling
- AFC — cross-mode automatic frequency control that centres the signal
- Coherent CW and Morse decoding — coherent carrier extraction and Morse-to-ASCII
- Coherent output modes (Coh1–Coh4) — synchronous and binaural listening modes
- Spur removal — cancelling stable carriers from the spectrum
- FM and wideband-FM — FM detection, stereo composite and RDS
- Calibration — hardware filter correction and I/Q balance
- The network interface (and MAP65) — multicasting pipeline stages between machines and to decoders
- Wide graph and waterfall — the main display and how tuning drives the receiver
- Oscilloscope displays — the three time-domain scopes
- The transmit path — the six-FFT SSB speech processor and CW keying
- Source file map — which source file does what
- Links and references
Summary#
Linrad is a fully oversampled, FFT-based receiver. The raw A/D stream is transformed by the first FFT into a wideband spectrum (the main waterfall). That spectrum is split by frequency bin into strong signals and weak signals + noise, and both parts are back-transformed to a time function in which impulse noise is exposed, where the noise blanker operates. A second FFT provides fine resolution for AFC and spur removal; a first mixer tunes the wanted signal to zero frequency and decimates it; a third FFT plus second mixer apply the baseband filter and produce the complex baseband, which is then demodulated, AGC'd, resampled and sent to the D/A. With two RF channels the whole chain carries both and combines them adaptively for optimum signal-to-noise (adaptive polarization); the same computation is used to characterize and cancel interference pulses.