GNURadio就是软件定义无线电,在无线电爱好者和学术方面都有很高的人气。与GNURadio配合使用的就是USRP。USRP有很多厂家生产,有虚拟仪器的,有ettus research的,有一个显而易见的共同点就是都很贵,都1万左右,我们学生是玩不起的,还好学校导师在进行这方面的研究,于是我也有资源来学习真实硬件的使用,而不只是在GNURadio软件平台上应用。不是说软件仿真不重要,如果软件仿真都失败了,肯定原理上存在问题,而软件仿真成功也不意味着硬件就行,硬件和软件还是有很大差别的。
那首先需要安装GNURadio,注意只有Linux平台才行。按照 GNURadio的主页 就可以进行安装,但我1年前就走了很多弯路,所以必须写清楚。我这里说的都是从源码编译。
☘ 如果有硬件,必须先安装uhd(USRP Hardware Driver)。参见wiki。
首先解决依赖关系。ubuntu只要运行下面的命令即可,其他linux也相应安装这些包。
1 2 3 4 5 6 7 8 9 | # apt-get install libboost-all-dev libusb-1.0-0-dev python-cheetah doxygen python-docutils 下载相应的源码包,参考build guide。 $ cd <uhd-repo-path>/host //注意啊是host,不是其他的 $ mkdir build $ cd build $ cmake ../ $ make # make install # ldconfig |
uhd安装完成后就可以接下去,安装GNURadio.有时这个lib不再ldconfig的路径,那么就需要把uhd的安装目录加入到ld.so.conf或者ld.so.conf.d,如下(因系统而异):
1 | $ echo "include /usr/local/lib" >> /etc/ld.so.conf |
☘ 安装GNURadio。首先也要解决依赖关系,参考build guide和ubuntu build。ubuntu12.04的话,输入下面命令即可。
1 2 3 4 5 | $ apt-get -y install git-core autoconf automake libtool g++ python-dev swig \ pkg-config libboost1.48-all-dev libfftw3-dev libcppunit-dev libgsl0-dev \ libusb-dev sdcc libsdl1.2-dev python-wxgtk2.8 python-numpy \ python-cheetah python-lxml doxygen python-qt4 python-qwt5-qt4 libxi-dev \ libqt4-opengl-dev libqwt5-qt4-dev libfontconfig1-dev libxrender-dev |
然后下载源码,不要告诉我找不到。解压之后,cd到解压后的目录。
1 2 3 4 5 | $ mkdir build $ cd build $ cmake ../ //这里要看看,哪些是disable的,否则需要的功能没安装就没意思了 $ make && make test # make install |
编译大概20分钟,到这里应该就安装成功了,然后启动试试。
☘ 启动
$ gnuradio-companion
一般会跳出来path什么的,没事只要在.bashrc(shell的配置文件)中加入:
1 2 | export PYTHONPATH=$PYTHONPATH:/usr/lib/python2.7/dist-packages export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/bin |
运行成功后就可以自己摸索了。
这里有几个小问题:
1. 有时跳出 Unable to set the thread priority. 这时就在/etc/security/limits.conf加入@username – rtprio 50,username是你的登录名。
2.有时出现mem warning什么的。那么在 /etc/sysctl.conf 加入:
net.core.rmem_max=50000000
net.core.wmem_max=1048576
3.与USRP2通信是靠以太网的,所以需要配置ip。
address: 192.168.10.1
netmask: 255.255.255.0
gateway: 192.168.0.1
设置方法有很多,最方便的就是在上网那里新建连接,把参数输进去。