目录
- 软件版本
- 一、win10安装ubuntu22.04双系统
- 二、安装依赖
- 三、安装UHD
- 三、安装VOLK
- 四、安装GNU Radio
- 五、安装gr-foo
- 六、安装gr-ieee802-11
- 检查安装
- 报错
- 总结
软件版本
Ubuntu:22.04
UHD:4.1.0.0
VOLK:2.5.1
GNU Radio:3.10.7.0
注意:
1.安装版本参考官网,安装过程中容易出现版本不匹配的问题。安装gr-foo要求GNU Radio版本在3.9及以上。
2.必须按照UHD、VOLK和GNU Radio的顺序安装,卸载时先卸载GNU Radio再卸载UHD。我用apt方式快速安装UHD和GNU Radio出现无法卸载UHD的问题,最终选择根据官网步骤一步步操作。
3.默认情况GNU Radio安装在/usr/local目录中,可以参考-DCMAKE_INSTALL_PREFIX 修改安装路径。
4.Ubuntu18.04最高貌似只能安装GNU Radio3.8.
官网链接安装指路
GNU Radio Install
gr-ieee802-11
一、win10安装ubuntu22.04双系统
参考 经典Ubuntu20.04版本U盘安装双系统教程
这篇帖子已经写得很详细,这里不做赘述。
二、安装依赖
支持Python3的GNU Radio 3.8x需要安装依赖
sudo apt install git cmake g++ libboost-all-dev libgmp-dev swig python3-numpy \
python3-mako python3-sphinx python3-lxml doxygen libfftw3-dev \
libsdl1.2-dev libgsl-dev libqwt-qt5-dev libqt5opengl5-dev python3-pyqt5 \
liblog4cpp5-dev libzmq3-dev python3-yaml python3-click python3-click-plugins \
python3-zmq python3-scipy python3-gi python3-gi-cairo gir1.2-gtk-3.0 \
libcodec2-dev libgsm1-dev libusb-1.0-0 libusb-1.0-0-dev libudev-dev
GNU Radio 3.9x版本除以上依赖还需要添加:
sudo apt install pybind11-dev python3-matplotlib libsndfile1-dev \
python3-pip libsoapysdr-dev soapysdr-tools
pip install pygccxml
pip install pyqtgraph
GNU Radio 3.10x版本除以上依赖还需要添加:
sudo apt install libiio-dev libad9361-dev libspdlog-dev python3-packaging python3-jsonschema
除此之外,还需要安装
sudo apt install python3-pip
pip install packaging
sudo apt install gcc
sudo apt install g++
三、安装UHD
想将GNU Radio与USRP结合使用需要安装UHD。
- 首先在主目录下新建文件夹 workarea 用于存放一系列文件,并将代码克隆到该目录中。
cd /home
mkdir workarea
cd workarea
git clone https://github.com/EttusResearch/uhd.git
cd /home/workarea/uhd
- 构建v4.1.0.0分支,并在host目录下build。
git checkout v4.1.0.0
cd host
mkdir build
cd build
- 安装UHD
cmake -DCMAKE_INSTALL_PREFIX=/usr/local ../
make -j3 #-j3用于加速编译,这里表示在构建中使用3个线程。未指定则用单个线程构建。
make test
sudo make install
sudo ldconfig
- 定义并修改环境变量:
gedit ~/.bashrc
# 在文件末尾输入
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
关闭当前终端,使更改生效。
5. UHD安装完成,不连接USRP设备的情况下执行:
uhd_find_devices
# 将得到如下结果
[INFO] [UHD] linux; GNU C++ version 12.2.0; Boost_107400; UHD_4.1.0.HEAD-0-g5fac246b
No UHD Devices Found
- 安装UHD FPGA映像
sudo uhd_images_downloader
- 连接USRP至主机,设置有线连接,选择 身份>>MTU,设置为1500,选择 IPv4,设置为手动,将地址改为192.168.10.1,子网掩码改为255.255.255.0,应用设置。打开一个中端,ping 192.168.10.2发现网络可达。在另一终端执行:
uhd_usrp_probe
发现连接成功,可看到usrp相关信息。
三、安装VOLK
执行
cd /home/workarea
git clone --recursive https://github.com/gnuradio/volk.git
cd volk
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../
# 可以-DCMAKE_INSTALL_PREFIX=XXX在 PREFIX 中添加安装 Volk XXX;如果未指定,则 PREFIX 为/usr/local
make
make test
sudo make install
sudo ldconfig
VOLK安装成功。
四、安装GNU Radio
执行
cd /home/workarea
git clone https://github.com/gnuradio/gnuradio.git
cd gnuradio
# 构建maint-3.10分支
git checkout maint-3.10
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../
# 可以-DCMAKE_INSTALL_PREFIX=XXX在 PREFIX 中添加安装 GNU Radio XXX;如果未指定,则 PREFIX 为/usr/local
make -j3
make test
sudo make install
sudo ldconfig
volk_profile
安装成功,如果出现“无法导入gnuradio”的错误,参考设置PYTHONPATH和LD_LIBRARY_PATH 设置环境变量后再次执行 sudo ldconfig。
五、安装gr-foo
cd /home/workarea
git clone https://github.com/bastibl/gr-foo.git
cd gr-foo
mkdir build
cd build
# 一定要将gnuradio切换到3.10分支
git checkout maint-3.10
cmake ..
make
sudo make install
sudo ldconfig
六、安装gr-ieee802-11
cd /home/workarea
git clone git://github.com/bastibl/gr-ieee802-11.git
cd gr-ieee802-11
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig
调整最大共享内存
sudo sysctl -w kernel.shmmax=2147483648
检查安装
测试流程图wifi_loopback.grc。
注:这里似乎需要将grc文件放在根目录才能正常运行,可能是我的安装路径问题。
使用GNU Radio的两中方式:
- 终端执行
gnuradio-companion /root/wifi_loopback.grc
- GUI界面,打开GNU Radio,open对应文件即可。
报错
- 在安装gr-foo和gr-ieee802-11时报错没有GrSwig或者Python::,都是因为GNU Radio没有切换到3.10分支。
总结
安装前确定好版本是否匹配,避免后期多次卸载重装。
根据官网安装是最靠谱的方法。