LimeSDR学习笔记(1) 硬件上手与驱动安装

刚刚拿到LimeSDR,在自己从零开始慢慢研究的同时,我也决定把我学习的过程和内容记录下来,以备之后参考。

什么是LimeSDR

LimeSDR是一款完全开源的SDR产品,主要的特点有:

  • 双通道全双工收发,有两组TX两组RX,完全独立
  • 频率范围100kHz~3.8GHz
  • 板载256MB DDR2 SDRAM
  • FPGA芯片是Altera Cyclone IV EP4CE40F23,有40k逻辑门资源
  • 61.44MHz带宽,12位采样深度
  • 61.44MSPS采样率(USB3.0接口速度上限,除非选用pcie接口,否则所有的SDR最高速度就是这么高了)
  • 最高10dBm发射功率

总的来说是非常不错的SDR平台,足够我自己研究了。同时社区生态良好,已有大量的针对不同信号的解决方案,例如OpenBTS就是基于LimeSDR核其他SDR的基站方案。

系统和硬件参数

电脑平台

我使用的是Dell G7,系统在固态硬盘上运行。处理器i9-8950HK@2.9GHz,16G内存,USB3.0接口。如果没有特殊说明,全部的实验和测试都将使用这一电脑(因为需要全速的USB3.0接口和尽量好的硬件)。

LimeSDR

LimeSDR使用的是中国经销商出售的1.4s版本,USB type-A公头连接,不确定和官方版本是否完全一致,但是应该几乎没有区别。安装了不带散热的铝壳,如果在后续使用中发现存在过热问题的话我会自己改造一下外壳增加散热。LimeSDR使用带屏蔽的USB3.0延长线连接电脑,因为安装外壳之后直接插会因为太重导致接口损坏。

目前我能够使用的天线是50MHz~6GHz拉杆天线,我自己没有专门设备没法测量,但是根据天线尺寸我猜中心频率差不多在Sub-1G范围内,天线参数嘛……它只是个拉杆天线也不会好到哪去。这一组天线一共6根,用来进行一般的收发和分析。我还配了专门的2G,3G,4G,LTE,GPRS天线,是用来进行专门的通信研究的。等到我熟悉这一套硬件平台并且在合适的时候合适的地方考了业余无线电操作证之后我还会部署一套短波天线,尝试基于SDR的业余无线电收发。

操作系统

一般情况下,全部的实验在Kali 2020.3下完成。之所以选用Kali一方面是因为我的习惯,将全部与安全和渗透有关的东西放在一个系统下完成,能省去重复配置环境的麻烦,因为很多库都是共同的;另一方面,因为我之前需要在Kali上运行HashCat,利用GPU加速,所以Kali也在物理机上安装了。在某些软件与Kali不兼容的时候,也会使用Ubuntu 16.04。之所以选用这么老的发行版,是因为大部分无线电和SDR有关的软件都可以兼容Ubuntu 16.04,而且也自带PPA源,省去了重复编译和各种不兼容的麻烦。我也会介绍在Windows环境下的驱动以及工具安装,但是因为Windows并不适合做这个,所以只讲安装,之后的操作在Linux下完成。

LimeSDR基本注意事项

  1. LimeSDR是USB3.0设备,如果硬要接在USB2.0接口上,传输速率是不够的,可能导致电脑无法与它建立通讯,还有可能供电不足(USB2.0最高输出500mA,USB3.0最高输出900mA)。
  2. LimeSDR进行大功率传输的同时如果自身解码等等功耗也不低的话,可能USB3.0的供电也不足。这时可以选择使用Y型线增加一个专门的供电部分,或者直接给板子上的6~12V直流接口供电。
  3. 发射的时候必须接天线,否则会烧毁发射电路。
  4. 板子上的RF部分比较脆弱,不要用大力去操作,容易碰掉元件。
  5. LimeSDR比较灵敏,最好配合屏蔽外壳使用,以及尽量不要让环境里有太多的干扰,把能够屏蔽的干扰源都屏蔽掉。
  6. LimeSDR的板载时钟是Rakon RPT7050A @30.72MHz晶振,精度在一般应用下足够了,但是在特别的应用,比如用于基站的时候,最好还是带一个GPSDO用来同步时间。

Windows10下的驱动和软件安装

Windows下的LimeSDR驱动比较特别,需要额外安装。在这个GitHub项目中下载驱动,然后将LimeSDR插上电脑,Windows将会把LimeSDR识别为“其他设备”。此时在设备管理器里右键这一项,选择更新驱动,并且选择对应系统版本的刚刚下载的文件夹即可。完成驱动安装之后LimeSDR设备识别将带有Myriadrf前缀,表示驱动正常。

