软件定义无线电的应用:搭建树莓派SDR服务器

SDR即软件定义无线电,在无线电爱好者HAM圈子中属于一种廉价的,宽适应频率的一种收听玩法。众所周知,任何无线电接收装置都会有一定的频率适用范围,如对讲机,对讲机按频率适用范围可分为U段(400MHz)、V段(140MHz)、短波(30MHz以下),其中短波还分CW、SSTV、AM、AMS、LSB、USB、DSB、ISB、FM等模式;收音机,一般有FM、AM、短波、中波,某些高端的型号还可能会兼容V段频率。倘若你有远程接收无线电的需求,构建spyserver这种方式不失为一种妥当的选择。

RTL-SDR/TCP

准备好树莓派、Rtl-2832U,连接好硬件,首先SSH登录树莓派,直接lsusb查看USB设备列表,倘若一切正常应该可以正常显示如下字样:

1
2
3
4
5
6
7
root@raspberrypi:~# lsusb
Bus 001 Device 004: ID 10c4:ea70 Cygnal Integrated Products, Inc. CP210x UART Bridge
Bus 001 Device 005: ID 0bda:2832 Realtek Semiconductor Corp. RTL2832U DVB-T
Bus 001 Device 006: ID 0424:7800 Standard Microsystems Corp.
Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

接下来稍微更新一下软件源:

1
sudo apt-get updade

然后就开始安装了,首先安装需要的库和编译程序,全部确认yes即可:

1
sudo apt-get install libusb-1.0-0-dev cmake

然后下载SDR:

1
sudo git clone git://git.osmocom.org/rtl-sdr.git

下载完成,进入目录:

1
cd rtl-sdr/

编译、安装 :

1
2
3
4
5
6
sudo cmake -DINSTALL_UDEV_RULES=ON -DDETACH_KERNEL_DRIVER=1
#重启后进行
sudo make
#重启后进行
sudo make install
sudo ldconfig

完成后分配IP地址:

1
2
sudo rtl_tcp -a 000.000.000.000
#000的地方填写你的树莓派IP

然后访问SDRSharp官网下载PC端的SDR软件(Windows),下载完解压运行install,install完成后会生成一个sdrsharp文件夹,进去该文件夹,运行sdrsharp。

在左边菜单里面找到 源【Source】选择RTL-SDR/TCP,然后点击“齿轮”状按钮。

主机填写树莓派所属IP,就是刚才终端里面设置的信息,端口默认1234,采样率 0.900001MSPS。

设置完成,点击齿轮旁边三角形按钮启动。

下面给出screen窗口环境下快捷运行指令的脚本代码:

1
2
#!/bin/bash
/home/Remote_SDR/rtl-sdr/src/rtl_tcp -a 192.168.10.20 -p 1234 -s 2048000

其中关于rtl_tcp指令详细使用方法如下代码所示:

1
rtl_tcp --help

SpyServer

想远程收听某地的广播,可以在树莓派上安装 SpyServer 。

首先,打开终端,安装需要的驱动及库。

1
sudo apt install rtl-sdr librtlsdr-dev

建立程序目录:

1
2
mkdir spyserver
cd spyserver

下载最新的版本的SpyServer二进制文件。注意,如果不是在arm平台上安装,需要替换为合适的下载链接

1
2
wget -O spyserver.tgz http://airspy.com/?ddownload=4247
tar xvzf spyserver.tgz

其中,查看树莓派操作系统位数的指令为:

1
getconf LONG_BIT

编辑配置文件 spyserver.config , 将 device_type 项修改为:

1
device_type = RTL-SDR

你还可以修改监听端口,采样信息等配置。执行 ./spyserver 运行 spyserver(建议另起一个screen窗口启动该进程)。

1
2
3
4
5
6
7
8
9
10
root@raspberrypi:/home# cd spyserver/
root@raspberrypi:/home/spyserver# ls
spyserver spyserver.config spyserver_ping spyserver.tgz
root@raspberrypi:/home/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
[R82XX] PLL not locked!

将spyserver设置为服务(未测试):

1
2
# 创建系统服务
nano /etc/systemd/system/spyserver.service

spyserver.service内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[Unit]

Description=spyserver

After=network.target

[Service]

User=pi ##按实际情况设置

Type=forking

RemainAfterExit=yes

ExecStart=/home/pi/spyserver/spyserver

[Install]

WantedBy=multi-user.target

之后开启服务并且设置开机自启

1
2
3
4
#启动 spyserver并创建服务配置
systemctl start spyserver
#设置开机自动启动 spyserver
systemctl enable spyserver

打开 SDR#将Source修改为 Spy Server Network,输入服务器地址,如sdr://10.0.0.10:5555 ,点击C,调整相关参数即可。

参考文档

1
https://www.rtl-sdr.com/rtl-sdr-tutorial-setting-up-and-using-the-spyserver-remote-streaming-server-with-an-rtl-sdr/

相关软件

直接给出Android端RTL-SDR驱动程序,SDR Touch和SDR Touch key的.apk安装包,详情见Google Drive