Repository navigation
v0.5.0
What's new in v0.5.0
RDS decoder overhaul
Major improvements to the RDS (Radio Data System) decoder for WFM broadcast:
- FIR bandpass filter: 501-tap Kaiser window (β=8) at 55.5–58.5 kHz provides 97 dB rejection of L-R stereo subcarrier — previously a 4th-order IIR with only ~10 dB rejection
- Pilot delay compensation: compensates FIR group delay so the derived 57 kHz carrier stays phase-aligned
- Narrower lowpass: 1.2 kHz cutoff (was 2.4 kHz) reduces noise by ~3 dB
- CRC single-bit error correction: pre-computed syndrome lookup table corrects single-bit block errors
- Gardner TED clock recovery: replaces zero-crossing detector with Gardner timing error detector + PLL for more robust bit timing
- Partial group decode: extracts PS/PTY/RT from partial groups (A+B blocks sufficient), improving decode rate on marginal signals
- PTY confirmation: requires same programme type code seen twice before reporting, filtering CRC false positives
- Improved sync tolerance: survives up to 50 consecutive bad blocks without losing sync (was 10)
- Debug diagnostics: SNR measurement (peak-bin FFT), bimodality, sign-change rate, ones/zeros ratio
Test suite
- 54 unit tests covering CRC-10, block sync, PS/RT/PTY decode, DSP chain integrity, and end-to-end BPSK demodulation
- Hardware benchmark scripts for testing with real RTL-SDR hardware:
python -m tests.rds_scan— scan FM band for pilot/RDS signal strengthpython -m tests.rds_hw_bench --freq 104.3 --time 120— full RDS decode test
Known limitation
RDS decode requires sufficient signal-to-noise ratio (~10+ dB in-band). With small indoor antennas, the RDS subcarrier is typically below the noise floor. An outdoor antenna or LNA is recommended for reliable RDS reception. See #28 for details.
Other changes
- RF settings dialog improvements
- Build workflow and installer updates
- i18n regeneration