GNU无线电世界(GNU Radio World)是一个在浏览器中运行的类 GNU无线电伴侣(GNU Radio Companion)流图编辑器与运行时。其 GNU无线电 DSP 栈(GNU Radio DSP stack)和 Qt 图形界面接收器(Qt GUI sinks)被编译为 WebAssembly,故可构建软件定义无线电流图,点击运行观看实时频谱、瀑布图与星座图,无需 Python、安装及服务器。它读写与原生 GNU无线电(GNU Radio)相同的 .grc 文件,附带示例流图与 IQ 记录,并通过 WebUSB 连接 RTL软件定义无线电(RTL-SDR)、Pluto软件定义无线电(PlutoSDR)或 HackRF 设备(HackRF)。
正文
一个 GNU Radio Companion 风格的流程图编辑器和运行时,完全在浏览器标签页中运行。GNU Radio 的 DSP 栈和 Qt GUI 接收端被编译为 WebAssembly,因此你可以构建软件定义无线电流程图,按下运行,观看实时频谱、瀑布图和星座图——无需 Python、安装或服务器。它读写与原生 GNU Radio 相同的 .grc 文件,附带示例流程图和示例 IQ 录制,并通过 WebUSB 连接 RTL-SDR、PlutoSDR 或 HackRF。
块库面板提供以下分类及大量模块:
支持的 SDR:
- HackRF Sink、HackRF Source
- PlutoSDR Sink、PlutoSDR Source
- RTL-SDR Source
- Signal Hound BB60
核心:
- 音频:Alaw Audio Decoder、Audio Sink、Audio Source、CVSD 编解码器、FreeDV 调制解调器、GSM 编解码器等
- 布尔运算:And、Not、Or、Xor 等
- 字节运算:Pack K Bits、Repack Bits、Unpack K Bits 等
- 信道模型:Channel Model、Fading Model、Frequency Selective Fading Model 等
- 信道化器:Frequency Xlating FIR Filter、Polyphase Channelizer 等
- 编码:Additive Scrambler、Scrambler 等
- 控制端口:CtrlPort Monitor 等
- 调试工具:Tags Strobe、Vector Sink 等
- 废弃块:Clock Recovery MM、PSK Demod 等
- 数字电视:ATSC(含交织、RS 编码、维特比等)、DVB-S2、DVB-T、DVB-T2、ITU-T J.83B 等子分类与对应块
- 均衡器:Adaptive Algorithm、Decision Feedback Equalizer 等
- 差错编码:各类 Decoders/Encoders、BER、FEC Async 等
- 文件操作:File Sink、File Source、SigMF Sink/Source、Wav File 等
- 滤波器:Band Pass Filter、Low Pass Filter、FFT Filter、Root Raised Cosine Filter 等
- 傅里叶分析:FFT、Goertzel、Log Power FFT
- GUI 部件(QT):QT GUI Check Box、QT GUI Constellation Sink、QT GUI Time Sink 等
- 损伤模型:IQ Imbalance Generator、Phase Noise Generator 等
- 工业 IO:FMComms Sink/Source、PlutoSDR Sink/Source、IIO Device 等
- 测量工具:Probe Rate、MPSK SNR Estimator 等
- 消息工具:Message Debug、Message Strobe 等
- 杂项:Copy、Delay、Throttle、Variable 等
- 调制器:AM Demod、FM Demod、GFSK Mod、GMSK Mod 等
- 网络工具:TCP Sink、UDP Source、Socket PDU 等
- OFDM:OFDM Carrier Allocator、OFDM Receiver、OFDM Transmitter 等
- 包操作:Async CRC32、HDLC Framer、Header/Payload Demux 等
- PDU 工具:PDU Filter、PDU To Stream、Tagged Stream to PDU 等
- 峰值检测:Burst Tagger、Peak Detector 等
- 重采样器:Fractional Resampler、Polyphase Arbitrary Resampler 等
- Soapy:Soapy BladeRF Sink/Source、Soapy HackRF Sink/Source、Soapy RTLSDR Source 等
- 流操作:Deinterleave、Interleave、Repeat、Stream Mux 等
- 流标签工具:Tag Debug、Tag Gate、Tagged File Sink 等
- 符号编码:Binary Slicer、Chunks to Symbols、Differential Encoder 等
- 同步器:Costas Loop、FLL Band-Edge、Polyphase Clock Sync 等
- 网格编码:PCCC Encoder、SCCC Decoder、Viterbi 等
- 类型转换:Char To Float、Complex To Mag、Float To Complex 等
- UHD/RFNoC:RFNoC FFT Block、RFNoC Radio、RFNoC Switchboard 等
- 变量:Variable、Parameter、YAML Config 等
- 视频:Video SDL Sink
- 波形发生器:Noise Source、Signal Source、VCO 等
- ZeroMQ 接口:ZMQ PUB Sink、ZMQ SUB Source、ZMQ REQ Sink 等
- GNU Radio World 扩展:ADS-B Map、Spectrum Analyzer、Python Block、HRPT Image Sink 等
- 第三方模块:gr-adsb、gr-bbc、gr-droneid、gr-dvbs2、gr-dvbs2rx、gr-foo、gr-fosphor、gr-gsm、gr-ham、gr-hrpt、gr-ieee80211、gr-ieee802154、gr-lorasdr、gr-paint、gr-radar、gr-rds、gr-satellites 等,各自包含特定协议与硬件支持块。
编辑器 QT GUI 区域当前显示“无流程图运行”。提示运行流程图以在此打开其 QT GUI。提供运行按钮,可于 GNU Radio World 中打开。
控制台显示编辑器就绪,点击运行以在 WebAssembly 中执行流程图。已从链接加载示例“PSK Tx with Constellation”,打开 19 个块。
你想如何使用 Graham?
Graham 是 GNU Radio 助手(GNU Radio Assistant for Hams And Mortals)。提供三种方式:使用免费共享选项(全站共享额度,可能受限);自带 OpenAI API key(浏览器直连 OpenAI,按账户计费);通过 GNU Radio World 登录并购买预付费额度。当前状态为免费使用 OpenAI 免费层 gpt-5.6-luna,基于共享密钥按访问者限速,连接自有 key 可解除限制。
评论
社区对浏览器内运行 GNU Radio 的尝试普遍感到新奇并踊跃试用,但少数人批评其页面说明混乱、未能清晰传达工具用途;同时有老用户感慨传统工具的上手难度。
赞赏浏览器内 GNU Radio 的便捷性
- 较多人称赞项目有趣并在代码平台加星关注,有用户实测可用,认为通过 WebUSB 连接 RTL-SDR 等硬件无需安装软件是一大优点(较多人)
- > 做了个小测试,它确实能用,小屏幕上操作稍费劲但不影响使用(@tamimio)
认为项目界面和说明缺乏引导、令人困惑
- 少数人指出页面描述文字难以阅读、帮助菜单无实质内容,若作为项目介绍并不成功,初次访问者容易误以为只是生成视觉效果的玩具,难以理解其处理真实信号的目的(少数人)
- > 如果这打算作为项目介绍,那它并没有真正成功,描述文字甚至都读不清(@ghostly_s)
认为传统 GNU Radio 对初学者过于晦涩
- 个别人回忆早年因缺乏信号处理背景,觉得原生工具链像黑盒一样无法上手,虽看好他人成果但自己难入门,正考虑借浏览器版再次尝试(少数人)
- > 我完全没有信号处理背景,觉得它晦涩到根本没法用(@jcims)
有价值的补充
- 有开发者已借助 WebUSB 和 WASM 在浏览器中实现 RTL-SDR 与 USRP B200 的直连,无需本地安装即可运行宽带扫描、AX.25 解码及 FM 收听。
- 社区存在将可视化流图编辑能力移植到浏览器的探索,有开发者正基于 RustRadio 项目推进免编码搭建流图,以进一步降低使用门槛。