之后再安装LimeSDR的支持软件。在Windows系统下,LimeSuite是包含在PothosSDR这一个环境中的,直接安装整个环境即可。它的GitHub项目在这里,下载得到的是图形安装器,按照提示一步一步进行就可以了。建议勾选添加到环境变量以避免之后出现各种奇怪的问题。在完成安装之后,需要注意的是,新版本的PothosSDR是不包含CubicSDR的,建议手动安装CubicSDR和SDRAngel这两个工具,比较实用。同时这些工具安装的时候并不会检查你电脑里其他的运行环境是否合适,所以最好一并安装Python2.7,Python3等等。

Kali 2020.3下的驱动和软件安装

这里介绍通过Kali自己的软件管理器(apt)安装的方法。在Linux环境下有一种通用的方法就是利用Pybombs,这一方法将在之后介绍。Kali自己的源内是包含一般情况下足够使用的这一系列软件的,运行命令:

sudo apt update
sudo apt upgrade
sudo apt install limesuite liblimesuite-dev limesuite-udev soapysdr-tools soapysdr-module-lm7 libgnuradio-limesdr3.0.1

接下来确定自己安装了GNURadio一整套工具。这一部分工具是包含在Kali的MetaPackage里面的,被分类在无线相关的部分。可以在Kali的官方介绍中找到怎么安装,想省事也可以安装整个MetaPackage。安装之后执行

sudo apt install gr-limesdr

需要注意的是现在在GNURadio-Companion中使用LimeSDR的时候最好使用这个新装的模块,旧的方法是使用OsmoSDR模块并且将参数设置成driver=lime,这种方法最好不再使用,一方面这个包编译维护起来比较麻烦,另一方面LimeSDR有了官方支持,不再需要这样迂回的办法了。下面再安装CubicSDR:

sudo apt install cubicsdr

使用这个而不是Gqrx的原因是Gqrx对LimeSDR的支持并不好,特别是直接从官方源里安装的编译好的版本。SDRangel在Linux下编译安装比较麻烦,有需要的话可以参考官方文档。在此不详细说明。

Ubuntu 16.04下的驱动和软件安装

Ubuntu自己的源内并不包含LimeSuite等工具,但是对于Ubuntu 16.04~18.10,MyriadRF提供了PPA源来直接安装。下面的命令来自MyriadRF:

sudo add-apt-repository -y ppa:myriadrf/drivers
sudo apt-get update
sudo apt-get install limesuite liblimesuite-dev limesuite-udev limesuite-images
sudo apt-get install soapysdr-tools soapysdr-module-lms7

#soapysdr-tools use to be called just soapysdr on older packages
sudo apt-get install soapysdr soapysdr-module-lms7

相对还是比较方便的。之后缺少的工具自行在对应的官网上搜索安装方法即可。

使用PyBombs安装完整的环境

在其他的Linux发行版上,或者你对预编译的版本不满意的时候,可以使用PyBombs来部署整个GNURadio环境,连带安装LimeSuite。PyBombs是一个基于Python的工具,由GNURadio官方推出,用来编译各种GNURadio,它的插件,以及其他一整套生态环境。使用的方法如下:

sudo apt install git #如果没有git需要预先安装
sudo apt install python3
sudo apt install python3-pip #同样地,Python和pip也要装好
sudo pip3 install --upgrade git+https://github.com/gnuradio/pybombs.git

这样就完成了安装PyBombs。之后运行Pybombs:

pybombs auto-config
pybombs recipes add-defaults

这里解释一下,不想看解释的可以直接继续下面的命令。PyBombs有一种设定叫recipe,基本相当于一个索引文件,告诉PyBombs对应的这个模块/工具是什么,怎么安装,从哪获取源码,有什么依赖,编译顺序应该是什么等等。如果你自己写的模块希望加入PyBombs,按照官方的指南是要添加这个文件的。如果你要安装不属于官方的recipe里面的东西,也需要你自己添加一个,否则PyBombs不知道怎么安装。继续执行:

pybombs prefix init ~/{base_folder} -R {your_recipe}

后面的参数可以不加。此时PyBombs配置完成。之后安装的所有工具,可以通过

source ~/{base_folder}/setup_env.sh

修改系统的环境变量来直接运行,如果不想修改系统环境,或者是已经有了一个从别的地方安装的版本,希望共存,那么可以使用:

pybombs run + <your-program-name>

来指定启动通过PyBombs安装的版本。之后运行

pybombs install gnuradio
pybombs install gqrx
pybombs install limesuite
pybombs install gr-limesdr

等等,来安装你希望安装的任何东西。PyBombs会自己解决依赖问题,并且会从源码编译安装,是最保险的办法。