使用USRP1、gnuradio、gnuais解码AIS数据失败求助
USRP1+GNURadio+gnuais解码AIS失败的排查建议
问题概述
使用USRP1(搭配Basic Rx子板)、GNURadio及gnuais解码AIS数据,无有效数据包输出,仅显示通道电平,正确接收数据包数为0。
设备配置
- USRP1搭配Basic Rx子板
- 基于双频道AIS接收GNURadio模型修改的程序:
- 适配USRP1的
RXA, A:A配置 - 滤波器调整为
firdes.low_pass(1.0, samp_rate, 15e3, 20e3,window.WIN_HAMMING,6.76)
- 适配USRP1的
- ShipXplorer外置AIS天线
已知情况
- 当前位置2公里范围内存在带AIS的船舶
- 频谱显示中心频率±23KHz附近有信号,FIR滤波器已滤除远端频段干扰
- 无丢包情况;本振理论偏差约4.05KHz,但频谱显示信号已居中
故障排查思路
1. 信号链路硬件验证
- 检查天线与USRP1的连接:确认接头接触良好,无松动、氧化;可更换已知正常的AIS天线对比测试
- 调整USRP1接收增益:AIS信号电平较弱,建议从低到高逐步调整增益(避免信号过饱和),测试不同增益下的解码效果
- 验证Basic Rx子板工作状态:通过UHD工具(如
uhd_usrp_probe)确认子板被正确识别,参数配置正常
2. GNURadio流处理验证
- 确认采样率匹配:AIS信号建议采样率为250kHz或1MHz,检查程序中
samp_rate参数是否正确,滤波器参数是否与采样率适配(当前滤波器通带15kHz、过渡带20kHz,需满足奈奎斯特准则) - 加入信号可视化模块:在GNURadio流中插入Waterfall Sink或Scope Sink,观察滤波后的信号是否存在GMSK调制特征的波形;也可将数据导出为文件,用Inspectrum等工具查看信号细节
- 验证aisfifo输出格式:确保GNURadio输出到aisfifo的是单通道原始IQ数据,采样位数与gnuais要求一致
3. gnuais解码功能验证
- 检查启动参数:确认gnuais使用的采样率参数(
-s)与GNURadio输出完全匹配,通道数配置正确 - 测试模拟信号:用GNURadio生成标准AIS测试信号,输出到aisfifo后用gnuais解码,验证gnuais本身是否能正常工作
4. 频率与时钟同步验证
- 微调中心频率:尽管频谱显示信号居中,仍可在AIS标称频率(161.975MHz/162.025MHz)附近±5kHz范围内逐步调整,排查微小频率偏差导致的解码失败
- 校准本振时钟:USRP1内部时钟可能存在偏差,可使用
uhd_cal_tx_iq_balance等工具校准,或尝试外接稳定时钟源(如GPSDO)
5. 软件版本兼容性检查
- 确认UHD驱动版本:USRP1为老旧设备,需使用支持该型号的UHD版本(建议v3.10.x及以下)
- 验证GNURadio与gnuais版本匹配:确保gnuais适配当前GNURadio的数据格式,避免因版本差异导致数据解析错误
内容的提问来源于stack exchange,提问作者f.gallardo
相关产品推荐
相关产品推荐

