news 2026/4/27 12:02:29

从零搭建SDR开发环境:手把手教你用USRP和GNU Radio在Ubuntu 20.04上跑通第一个信号

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从零搭建SDR开发环境:手把手教你用USRP和GNU Radio在Ubuntu 20.04上跑通第一个信号

从零搭建SDR开发环境:Ubuntu 20.04下的USRP与GNU Radio实战指南

当你第一次将USRP设备连接到电脑时,那个闪烁的指示灯仿佛在向你眨眼——这是一个全新世界的入口。软件定义无线电(SDR)技术正在彻底改变我们与无线信号交互的方式,而Ubuntu 20.04上的UHD驱动和GNU Radio组合,则是打开这扇大门的金钥匙。本文将带你完成从驱动安装到第一个信号流图的全过程,让你在90分钟内获得"Hello World"级别的SDR成就感。

1. 环境准备:构建SDR开发基石

在Ubuntu 20.04上搭建SDR开发环境就像组装一台精密仪器——每个零件都必须严丝合缝。我们选择LTS版本不仅因为其长期支持特性,更因其软件仓库的稳定性能够完美匹配UHD和GNU Radio的版本需求。

首先打开终端,执行全面的系统更新:

sudo apt update && sudo apt upgrade -y

接下来是依赖项的安装,这些就像SDR大厦的地基。特别提醒:以下命令中的libboost-all-devlibfftw3-dev是GNU Radio信号处理的核心支柱,而libusb-1.0-0-dev则是USRP硬件通信的关键:

sudo apt install -y autoconf automake build-essential cmake git libboost-all-dev \ libfftw3-dev libgmp-dev libsdl1.2-dev libqwt-qt5-dev libqt5opengl5-dev \ libusb-1.0-0-dev libzmq3-dev python3-pyqt5 python3-numpy python3-mako \ python3-sphinx python3-lxml swig g++ libgsl-dev liblog4cpp5-dev

提示:如果遇到依赖冲突,可以尝试sudo apt --fix-broken install自动修复。阿里云镜像源通常能提供更快的下载速度,可通过sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list切换。

2. UHD驱动安装与硬件验证

UHD(USRP Hardware Driver)是Ettus Research开发的开源驱动套件,支持全系列USRP设备。我们选择从源码编译安装以获得最佳兼容性:

mkdir -p ~/sdr_src && cd ~/sdr_src git clone https://github.com/EttusResearch/uhd.git cd uhd && git checkout v3.15.0.0

编译过程就像在精心打磨一块瑞士手表——需要耐心和精确:

cd host && mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release .. make -j$(nproc) sudo make install sudo ldconfig

安装完成后,需要下载FPGA镜像——这是USRP设备的"大脑固件":

sudo uhd_images_downloader

现在插入USRP设备(如B210),通过以下命令验证是否识别成功:

uhd_find_devices

成功输出应类似:

[INFO] [UHD] linux; GNU C++ version 9.3.0; Boost_107100; UHD_3.15.0.0-0ubuntu1~focal -------------------------------------------------- -- UHD Device 0 -------------------------------------------------- Device Address: serial: 31FD9D5 name: B210 product: B210 type: b200

如果遇到权限问题,执行以下命令添加udev规则:

sudo cp /usr/local/lib/uhd/utils/uhd-usrp.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules sudo udevadm trigger

3. GNU Radio编译安装与配置

GNU Radio是SDR领域的瑞士军刀,我们选择3.8稳定版进行安装。首先获取源码:

cd ~/sdr_src git clone https://github.com/gnuradio/gnuradio.git cd gnuradio git checkout maint-3.8

VOLK是GNU Radio的优化内核,需要单独编译:

git clone https://github.com/gnuradio/volk.git cd volk && git checkout v2.2.1 && cd ..

编译安装过程可能需要30-60分钟,视机器性能而定:

mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 .. make -j$(nproc) sudo make install sudo ldconfig

配置环境变量确保各组件能正确联动:

echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:$PYTHONPATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc

验证安装是否成功:

gnuradio-companion --version

应返回类似:GNU Radio Companion 3.8.0

4. 第一个SDR项目:FM信号收发实战

现在让我们创建一个完整的FM收发系统。打开GNU Radio Companion:

gnuradio-companion

新建流程图(File → New),按照以下步骤构建:

  1. 信号源:从左侧模块库拖拽"Signal Source"到工作区

    • 参数设置:采样率=32k,频率=1k,波形=Sine
  2. 频率调制:添加"Frequency Mod"模块

    • 灵敏度参数设置为5.0
  3. USRP发送:添加"UHD: USRP Sink"

    • 设备地址保持默认(auto)
    • 中心频率设为100MHz(需确保这是合法频段)
    • 增益设为20dB
  4. USRP接收:添加"UHD: USRP Source"

    • 相同设备地址和中心频率
    • 增益设为30dB
  5. 解调部分:添加"Quadrature Demod"模块

    • 增益参数设为1.0
  6. 可视化:添加"QT GUI Time Sink"和"QT GUI Frequency Sink"

  7. 连接:按照信号流顺序连接各模块

最终流程图应类似:

[Signal Source] → [Frequency Mod] → [USRP Sink] [USRP Source] → [Quadrature Demod] → [Time Sink] ↘ [Frequency Sink]

点击右上角"Execute"运行流程图。如果一切正常,你应该能在时域图中看到原始正弦波,在频谱上看到清晰的峰线。尝试用另一台收音机调频到100MHz,应该能听到1kHz的测试音。

注意:实际发射前请确认当地无线电管理规定,建议在屏蔽室或使用衰减器进行实验。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 11:59:57

实战指南:高效部署Vosk离线语音识别API的完整解决方案

实战指南:高效部署Vosk离线语音识别API的完整解决方案 【免费下载链接】vosk-api Offline speech recognition API for Android, iOS, Raspberry Pi and servers with Python, Java, C# and Node 项目地址: https://gitcode.com/GitHub_Trending/vo/vosk-api …

作者头像 李华
网站建设 2026/4/27 11:55:39

如何永久保存你的数字记忆:WeChatMsg微信聊天记录导出终极指南

如何永久保存你的数字记忆:WeChatMsg微信聊天记录导出终极指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/…

作者头像 李华
网站建设 2026/4/27 11:52:45

当名侦探长大成人:《金田一37岁事件簿》如何解构经典IP与中年危机

当名侦探长大成人:《金田一37岁事件簿》如何解构经典IP与中年危机 在推理漫画的黄金时代,《金田一少年事件簿》与《名侦探柯南》共同定义了"天才少年侦探"的叙事范式。当柯南永远停留在小学一年级时,金田一一却罕见地迈向了37岁的中…

作者头像 李华