KerberosSDR新手入门测试
本文内容、开发板及配件仅限用于学校或科研院所开展科研实验!
温馨提示:“开源SDR实验室”是北京的。
本文介绍Ubuntu下安装KerberosSDR相关软件环境,以及原作者树莓派镜像使用方法。KerberosSDR的使用方法目前有两种建议,一种是在Ubuntu系统上安装相关驱动及应用软件,另一种是用作者制作好的树莓派镜像,通过工具将镜像烧录到SD卡中,开机直接使用。第二种树莓派的方法用起来更直接简单一些。大家可以根据自己实际情况选择用哪种方法。
目录
三、KerberosSDR Ubuntu系统中参数设置及DOA实验操作
(4)勾选“Enable spectrum display”
(3)ULA(uniform linear array)天线排列方法
(4)UCA(uniform circular array)天线排列方法
一、KerberosSDR简介
KerberosSDR是一款4通道的相位相干的RTL-SDR,可用于被动式雷达(无源雷达)、测向等用途。KerberosSDR的4个RTL-SDR公用同一个时钟,在不接收有效信号只接受噪声的情况下,可以快速实现时钟同步。一旦实现了同步,KerberosSDR就可以被用来做很多有意思的事情,例如测向、波束成形、被动式雷达等。
虽然之前也有人将几个RTL-SDR实现了同步并展示了一些类似用途,但是大多都未开放软件源码,而且硬件改造也比较费劲,导致实验过程不太好被多数人复现。因此,KerberosSDR诞生了。
KerberosSDR官方信息,建议先从以下几个链接依次浏览。
(2)https://www.rtl-sdr.com/ksdr/
(3)https://othernet.is/products/kerberossdr-4x-coherent-rtl-sdr
第一批KerberosSDR的USB接口有一个是microUSB,另一个是type C接口,但是后来大多数用户反映没有type C数据线,所以后来从第二批KerberosSDR开始,工厂生产时,就把type C的接口替换成了microUSB接口,因此,现在的KerberosSDR的USB接口是两个microUSB接口的。
有一点需要大家格外注意的是,由于KerberosSDR是包括了4个RTL-SDR,因为给他供电必须要够,否则就会导致其无法正常工作,目前大多数用户无法正常使用它的主要原因就是供电不足。因此,你必须要买输出电流是3A的高质量的microUSB数据线。
KerberosSDR的使用方法目前有两种建议,一种是在Ubuntu系统上安装相关驱动及应用软件,另一种是用作者制作好的树莓派镜像,通过工具将镜像烧录到SD卡中,开机直接使用。第二种树莓派的方法用起来更直接简单一些。大家可以根据自己实际情况选择用哪种方法。
二、KerberosSDR Ubuntu系统环境安装
官方建议Ubuntu18.04,我也是在Ubuntu 18.04上验证的。
1、安装依赖包
- sudo apt update
- sudo apt install python3-pip python3-pyqt4 build-essential gfortran libatlas3-base libatlas-base-dev python3-dev python3-setuptools libffi6 libffi-dev python3-tk pkg-config libfreetype6-dev php-cli wondershaper
2、卸载之前已安装的numpy包
sudo apt remove python3-numpy
3、用pip3安装依赖
需要确保你的网络质量比较好,否则可能会碰到安装失败的情况。如果哪一步安装失败了,就多试试。
- pip3 install numpy
- pip3 install matplotlib
- pip3 install scipy
- pip3 install cairocffi
- pip3 install pyapril
- pip3 install pyargus
- pip3 install pyqtgraph
- pip3 install peakutils
- pip3 install bottle
- pip3 install paste
4、安装RTL-SDR-Kerberos驱动
- sudo apt-get install libusb-1.0-0-dev git cmake
- cd ~【cd到哪里存放代码,自己决定就行】
- git clone https://github.com/rtlsdrblog/rtl-sdr-kerberos
- cd rtl-sdr-kerberos
- mkdir build
- cd build
- cmake ../ -DINSTALL_UDEV_RULES=ON
- make
- sudo make install
- sudo ldconfig
- echo 'blacklist dvb_usb_rtl28xxu' | sudo tee --append /etc/modprobe.d/blacklist-dvb_usb_rtl28xxu.conf
条件允许的话,你就可以重启一下电脑,不方便重启也无所谓。
5、用rtl_test命令来测试
用rtl_test命令依次测试一下KerberosSDR的4个RTL-SDR是否正常工作。
分别打开4个终端,在第一个终端中输入rtl_test -d 0后点击回车,第二个终端输入rtl_test -d 1后点击回车,在第三个终端中输入rtl_test -d 2后点击回车,在第四个终端中输入rtl_test -d 3后点击回车,确保四个终端都没有显示任何错误提示,则说明4个RTL-SDR的供电正常。如果显示error,随便google查一下,网上就是提示说供电不足。
6、安装KerberosSDR软件
- cd ~【cd到哪里存放代码,自己决定就行,只要自己把不同代码区别开存储地方,自己清楚就行】
- git clone https://github.com/rtlsdrblog/kerberossdr
- cd kerberossdr
- sh setup_init.sh
7、运行KerberosSDR程序
在运行完sh setup_init.sh之后,运行以下命令就会打开KerberosSDR程序了。
./run.sh
三、KerberosSDR Ubuntu系统中参数设置及DOA实验操作
KerberosSDR Ubuntu系统中的基本测试使用包括四方面:
1.不接天线情况下,设置接收频率,采样率,增益等参数
2.不接天线情况下,同步和校准KerberosSDR,使4个RTL-SDR同步(sample delay history和Phase diff history都变成0)
3.不用拔USB线,接上天线
4.使用KerberosSDR的DOA来实现测向
1、不接天线情况下,设置接收频率,采样率,增益等参数
(1)点击start processing
点击“Configuration and Spectrum”选项卡,点击“Start processing”按钮,确保“Status”中的”update rate”显示数值,否则如果不显示数值,说明设备可能有供电不足的问题。
(2)设置频率、采样率、增益
在“Receiver configuration”区域,手动输入Center frequency的数值,单位为MHz,采样率单位也是MHz(KerberosSDR作者建议被动式雷达的采样率是2.56MSPS,测向的采样率是1.0MSPS),四个RTL-SDR的接收增益数值必须要在15.7dB之上,才能成功实现KerberosSDR的同步。(虽然被动式雷达应用中只用到了KerberosSDR的两个RTL-SDR,但是你还是需要将四个RTL-SDR的增益都设置成15.7dB之上才行)。设置完频率、采样率和增益只有,点击“Set”按钮。
(3)勾选“DC compensation”
勾选DC compensation可以有助于改善接收效果。
(4)勾选“Enable spectrum display”
勾选“Enable spectrum display”后,你会看到右边四个channel的频谱动态变化起来。为了降低CPU的开销,可以在观察到频谱动态变化之后,取消勾选“Enable spectrum display”。
2、不接天线情况下,同步和校准KerberosSDR
建议在不接天线的情况下来同步和校准KerberosSDR。
如果你打算做测向实验,那么你可以不接天线或者接上KerberosSDR套件自带的4个50欧姆阻抗。虽然接上4个50欧姆的阻抗不是必须要求的,但是接上后会有助于得到更好的校准效果。并且,你需要做“Sample sync”和“Calibrate IQ”两个操作。
如果你打算做被动式雷达(无源雷达)实验,你也可以不用接上50欧姆阻抗来进行校准。你此时只需要做“Sample sync”即可,无需做“Calibrate IQ”也行。
当然了,你如果为了省事,你也可以在给KerberosSDR插上USB之前,把4个天线都安装好,然后校准的过程中也不拔下天线,就直接插着天线进行校准,这样也是可以的。但是,这样操作可能会引起校准误差。因为,假如在你校准过程中,由于你接着天线,正好这时候有一个与你接收频率相同的信号源在你附近发射信号,此时就可能会影响你校准的准确度。因此,在校准之前,建议大家可以先用gqrx、sdrsharp或者手机的RFAnalyzer软件来在你所接收频段接收信号看看是否有明显的信号源。
注意:在校准过程中有一点是非常重要的要遵守的,就是要把“FIR filter”设置成0,“Decimation”设置成1。而且,在校准之前,确保你已经设置好了接收频率、采样率和增益等参数。只要接收频率改变了,那么就需要重新校准。
选中“Sync”选项卡,一开始右边界面中的“ABS X Corr”会有三个波峰,并且“Sample Delay History”和“Phase Diff History”的值也都是非零数值,这表明KerberosSDR是没有实现同步的。依次进行如下操作:
(1)勾选“Enable sync display”,等待大概几十秒或者1-2分钟,你会发现“Sample Delay History”的三种颜色的曲线的取值逐渐统一变成0。
(2)勾选“Noise source ON/OFF”,等待大概几十秒或者1-2分钟,你会发现“Phase Diff History”的三种颜色的曲线的取值逐渐统一变成0。
(3)“Set Resync Time”默认值0就行。
经过上述校准之后,KerberosSDR的采样和相位就实现了同步。注意:当你每次运行这个程序或者每次你修改了接收频率或接收增益等操作之后,你都需要重新进行校准。
校准结束后,可以取消勾选“Enable sync display”和“Noise source ON/OFF”。
3、不用拔USB线,插上天线
我看KerberosSDR原作者视频中,插天线时候也没有断开USB线,它这个是接收,不发射,不用拔USB线供电,直接插上天线就行。插上天线之后,回到电脑端软件的“Configuration and Spectrum”选项卡界面,勾选“Enable spectrum display”,确认你所希望的接收频率信号波峰处于频谱的中间。
按照下图所示,根据你设定的接收信号频率,计算得到波长,天线之间的间隙为0.33倍波长。建议新手采用如图所示的均匀线性天线阵列(Uniform Linear Array),但是这种天线摆放情况下,KerberosSDR无法辨别出信号源是在其前边还是后边。
在“Configuration and Spectrum”选项卡中的“IQ preprocessing”区域,设置Filter BW[khz]、FIR tap size、Decimation参数,以此来降低你在右边4个通道中心频率附近的信号带宽。可以通过这些参数来滤除其他无用信号,使得有用信号显示在频谱的中间。
Filter BW参数的设置与你的信号源带宽有关,例如你的信号源是一个25KHz的信号,那么你就可以将Filter BW设置为25KHz,FIR tap size设置成100,抽取值Decimation设置成4。
注意:抽取值Decimation的取值只能是1、2、4、8。例如,当抽取值为2时,则会将带宽减半,当抽取值为4时,则会将带宽减为1/4。
滤波器的带宽与有限冲激响应滤波器FIR(Finite Impulse Response)的抽头tap数量是相关的。滤波器的带宽BW应该设置成你感兴趣信号的带宽,这主要是为了滤除不必要的干扰信号。例如,对于一个窄带信号,滤波器带宽可能需要设置成仅仅15KHz即可。有限冲激响应滤波器的抽头是用来限定滤波器的滤波功能的,例如抽头越多则可以更有效的滤除无用的信号,但是这将会消耗更多的CPU资源。一般情况下,FIR的抽头数值取100。
增加FIR滤波器的抽头会增加计算时间,因而降低更新速率(Update rate),增加抽取值(Decimation),需要处理的采样点变少,则会降低计算时间,因而会提高更新速率。
注意:如果你需要再次进行同步和校准操作,则需要将软件界面中的FIR tap size(FIR抽头数量)修改为0,Decimation(抽取值)修改为1。
4、使用KerberosSDR的DOA来实现测向
为了节省电脑的计算开销,取消勾选“Enable spectrum display”。选择“DOA Estimation”选项卡。
(1)设置“Antenna configuration”
在“Antenna configuration”这里找到“Arrangement”的下拉菜单中,选择ULA(uniform linear array)或者UCA(uniform circular array)。具体是选择ULA还是UCA看后边介绍。
设置“spacing [lambda]”的数值,具体数值设置依据看后边的介绍。
勾选“DOA estimation”中的“Enable/Disable”,
勾选一种DOA算法,最好的算法是MUSIC算法。
点击“Start processing”按钮之后,你在右边的图形中看到波形,该波形表示当前环境下的无线信号入射角。
(2)spacing [lambda]参数“s”
假设无线信号的波长是lambda,则kerberosSDR连接的四根天线之间相距距离s*lambda,即天线之间的距离为波长乘以“s”参数。spacing [lambda]参数会影响kerberosSDR的测向分辨率,spacing [lambda]参数“s”越大,则测向分辨率越高,但是天线之间的距离也就随之变大。测向分辨率越大,“DOA Estimation”选项卡中右边的图形中,波峰会越尖。经过多次实验,kerberosSDR的原作者发现,spacing [lambda]参数“s”选定为0.33是一个好选择。注意,为了避免测向混淆,spacing [lambda]参数“s”应该小于0.5。
(3)ULA(uniform linear array)天线排列方法
(4)UCA(uniform circular array)天线排列方法
UCA天线排列方法,可以避免ULA无法辨识信号源是在前方还是后方的弊端。根据下图计算,需要输入到软件中的spacing [lambda]参数“s”= 0.33 / (sqrt(2)) = 0.233。
(5)在ubuntu系统浏览器中访问Compass
在ubuntu终端运行完run.sh后,查看kerberosSDR程序运行之后,服务器的IP地址,例如我的是192.168.2.13,那么就在ubuntu的浏览器中输入192.168.2.13:8081,就可以打开Compass界面了。
(6)用Portapack来发射正弦波
用一个Portapack的Utility中的信号发射功能,来在kerberosSDR程序运行的频段,发射正弦波信号(当然了,你也可以用其他发射信号的方式来做一个信号源),观察Compass指针的变化。
四、树莓派镜像安装及DOA Compass使用
下载我的百度云盘链接中的《rpi34_kerberossdr_image_301019.zip》,这是kerberosSDR原作者打包好的树莓派镜像。
下载我的百度云盘连接中的《balenaEtcher_v1.5.83.exe》,这是用来烧写镜像到树莓派SD卡的工具。点击“Flash from file”,选中你下载好的《rpi34_kerberossdr_image_301019.zip》,然后点击“Select target”,选中你要烧写进去的SD卡,然后点击“Flash!”,等待烧写结束就行了。烧写结束后,将SD卡插到树莓派上,我用的是树莓派3B。
kerberosSDR原作者做的这个树莓派镜像,当其上电后,自动会创建一个ID号为“KerberosPi”的wifi,该wifi的密码是“KerberosPi”。
我们用电脑或者手机接入这个wifi,可以在浏览器中输入“192.168.4.1:8080/init”来访问KerberosSDR程序。界面访问到了kerberosSDR程序之后的操作,就跟在ubuntu系统中通过run.sh脚本启动的kerberosSDR程序之后的操作是类似的了。或者你可以直接访问“192.168.4.1:8081”来访问Compass。
五、联系方式
六、有用的链接
(2)https://www.rtl-sdr.com/ksdr/
(3)https://othernet.is/products/kerberossdr-4x-coherent-rtl-sdr
(4)https://www.youtube.com/watch?v=n5aWrz-42qc&feature=emb_logo