在树莓派3B+上部署SpyServer
最近考取无线电执照后购买了RTL-SDR和Airspy R2两款软件定义无线电设备。
收听的时候发现在电脑旁有一些干扰,所以打算在树莓派上部署SpyServer服务,这样就可以在任何位置架设了。
以下步骤理论上适用于所有使用deb包管理的系统
安装驱动
首先更新一下包列表
sudo apt-get update
AirSpy R2
下载并编译Airspy的库:首先,从Airspy的GitHub仓库下载库的源代码,并编译它。在终端中,输入以下命令:
git clone https://github.com/airspy/airspyone_host.git
cd airspyone_host
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install
sudo ldconfig
测试Airspy:在安装了Airspy的库和驱动后,可以使用airspy_info
命令来测试Airspy R2是否能被正确识别。在终端中,输入以下命令:
airspy_info
显示:
airspy_lib_version: 1.0.9
Found AirSpy board 1
Board ID Number: 0 (AIRSPY)
Firmware Version: AirSpy NOS v1.0.0-rc10-6-g4008185 2020-05-08
Part ID Number: 0x6906002B 0x00000030
Serial Number: 0x744C60C8212B414F
Supported sample rates:
10.000000 MSPS
2.500000 MSPS
Close board 1
RTL-SDR
和AirSpy R2类似
下载并编译RTL-SDR的库:首先,从osmocom的RTL-SDR项目的GitHub仓库下载库的源代码,并编译它。在终端中,输入以下命令:
sudo apt-get install git cmake build-essential libusb-1.0-0-dev
git clone git://git.osmocom.org/rtl-sdr.git
cd rtl-sdr/
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install
sudo ldconfig
禁用默认的驱动:RTL-SDR设备在Linux上默认使用的是dvb-t驱动,这个驱动不支持SDR操作。因此,你需要禁用这个驱动。在终端中,输入以下命令:
sudo bash -c 'echo -e "\n# for RTL-SDR:\nblacklist dvb_usb_rtl28xxu\n" >> /etc/modprobe.d/blacklist.conf'
重启你的树莓派:为了让这些改变生效,你需要重启你的树莓派。在终端中,输入以下命令:
sudo reboot
测试RTL-SDR:在安装了RTL-SDR的库和驱动后,你可以使用rtl_test命令来测试你的RTL-SDR是否能被正确识别。在终端中,输入以下命令:
rtl_test
显示:
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001
Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
[R82XX] PLL not locked!
Sampling at 2048000 S/s.
Info: This tool will continuously read from the device, and report if
samples get lost. If you observe no further output, everything is fine.
Reading samples in async mode...
按ctrl+c退出
安装SpyServer
下载并安装SpyServer:我使用的是arm64位版本,如果你是其他内核,替换一下。
wget https://airspy.com/downloads/spyserver-arm64.tgz
mkdir spyserver
tar xvzf spyserver-arm64.tgz -C spyserver
cd spyserver
运行SpyServer测试一下。
./spyserver
显示:
SPY Server v2.0.1700
Copyright (C) 2016-2018 Youssef Touil - https://airspy.com
Reading the configuration file: spyserver.config
Listening for connections on 0.0.0.0:5555
Found Rafael Micro R820T tuner
将SpySerer部署为服务
修改配置文件
nano spyserver.config
我只修改了下面这些参数:
端口指定为5555
初始增益12,免得每次打开SDRSharp都调
bind_port = 5555
initial_gain = 12
ctrl+x退出
y保存
设置服务
创建一个新的服务文件:首先,你需要创建一个新的服务文件。在终端中,输入以下命令:
sudo nano /etc/systemd/system/spyserver.service
编辑服务文件:在打开的nano编辑器中,输入以下内容:
修改路径和用户名为你的
[Unit]
Description=SpyServer
After=network.target
[Service]
ExecStart=/spyserver二进制文件路径 /spyserver.config配置文件路径
User=用户名
Restart=on-failure
[Install]
WantedBy=multi-user.target
启动服务:现在,你可以启动你的SpyServer服务了。在终端中,输入以下命令:
sudo systemctl start spyserver
设置服务在启动时自动运行:如果你希望在系统启动时自动运行SpyServer,你可以使SpyServer服务在启动时自动运行。在终端中,输入以下命令:
sudo systemctl enable spyserver
性能
树莓派3B+处理RTL-SDR的性能有些紧张。
SDRSharp的客户端有一个选项是Use full IQ
没勾选的话数据会先在树莓派上处理
客户端收到的是处理后的FTT图形和声音。好处是占用带宽很低,但是对树莓派的压力比较大,最好有散热片。
勾选的话,客户端将处理这些数据,占用带宽很大,但是树莓派就没什么压力了。
但是这是在使用RTL-SDR的前提下,本身带宽就不高:2.7Mhz。
AirSpy R2的带宽有8Mhz,树莓派3B+会有些卡顿。
我最后将AirSpy R2连到了闲置的Jetson Nano上,流畅运行。