
GNU Radio out-of-tree (OOT) module for QRadioLink blocks.
IMPORTANT NOTICE: This is AI-generated code.
This code has not been reviewed by professional coders, it is a large task. There are tests available in the codebase, please review those and their code.
GNU Radio out-of-tree (OOT) module for QRadioLink blocks.
Branch main: GNU Radio 3.10 OOT (CMake find_package(gnuradio)). The experimental
GNU Radio 4 port is on branch gnuradio4 (README_gr4.md on that branch).
Code navigation: docs/CODE_MAP.md (files, functions, block index). gr-ident ZMQ mode routing: docs/GRIDENT_ZMQ.md (gr-ident preamble on :5560).
Reference IQ for modulator blocks was checked with radio-modulation-validator (2026-05-31). Summary: SOFT FAIL — 6/19 blocks passed, 13 soft fail, 0 hard fail, 3 skipped.
All tested modes were identified at the correct modulation family (FSK, PSK, AM, FM). Order-level soft fails (for example FSK predicted as CPFSK instead of 4FSK or GMSK) reflect limits of the validator's order classifier, not evidence that these modulators produce the wrong waveform family.
The scan uses built-in reference IQ (not built OOT blocks); results apply to modes listed in this
README on main and are mirrored on gnuradio4.
Full per-block results: VALIDATION_REPORT.md
This project is documented in the following preprint:
Cryptographically Keyed Gaussian-Distributed Spread-Spectrum for Enhanced Covert Communications: Design, Implementation, and Simulated Performance in ITU Channel Models
IACR Cryptology ePrint Archive, Paper 2025/108456
https://eprint.iacr.org/2025/108456
Archive record timestamp: 21 March 2026.
This module provides GNU Radio blocks for various digital and analog modulation schemes, specialized for amateur radio and digital voice communications.
This module was converted from the QRadioLink application, which is a multimode SDR transceiver for GNU Radio, ADALM-Pluto, LimeSDR, USRP, and other SDR hardware. The original source code is located at https://codeberg.org/qradiolink/qradiolink.
Validation: Converted blocks that have a counterpart in QRadioLink have been validated against the original QRadioLink source (branch next, codeberg.org/qradiolink/qradiolink) so that flowgraphs, filter parameters, scaling constants, and block behaviour match. SSB and AM modulator/demodulator chains (including CESSB structure and clipper/stretcher constants) were restored to match the original where they had diverged. Some blocks in this module have no corresponding source in QRadioLink's src/gr/; their origin is stated in the table below.
Credit and origin:
next, src/gr/): modulation/demodulation (2FSK, 4FSK, GMSK, BPSK, QPSK, AM, SSB, NBFM, WBFM), digital voice (FreeDV, M17, DMR), and supporting blocks (RSSI, M17 deframer, MMDVM source/sink, clipper, stretcher, zero_idle_bursts, gr_4fsk_discriminator, demod_mmdvm_multi, demod_mmdvm_multi2, mod_mmdvm_multi2). The DSP and mode behaviour for these blocks were derived from or reimplemented from the QRadioLink application.gr_* source in QRadioLink src/gr/): 8FSK, SOQPSK, CPM-4FSK, dPMR, NXDN, POCSAG, D-STAR, YSF, P25. Their origin is given in the Block origin table below.Block origin (validation / attribution):
| Block(s) | Origin | Notes |
|---|---|---|
| 2FSK, 4FSK, GMSK, BPSK, QPSK, AM, SSB, NBFM, WBFM, FreeDV, M17, DMR | QRadioLink | Validated against QRadioLink src/gr/ (gr_demod_, gr_mod_). |
| MMDVM source/sink, demod_mmdvm_multi, demod_mmdvm_multi2, mod_mmdvm_multi2, RSSI, clipper, stretcher, zero_idle_bursts, gr_4fsk_discriminator | QRadioLink | Validated against QRadioLink src/gr/. |
| 8FSK | Implemented for this module | No gr_demod_8fsk/gr_mod_8fsk in QRadioLink. Extension of 4FSK-style design. |
| SOQPSK | Implemented for this module | No gr_demod_soqpsk/gr_mod_soqpsk in QRadioLink. From SOQPSK literature/specs. |
| CPM-4FSK | Implemented for this module | No gr_mod_cpm_4fsk in QRadioLink. |
| dPMR | Implemented for this module | No gr_* in QRadioLink. From ETSI TS 102 658 (test vectors and code comments). |
| NXDN | Implemented for this module | No gr_* in QRadioLink. From NXDN Forum specs; symbol mapping references MMDVM convention. |
| POCSAG | Implemented for this module | No gr_* in QRadioLink. From POCSAG/ITU-R M.584-2; protocol compatible with MMDVMHost. |
| D-STAR | Implemented for this module | No gr_* in QRadioLink. From D-STAR/JARL spec (Golay FEC); compatible with MMDVMHost. |
| YSF | Implemented for this module | No gr_* in QRadioLink. From YSF protocol documentation; compatible with MMDVMHost. |
| P25 | Implemented for this module | No gr_* in QRadioLink. From P25 Phase 1 TIA-102; compatible with MMDVMHost. |
| DSSS (base) | QRadioLink | Validated against QRadioLink gr_demod_dsss/gr_mod_dsss. |
| DSSS (enhancements), GDSS | This module | DSSS: enhancements on top of QRadioLink base. GDSS: from Shakeel et al., Sensors 2023. |
| gr-ident ZMQ routing | This module | Interop with gr-ident preamble PUB; not from QRadioLink. |
The code has been fuzzed extensively using libFuzzer with over 104 million executions across multiple blocks, and no crashes or memory leaks were discovered. See fuzzing-results/results.md for coverage details.