SDRPlusPlus 实操笔记:开源 SDR 接收软件从安装到三个接收实验
【免费下载链接】SDRPlusPlusCross-Platform SDR Software项目地址: https://gitcode.com/GitHub_Trending/sd/SDRPlusPlus
SDRPlusPlus(原名 SDR++)是一款运行在 Windows、Linux、macOS 和 BSD 上的开源 SDR 接收软件,面向手里有 SDR 硬件、想在普通电脑上完成频谱观测与信号解调的用户。它的功能面比较收敛,算力主要花在信号链路上:实时 FFT 频谱、全刷新瀑布图、多 VFO 解调、录音与网络串流,DSP 层用 SIMD 指令集加速。适合业余无线电爱好者、电子方向的学习者,以及需要做频谱排查的工程师。
边界说明:它擅长什么,不擅长什么
先划定范围,避免对工具产生错误预期。
- 擅长:宽频带实时观测、多 VFO 同时监控多个频率、常规制式解调(NFM/AM/USB/LSB/WFM/DSB/CW/RAW 等)、录音、通过
rtl_tcp_source/spyserver_source拉取远程设备数据流。 - 不适合:它本质是接收机软件,不提供发射链路;部分数字协议(ADS-B 报文解析、DAB、寻呼机等)没有开箱即用的完整解码链,仓库中对应的解码模块多处于 Unfinished 状态,需要外接工具或自行完成;对发射功能有需求时应使用其他软件,并注意当地法规。
各操作系统的安装方式对照
所有发行版都提供预编译包,只有少数发行版需要自行编译。
| 操作系统 | 安装方式 | 说明 |
|---|---|---|
| Windows | 解压发行包直接运行 | 右键sdrpp.exe选择"发送到桌面(创建快捷方式)"即可 |
| Debian / Ubuntu 系 | apt 安装 deb 包 | 不要用包管理器里的sdrpp包,官方声明它与各模块不兼容;硬件驱动需按厂商指南另外安装 |
| Arch 系 | 源码编译 | AUR 的sdrpp-git已不是官方渠道,不建议使用 |
| macOS | 下载 app bundle | 拖入 Applications 后启动 |
| BSD | 源码编译 | 与 Linux 相同的 CMake 流程 |
Debian/Ubuntu 上安装命令如下:
sudo apt install path/to/the/sdrpp_debian_amd64.deb安装后首次启动会生成config.json,其中记录了模块实例列表、资源目录、主题等;默认中心频率为 100 MHz,后续所有设置都写回这个文件。
从选源到出声音:一次完整的接收流程
以 RTL-SDR + FM 广播为例,整条主线分四步。
- 选信号源。在左侧 Source 菜单选择设备模块实例(如
rtl_sdr_source),刷新设备列表后选中目标设备。参数参考:采样率: 2.4 MSPS(贴近硬件上限,兼顾频谱宽度与 CPU 占用);LNA 增益: 20–30 dB(先用 AGC 自动,出现削顶再手动下调)。 - 设频率。顶部频率框直接输入中心频率,支持数字(Hz)与人类可读两种写法,例如
100 MHz与100000000等效。改动的频率会实时写入配置文件。 - 看频谱。窗口上半部是 FFT 幅度谱,下半部是瀑布图,右侧竖条是缩放与最大值/最小值调节。拖动频谱上的 VFO 标记或点击瀑布图,即可把选中的信号对齐到某个 VFO 上。
- 选解调并出声音。左侧 Radio 区域为每个 VFO 独立选择解调模式(NFM/AM/USB/LSB/WFM/DSB/CW/RAW),再在 Sinks 区域确认音频输出设备(
audio_sink),声音从扬声器出来。
下图是官方对界面各部分的标注,左侧是源与解调设置,中间是 FFT 频谱加瀑布图,VFO 即解调光标位置:
按预算和场景选设备
| 预算 | 场景 | 推荐设备 |
|---|---|---|
| 百元内 | FM/短波观测、入门 | RTL-SDR(rtl_sdr_source,采样率 2.4 MSPS,拉杆天线覆盖 VHF/UHF) |
| 数百元 | 更好的动态范围与灵敏度、便携 | Airspy / Airspy HF |
| 数百元 | 10 MHz–6 GHz 宽带、收发实验(发射注意法规) | HackRF |
| 中端 | 便携宽带接收 | PlutoSDR、BladeRF |
| 高预算 | 高动态范围、专业应用 | SDRplay、USRP、Perseus |
| 无本地硬件 | 串流远程 PC 上的接收机 | rtl_tcp_source/spyserver_source/sdrpp_server_source |
每种设备对应 source_modules/ 下独立的信号源模块,模块名、依赖库与是否默认启用都列在 readme.md 的 Module List 表格中。
三个由浅入深的信号实验
📻 实验一:本地 FM 广播解调
目标:解调本地调频电台,验证整条链路(源 → 频谱 → 解调 → 音频)。
关键参数:频率: 87.5–108 MHz 内任一台电台;采样率: 2.4 MSPS;解调: NFM(立体声电台)或 WFM;Squelch: 默认 -100 dB 即关闭。
观察到的现象:FFT 谱上出现若干窄峰,瀑布图中对应位置是连续竖带;VFO 对准某个峰后扬声器出声音。radio模块内置 RDS 解调(见 decoder_modules/radio/src/rds.cpp),部分电台可同步显示数据。
🛩️ 实验二:1090 MHz 航空 ADS-B 观测
目标:接收 ADS-B 脉冲信号并保存原始数据,报文解析交给外部工具。
关键参数:频率: 1090 MHz;采样率: 2 MSPS 以上(满足 1 Mbps PPM 信号采样要求);解调: RAW 监听脉冲形态;天线: 1090 MHz 方向性天线可显著提升信噪比。
观察到的现象:瀑布图上出现成组、有间隔的脉冲串,不同间隔对应不同飞机。SDRPlusPlus 本身不做 ADS-B 报文解码,建议用 misc_modules/iq_exporter/ 保存 IQ 数据,再用 dump1090 等工具离线解析出飞机位置信息。
🛰️ 实验三:气象卫星过境记录
目标:在 NOAA 卫星过境时记录 137 MHz 频段的基带信号。
关键参数:频率: 跟随卫星下行频率(NOAA 卫星位于 137 MHz 附近各子频点);采样率: 1–2 MSPS;解调: NFM;用 misc_modules/recorder/ 录制 Baseband 而非 Audio,保留完整信息。
观察到的现象:过境前后约十几秒内,瀑布图中信号带因多普勒效应向低频滑动,呈斜线轨迹;信号随卫星高度角变化而增强再减弱。仓库自带 decoder_modules/weather_sat_decoder/(NOAA HRPT 解码器,readme 中标注为 Unfinished),meteor_demodulator模块则为 Working 状态,可用于后续离线处理参考。
进阶:模块化扩展
- 自定义频段规划:band plan 是 JSON 文件,每个频段含
name/type/start/end字段,格式可参考 root/res/bandplans/ 下的内置文件(已覆盖 20 多个国家/地区),放到 bandplans 目录后由 core/src/gui/menus/bandplan.cpp 加载显示。 - 模块开发:每个模块由 CMake 子工程、
SDRPP_MOD_INFO注册块、实例管理和 DSP 链组成,模板见 sdrpp_module.cmake,入门可参考 decoder_modules/radio/ 的目录结构;DSP 组件(FIR 滤波器、AGC、PLL、多速率重采样等)都在 core/src/dsp/。 - 自动化与外部控制:misc_modules/scanner/ 做频段扫描,misc_modules/scheduler/ 支持定时执行调频与录音动作,misc_modules/rigctl_server/ 以 rigctld 兼容协议对外暴露频率控制接口,可接入外部脚本。
排障速查
| 现象 | 常见原因 | 处理办法 |
|---|---|---|
| 频谱平坦、无信号 | 驱动未装、信号源模块未启用、天线接触不良 | 按厂商指南装驱动,在模块管理器启用对应源模块,重插天线与 USB |
| 列表里缺少某个模块 | 模块为新增版本且配置中未启用其实例 | 在config.json的 modules 段补充路径,或删除config.json让其重建(会丢失界面类设置) |
| 启动报 "hash collision" | 多个 SoapySDR 插件冲突 | 卸载 soapy 模块合集包,只保留实际需要的 soapy 模块 |
| 停止 RTL-SDR 时崩溃 | libusb 1.4 引入的 bug | 将 libusb 降级到 1.3 |
| 启动 HackRF 时崩溃 | libhackrf 与 soapy_source 同时启用 | 在模块管理器中禁用soapy_source后重启 |
| 瀑布图卡顿、刷新慢 | 采样率过高、CPU 余量不足 | 下调采样率,减少后台进程,换轻量配色方案 |
| 录音/配置写不进去 | 目录无写权限、磁盘空间不足 | 检查目标目录权限与剩余空间 |
资源索引
- readme.md:功能清单、各平台安装、完整模块列表与官方排障记录
- core/src/dsp/:DSP 库源码(解调器、滤波器、环路、多速率处理)
- source_modules/:全部信号源模块
- decoder_modules/:解码器模块(radio、气象、流星余迹等)
- root/res/bandplans/:内置频段规划文件
- 社区渠道:官方 Discord 服务器、Reddit 的 r/sdrpp 版块;问题反馈走仓库 issue 跟踪
SDRPlusPlus 是一个用 USB 小棒加普通电脑就能跑起来的模块化接收平台,上面三个实验覆盖了从音频解调到基带记录的基本功。
下一步建议:
- 先用 RTL-SDR 完成 FM 实验,把四步流程练熟,再碰 137 MHz 和 1090 MHz。
- 用 recorder 保存一段 1090 MHz 基带,接外部解码器验证整条数据链。
- 查一次当地 NOAA 卫星过境时间表,尝试完整记录一次过境信号。
【免费下载链接】SDRPlusPlusCross-Platform SDR Software项目地址: https://gitcode.com/GitHub_Trending/sd/SDRPlusPlus
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考