
GNU Radio आउट-ऑफ-ट्री (OOT) मॉड्यूल QRadioLink ब्लॉक के लिए।
महत्वपूर्ण सूचना: यह AI-जनित कोड है।
यह कोड पेशेवर कोडर्स द्वारा समीक्षित नहीं किया गया है, यह एक बड़ा कार्य है। कोडबेस में परीक्षण उपलब्ध हैं, कृपया उनकी और उनके कोड की समीक्षा करें।
GNU Radio आउट-ऑफ-ट्री (OOT) मॉड्यूल QRadioLink ब्लॉकों के लिए।
शाखा main: GNU Radio 3.10 OOT (CMake find_package(gnuradio))। प्रयोगात्मक GNU Radio 4 पोर्ट शाखा gnuradio4 पर है (उस शाखा पर README_gr4.md)।
कोड नेविगेशन: docs/CODE_MAP.md (फ़ाइलें, फ़ंक्शन, ब्लॉक इंडेक्स)। gr-ident ZMQ मोड रूटिंग: docs/GRIDENT_ZMQ.md (gr-ident प्रस्तावना :5560 पर)।
मॉड्यूलेटर ब्लॉकों के लिए संदर्भ IQ को radio-modulation-validator (2026-05-31) से जांचा गया। सारांश: SOFT FAIL — 6/19 ब्लॉक पास, 13 सॉफ्ट फेल, 0 हार्ड फेल, 3 छोड़े गए।
सभी परीक्षित मोड्स को सही मॉड्यूलेशन परिवार (FSK, PSK, AM, FM) में पहचाना गया। ऑर्डर-स्तरीय सॉफ्ट फेल (उदाहरण के लिए FSK को 4FSK या GMSK के बजाय CPFSK के रूप में भविष्यवाणी करना) सत्यापनकर्ता के ऑर्डर वर्गीकारक की सीमाओं को दर्शाते हैं, यह प्रमाण नहीं कि ये मॉड्यूलेटर गलत वेवफॉर्म परिवार उत्पन्न करते हैं।
स्कैन अंतर्निहित संदर्भ IQ का उपयोग करता है (OOT ब्लॉक नहीं); परिणाम main पर इस README में सूचीबद्ध मोड्स पर लागू होते हैं और gnuradio4 पर प्रतिबिंबित होते हैं।
पूर्ण प्रति-ब्लॉक परिणाम: VALIDATION_REPORT.md
इस परियोजना को निम्नलिखित प्रीप्रिंट में दस्तावेज़ीकृत किया गया है:
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
संग्रह रिकॉर्ड टाइमस्टैम्प: 21 मार्च 2026।
यह मॉड्यूल विभिन्न डिजिटल और एनालॉग मॉड्यूलेशन योजनाओं के लिए GNU Radio ब्लॉक प्रदान करता है, जो शौकिया रेडियो और डिजिटल वॉइस संचार के लिए विशिष्ट है।
यह मॉड्यूल QRadioLink एप्लिकेशन से रूपांतरित किया गया था, जो GNU Radio, ADALM-Pluto, LimeSDR, USRP, और अन्य SDR हार्डवेयर के लिए एक मल्टीमोड SDR ट्रांसीवर है। मूल स्रोत कोड https://codeberg.org/qradiolink/qradiolink पर स्थित है।
सत्यापन: QRadioLink में समकक्ष होने वाले रूपांतरित ब्लॉकों को मूल QRadioLink स्रोत (शाखा next, codeberg.org/qradiolink/qradiolink) के विरुद्ध सत्यापित किया गया है ताकि फ़्लोग्राफ़, फ़िल्टर पैरामीटर, स्केलिंग स्थिरांक और ब्लॉक व्यवहार मेल खाएँ। SSB और AM मॉड्यूलेटर/डीमॉड्यूलेटर श्रृंखलाएँ (CESSB संरचना और क्लिपर/स्ट्रेचर स्थिरांक सहित) मूल से मेल खाने के लिए बहाल की गईं जहाँ वे विचलित हो गए थे। इस मॉड्यूल के कुछ ब्लॉकों का QRadioLink के src/gr/ में कोई संगत स्रोत नहीं है; उनकी उत्पत्ति नीचे दी गई तालिका में बताई गई है।
क्रेडिट और उत्पत्ति:
next, src/gr/ के विरुद्ध सत्यापित): मॉड्यूलेशन/डीमॉड्यूलेशन (2FSK, 4FSK, GMSK, BPSK, QPSK, AM, SSB, NBFM, WBFM), डिजिटल वॉइस (FreeDV, M17, DMR), और सहायक ब्लॉक (RSSI, M17 डीफ्रेमर, MMDVM स्रोत/सिंक, क्लिपर, स्ट्रेचर, zero_idle_bursts, gr_4fsk_discriminator, demod_mmdvm_multi, demod_mmdvm_multi2, mod_mmdvm_multi2)। इन ब्लॉकों के लिए DSP और मोड व्यवहार QRadioLink एप्लिकेशन से प्राप्त या पुनः कार्यान्वित किए गए थे।src/gr/ में कोई gr_* स्रोत नहीं): 8FSK, SOQPSK, CPM-4FSK, dPMR, NXDN, POCSAG, D-STAR, YSF, P25। उनकी उत्पत्ति नीचे ब्लॉक उत्पत्ति तालिका में दी गई है।ब्लॉक उत्पत्ति (सत्यापन / एट्रिब्यूशन):
कोड को libFuzzer का उपयोग करके बड़े पैमाने पर फ़ज़ किया गया है, जिसमें कई ब्लॉकों में 104 मिलियन से अधिक निष्पादन हुए हैं, और कोई क्रैश या मेमोरी लीक नहीं पाया गया। कवरेज विवरण के लिए fuzzing-results/results.md देखें।
SOQPSK एक बैंडविड्थ-कुशल मॉड्यूलेशन योजना है जो मानक QPSK की तुलना में बेहतर स्पेक्ट्रल दक्षता प्रदान करती है। कार्यान्वयन दो ऑपरेशनल मोड का समर्थन करता है:
मोड 1: VHF/UHF एकल चैनल
मोड 2: VHF/UHF मल्टी-कैरियर (फ़ेडिंग प्रतिरोधी)
उपलब्ध अधिकतम बैंडविड्थ खंड:
SOQPSK दक्षता: ~1.5 bps/Hz
प्रति-कैरियर क्षमता:
कैरियर विनिर्देश:
सभी ब्लॉक पायथन बाइंडिंग्स के माध्यम से उपलब्ध हैं, जिनमें शामिल हैं:
पायथन बाइंडिंग्स GNU Radio Companion फ़्लोग्राफ़ और पायथन स्क्रिप्ट में उपयोग को सक्षम करती हैं।
gr-qradiolink/ ├── CMakeLists.txt # Top-level CMake configuration ├── include/ # Public header files │ └── gnuradio/ │ └── qradiolink/ ├── lib/ # Implementation files ├── python/ # Python bindings │ └── qradiolink/ │ └── bindings/ ├── grc/ # GNU Radio Companion block definitions ├── docs/ # Documentation │ ├── doxygen/ │ ├── CODE_MAP.md # Code and function map (all modules) │ ├── GRIDENT_ZMQ.md # gr-ident ZMQ mode routing guide │ ├── DSSS_BLOCKS.md # DSSS spreader/despreader guide │ ├── GDSS_BLOCKS.md # GDSS spreader/despreader guide │ └── PTT_CONTROL.md # PTT control with gr-osmosdr ├── examples/ # Example flowgraphs ├── tests/ # Unit tests └── cmake/ # CMake modules └── Modules/
## निर्भरताएँ
[DEPENDENCIES.md](https://github.com/supermagnum/gr-qradiolink/blob/main/DEPENDENCIES.md) में आवश्यक और वैकल्पिक निर्भरताओं की पूरी सूची देखें।
**त्वरित सारांश:**
- `git clone --recursive` से क्लोन करें (या क्लोन करने के बाद `git submodule update --init --recursive` चलाएँ)
- GNU Radio >= 3.10 (Codec2 समर्थन के साथ निर्मित vocoder घटक के साथ)
- CMake >= 3.16
- Boost पुस्तकालय
- Volk (Vector-Optimized Library of Kernels)
- ZeroMQ (वैकल्पिक, MMDVM ब्लॉक्स और gr-ident प्रीएम्बल SUB के लिए)
- Python 3.x NumPy के साथ (पायथन बाइंडिंग के लिए)
- fmt पुस्तकालय (परीक्षणों के लिए)
## परीक्षण
मॉड्यूल में सभी ब्लॉकों के लिए व्यापक यूनिट परीक्षण शामिल हैं। परीक्षण CTest और Boost.Test फ्रेमवर्क का उपयोग करके चलाए जाते हैं।
### परीक्षण परिणाम
सभी परीक्षण सफलतापूर्वक पास होते हैं। C++ यूनिट परीक्षणों, पायथन टेस्ट हार्नेस और एज केस परिणामों के लिए [tests/results.md](https://github.com/supermagnum/gr-qradiolink/blob/main/tests/results.md) देखें। फ़ज़िंग और MMDVM प्रोटोकॉल परीक्षण विवरण के लिए [fuzzing-results/results.md](https://github.com/supermagnum/gr-qradiolink/blob/main/fuzzing-results/results.md) देखें।
**C++ यूनिट परीक्षण:**```
100% tests passed
Test Breakdown:
- 12 Manual tests (with int main): test_mod_2fsk, test_mod_4fsk, test_mod_8fsk,
test_mod_am, test_mod_gmsk, test_mod_bpsk, test_mod_mmdvm, test_mod_freedv,
test_gdss_spreader_cc, test_gdss_despreader_cc, test_dsss_cdma_transmitter_cc,
test_dsss_cdma_receiver_cc
- Boost.Test tests: mod_ssb, mod_qpsk, mod_nbfm, mod_wbfm, mod_dsss, all
demodulators, rssi_tag_block (8 tests), interleaver_bb (13 tests with edge cases)
- gr-ident: test_grident_zmq (JSON parse and mode_id to demod mapping)
Test Coverage:
- Modulators: 2FSK, 4FSK, 8FSK, AM, GMSK, BPSK, SSB, QPSK, NBFM, WBFM, DSSS, M17, DMR, dPMR, NXDN
- Demodulators: 2FSK, 4FSK, 8FSK, AM, GMSK, BPSK, SSB, QPSK, NBFM, WBFM, DSSS, M17, DMR, dPMR, NXDN
- FEC: interleaver_bb (HF burst error handling, 13 tests including edge cases)
- Note: SOQPSK and CPM-4FSK blocks are implemented and available but unit tests are planned for future releases
MMDVM प्रोटोकॉल परीक्षण (Python):``` 41 tests passed, 0 tests failed
पूर्ण MMDVM प्रोटोकॉल परीक्षण परिणामों के लिए [fuzzing-results/results.md](https://github.com/supermagnum/gr-qradiolink/blob/main/fuzzing-results/results.md) देखें।
एक **DSSS BER सिमुलेशन** ([examples/dsss_ber_simulation.py](https://github.com/supermagnum/gr-qradiolink/blob/main/examples/dsss_ber_simulation.py)) spreader -> AWGN -> despreader चलाता है और N=64, 128, 256 के लिए BER बनाम SNR को प्लॉट करता है, सैद्धांतिक वक्र 0.5*erfc(sqrt(N*Es/N0/2)) को ओवरले करता है; वक्र सिमुलेशन शोर के भीतर मेल खाते हैं, जो सही DSSS व्यवहार की पुष्टि करते हैं।
### परीक्षण चलाना
परीक्षण सूट बनाने और चलाने के लिए:```bash
cd build
cmake ..
make
ctest --output-on-failure
मॉड्यूल में libFuzzer का उपयोग करके व्यापक फ़ज़िंग कवरेज शामिल है। पूर्ण फ़ज़िंग अभियान परिणामों के लिए fuzzing-results/results.md देखें, जिनमें शामिल हैं:
मॉड्यूल में सभी मॉड्यूलेशन प्रकारों के लिए पायथन-आधारित सत्यापन परीक्षण शामिल हैं। सत्यापन परीक्षण परिणामों के लिए fuzzing-results/results.md देखें। सभी डिजिटल वॉइस मोड (FreeDV, M17, DMR, dPMR, NXDN) में अब पायथन बाइंडिंग और सत्यापन समर्थन है। SOQPSK ब्लॉकों में पायथन बाइंडिंग हैं और उपयोग के लिए उपलब्ध हैं; भविष्य के रिलीज़ के लिए सत्यापन परीक्षणों की योजना है।
mode_id से डीमॉड/मॉड बैंक स्विच करना।सभी ब्लॉकों में grc/ निर्देशिका में GRC (GNU Radio Companion) ब्लॉक परिभाषाएँ हैं। मुख्य ब्लॉक:
डिजिटल मॉड्यूलेशन:
एनालॉग मॉड्यूलेशन:
डिजिटल वॉइस:
MMDVM प्रोटोकॉल:
gr-ident (वैकल्पिक, libzmq):
FEC:
सभी ब्लॉकों की पूरी सूची के लिए, grc/ निर्देशिका देखें।
यह प्रोजेक्ट GNU जनरल पब्लिक लाइसेंस v3.0 या बाद के (GPL-3.0-or-later) के तहत लाइसेंस प्राप्त है।
विवरण के लिए QRadioLink रिपॉजिटरी में LICENSE फ़ाइल देखें।
| ब्लॉक(स) | उत्पत्ति | टिप्पणियाँ |
|---|
| 2FSK, 4FSK, GMSK, BPSK, QPSK, AM, SSB, NBFM, WBFM, FreeDV, M17, DMR | QRadioLink | QRadioLink src/gr/ (gr_demod_, gr_mod_) के विरुद्ध सत्यापित। |
| MMDVM स्रोत/सिंक, demod_mmdvm_multi, demod_mmdvm_multi2, mod_mmdvm_multi2, RSSI, क्लिपर, स्ट्रेचर, zero_idle_bursts, gr_4fsk_discriminator | QRadioLink | QRadioLink src/gr/ के विरुद्ध सत्यापित। |
| 8FSK | इस मॉड्यूल के लिए कार्यान्वित | QRadioLink में कोई gr_demod_8fsk/gr_mod_8fsk नहीं है। 4FSK-शैली डिज़ाइन का विस्तार। |
| SOQPSK | इस मॉड्यूल के लिए कार्यान्वित | QRadioLink में कोई gr_demod_soqpsk/gr_mod_soqpsk नहीं है। SOQPSK साहित्य/विशिष्टताओं से। |
| CPM-4FSK | इस मॉड्यूल के लिए कार्यान्वित | QRadioLink में कोई gr_mod_cpm_4fsk नहीं है। |
| dPMR | इस मॉड्यूल के लिए कार्यान्वित | QRadioLink में कोई gr_* नहीं है। ETSI TS 102 658 (परीक्षण वेक्टर और कोड टिप्पणियाँ) से। |
| NXDN | इस मॉड्यूल के लिए कार्यान्वित | QRadioLink में कोई gr_* नहीं है। NXDN फोरम विशिष्टताओं से; प्रतीक मैपिंग MMDVM सम्मेलन को संदर्भित करती है। |
| POCSAG | इस मॉड्यूल के लिए कार्यान्वित | QRadioLink में कोई gr_* नहीं है। POCSAG/ITU-R M.584-2 से; प्रोटोकॉल MMDVMHost के साथ संगत। |
| D-STAR | इस मॉड्यूल के लिए कार्यान्वित | QRadioLink में कोई gr_* नहीं है। D-STAR/JARL विशिष्टता (Golay FEC) से; MMDVMHost के साथ संगत। |
| YSF | इस मॉड्यूल के लिए कार्यान्वित | QRadioLink में कोई gr_* नहीं है। YSF प्रोटोकॉल दस्तावेज़ीकरण से; MMDVMHost के साथ संगत। |
| P25 | इस मॉड्यूल के लिए कार्यान्वित | QRadioLink में कोई gr_* नहीं है। P25 Phase 1 TIA-102 से; MMDVMHost के साथ संगत। |
| DSSS (बेस) | QRadioLink | QRadioLink gr_demod_dsss/gr_mod_dsss के विरुद्ध सत्यापित। |
| DSSS (संवर्द्धन), GDSS | यह मॉड्यूल | DSSS: QRadioLink बेस के ऊपर संवर्द्धन। GDSS: Shakeel et al., Sensors 2023 से। |
| gr-ident ZMQ रूटिंग | यह मॉड्यूल | gr-ident प्रस्तावना PUB के साथ अंतर-संचालन; QRadioLink से नहीं। |
tcp://127.0.0.1:5560 पर डीकोड किए गए mode_id की सदस्यता लें और मिलान करने वाले डीमॉड/मॉड ब्लॉक परिवार का चयन करें (GRIDENT_ZMQ.md, CODE_MAP.md देखें)
libzmq आवश्यक)route_out पर demod_block / mod_block प्रकाशित करें