GNU Radio DSP와 Qt GUI를 WebAssembly로 컴파일해 브라우저에서 SDR 플로우그래프 실행
- GNU Radio World는 GNU Radio DSP 스택과 Qt GUI 싱크를 WebAssembly로 컴파일해, 브라우저 탭 안에서 플로우그래프를 편집하고 실행하며 스펙트럼·워터폴·성상도 그래프를 실시간 표시함
- 네이티브 GNU Radio와 같은 .grc 파일을 읽고 쓰며, 예제 플로우그래프와 IQ 녹음 파일을 함께 제공함
- WebUSB로 RTL-SDR, PlutoSDR, HackRF를 연결하며 HackRF·PlutoSDR의 송수신 블록과 RTL-SDR 수신 블록을 지원함
- 웹 앱은 사용자가 배치한 블록의 WebAssembly 모듈만 필요 시 내려받는 구조라 초기 다운로드를 줄이고 외부 모듈 확장을 염두에 둠
Hacker News opinions
2012년쯤 RTL-SDR가 막 뜰 때 GNU 라디오를 만져봤는데, DSP나 신호처리 배경이 없어서 너무 불투명하고 쓸 수가 없었음. 잘하는 사람들은 대단한 걸 만들더라. 이번엔 다시 해볼까 싶음.
나도 SDR을 조금 만졌고 업무로도 해봤는데, GNU 라디오는 너무 GUI 같아서 프로그래밍 욕구를 못 채우고 너무 저수준이라 탐색용으로도 애매했음. pyrtlsdr 같은 라이브러리나 sdrangel 같은 데스크톱 앱 사이에서 쓸 자리를 못 찾겠더라.
SDR을 처음 접하지만 기술 배경은 있는 사람이라면 pysdr부터 보는 게 좋았음. 복잡도가 올라가는 방식과 추상화 수준이 적당하더라.
최근 GNU 라디오로 긴 DSP 파이프라인 프로젝트를 했는데, 블록을 익히는 데 LLM이 정말 도움이 됐음. 다만 복잡해지면 디버깅하고 문제 원인을 찾는 작업은 여전히 많이 해야 함.
새 GNU 라디오 교재가 나왔으니 입문에는 도움이 될 듯함. 공식 사이트에 2025년 1월 공개 소식이 있음.
DSP는 결국 수학과 하드웨어가 많이 필요한 분야임. GNU 라디오는 온갖 DSP 기법과 인터페이스를 한데 넣어 복잡하지만, RF 통신처럼 목표가 분명하면 소프트웨어에서 모듈식으로 조합해 꽤 쓸 만한 결과를 낼 수 있음. 5G급 성능은 기대하기 어렵고.
나도 USRP B200을 WebUSB로 붙이는 광대역 RF 스캐너를 WASM으로 브라우저에서 돌리려 블로그 글을 준비 중임. RTL-SDR용 AX.25 디코더와 FM 수신기도 WebUSB로 이미 만들었고, RustRadio용으로 코드 없이 플로우그래프를 만드는 GNU Radio Companion 비슷한 도구도 생각만 해둔 상태임.
WASM이 커지면 브라우저와 웹 기술이 리눅스 데스크톱 UI 도구가 될 수도 있다고 봄. 다만 브라우저 안에서 브라우저를 돌리는 꼴은 이상하고, 성능 때문에 리눅스를 쓰는 사람에게는 GTK나 Qt를 웹으로 바꾸는 게 맞지 않을 수도 있음.
직접 짧게 시험해봤는데 작동했음. 작은 화면에서는 조작이 조금 불편하지만 큰 문제는 아니었음.
처음 보는 사람 입장에서는 노이즈와 톱니파를 섞어 예쁜 시각화만 하는 것처럼 보여서 입문용 설명으로는 부족했음. 설명 글도 읽기 어렵고 Help 메뉴도 실질적인 안내가 거의 없더라. 실제 라디오 신호를 처리하는 도구라는 점을 더 분명히 알려줬으면 함.
MaxMSP가 떠오르고 신호처리 수업 때 생각도 남. GUI 조작감도 괜찮아서 더 만져볼 생각임.