
GNU Radio out-of-tree (OOT) 모듈: QRadioLink 블록용
중요 공지: 이 코드는 AI가 생성했습니다.
이 코드는 전문 코더가 검토하지 않았으며, 큰 작업입니다. 코드베이스에 테스트가 제공되어 있으니, 해당 테스트와 코드를 검토하시기 바랍니다.
GNU Radio out-of-tree (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 (:5560 포트의 gr-ident 프리앰블).
변조기 블록에 대한 참조 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
아카이브 기록 타임스탬프: 2026년 3월 21일.
이 모듈은 아마추어 무선 및 디지털 음성 통신에 특화된 다양한 디지털 및 아날로그 변조 방식을 위한 GNU Radio 블록을 제공합니다.
이 모듈은 GNU Radio, ADALM-Pluto, LimeSDR, USRP 및 기타 SDR 하드웨어를 위한 멀티모드 SDR 송수신기인 QRadioLink 애플리케이션에서 변환되었습니다. 원본 소스 코드는 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. 해당 블록의 출처는 아래 블록 출처 표에 명시되어 있습니다.블록 출처 (검증 / 귀속):
| Block(s) | Origin | Notes |
|---|---|---|
| 2FSK, 4FSK, GMSK, BPSK, QPSK, AM, SSB, NBFM, WBFM, FreeDV, M17, DMR | QRadioLink | 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 | 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 (base) | QRadioLink | QRadioLink gr_demod_dsss/gr_mod_dsss에 대해 검증됨. |
| DSSS (enhancements), GDSS | 이 모듈 | DSSS: QRadioLink 기본 위에 향상 기능 추가. GDSS: Shakeel 등, Sensors 2023에서 가져옴. |
| gr-ident ZMQ routing | 이 모듈 | gr-ident 프리앰블 PUB와의 상호운용; QRadioLink에서 가져오지 않음. |
코드는 libFuzzer를 사용하여 여러 블록에 걸쳐 1억 400만 회 이상의 실행으로 광범위하게 퍼징되었으며, 충돌이나 메모리 누수가 발견되지 않았습니다. 적용 범위 세부 정보는 fuzzing-results/results.md를 참조하세요.