跳到内容

集中管理你的SDR们

博主在之前的文章中介绍了如何利用SDR玩无线电监测和APRS信标,而SDR的玩法也不仅仅如此,大多数台友们平时还是直接插在电脑上用软件看频谱的。那么问题来了,天线接在SDR上,SDR插在主机上,你在哪里用馈线就得拉到哪里。博主的电脑在卧室,服务器在客厅,天线要分别引入这两个房间内,在相当一段时间里博主都在构思如何走线。最终研究出了解决方案:天线、馈线、SDR统一放在窗户外面,只走一根网线进来,连入家中交换机,电脑和服务器通过局域网调用SDR。如此集中管理不但缩短了馈线长度,还兼顾了整洁美观,最重要的是灵活性大大增强,可以在家里的任何一个房间任何位置访问SDR,无需考虑走线问题。接下来博主就带大家一一实现。

 

原理

窗外设置一台服务器,SDR插在服务器上,使用RTL_TCP和RSP_TCP服务将USB有线连接方式转换为网络端口方式,局域网内的SDR客户端软件通过IP+端口的方式调用服务器上的SDR。

 

准备

服务器:X86架构和ARM架构均可,Linux系统不挑硬件,体积小功耗低就行,但网口速率一定要高,建议1000M,因为传输SDR的采样数据非常占用网络带宽,实测2.4M频宽的RTL-SDR最高占用网络带宽高达40M,更别说10M频宽的SDRPlay了,所有SDR都插在服务器上,那网络带宽占用可想而知。博主用的玩客云小主机,虽然是1000M网口,但刷的armbian系统驱动可能有问题,实测达不到1000M,目前还在折腾中。

交换机:局域网内交换机同样需要1000M。

SDR:博主使用的是RTL-SDR和SDRPlay RSP1,下文详细介绍这两种SDR的搭建和管理,其它类型SDR未作测试,也欢迎各位台友补充方案。

USB Hub:SDR数量较多或供电不足时可以加个有源USB集线器。

设备箱:因为是室外,所以需要一个箱子做好防雨防尘工作,这个根据实际情况而定,也可以统一堆放在室内角落。

软件:服务端软件使用RTL_TCP和RSP_TCP,还有驱动和API,客户端软件较多这里不多列举了,只要支持TCP方式调用SDR就行,博主目前使用的是SDRsharp、HDSDR还有OpenWebRX。

 

开工

SSH方式连入服务器(建议全程使用root用户操作,避免遇到权限问题。)

 

RTL-SDR

首先将SDR列入内核黑名单中,防止系统内核占用SDR导致无法调用。

创建黑名单文件

nano /etc/modprobe.d/rtlsdr.conf

写入如下内容,完成后Ctrl+x按y保存并重启系统。

blacklist dvb_usb_rtl28xxu
blacklist rtl2832
blacklist rtl2830

RTL-SDR只需要安装rtl-sdr软件包即可,里面包含驱动和rtl_tcp服务,想装新一点的版本可以尝试编译安装,下面是系统软件源里自带的包,直接安装。

apt-get update
apt-get install rtl-sdr

查看RTL-SDR设备编号(单个SDR编号为0,多个的话为0,1,2,3)

rtl_test

如果出现“sub_claim_interface error -6 Failed to open rtlsdr device #6”错误,检查黑名单是否添加正确并重启生效。

启动rtl_tcp服务(-d为设备编号,填上面命令得出的编号;-P为频偏,之前的博文中有频偏的测量方法;-s为频宽,RTL-SDR的频宽为2.4MHz;-a为服务监听IP,填主机网口IP,可以使用0.0.0.0监听所有网口;-p为端口,多个设备可使用不同的端口加以区分,其它参数就不多说了,使用“rtl_tcp –help”帮助命令查看)

rtl_tcp -d 0 -P 196 -s 2400000 -a 192.168.0.3 -p 1234

SDRPlay

SDRPlay和RTL-SDR的坑一样,先创建黑名单文件

nano /etc/modprobe.d/sdrplay.conf

写入如下内容,完成后Ctrl+x按y保存并重启系统。

blacklist sdr_msi3101
blacklist msi001
blacklist msi2500

但SDRPlay麻烦一些,先安装API(博主搬运了32位ARM64位ARM的Ubuntu Dabian版本,大家可以在直接下载,其它系统或X86架构自行官网下载。),此处以32位ARM为例,装完重启系统。

cd ~
wget https://bg9ega.cn/download/Radio/SDR/SDRplay_RSP_API-ARM32-3.07.2.run
chmod 755 ./SDRplay_RSP_API-ARM32-3.07.2.run
./SDRplay_RSP_API-ARM32-3.07.2.run
reboot

rsp_tcp的服务软件叫RSPTCPServer,需要用编译方式安装,因此先准备编译环境。

apt-get install git build-essential cmake automake libusb-1.0-0-dev

然后编译安装RSPTCPServer

git clone https://github.com/SDRplay/RSPTCPServer
cd RSPTCPServer
mkdir build
cd build
cmake ..
make
make install

启动rsp_tcp服务(参数和rtl_tcp大致相同,使用“rsp_tcp –help”帮助命令查看,这里有一个-E参数,是SDRPlay特有的高级模式,客户端需要安装“ExtIO Plugin”插件)。

rsp_tcp -E -a 192.168.0.3 -p 5678

 

开机启动

编辑开机启动文件

nano /etc/rc.local

将启动命令加入到“exit 0”的前一行,如: exit 0,不同系统,命令路径略有不同。

博主玩客云上插了两个SDR,RTL-SDR监听1234端口,SDRPlay RSP1监听5678端口。

 

客户端连接

SDR客户端软件很多,设置方法也各不相同,本文以SDRSharp为例,其它软件可能需要安装额外的插件才能支持TCP网络调用方式。

打开SDRSharp的设备选项,根据上文启动服务时所用的IP、端口、频宽填写即可。

OpenWebRX以rtl_tcp的方式创建设备,填入上文启动服务时所用的IP、端口。

 

 

完工

杂七杂八都丢外面,家里整齐了许多。

 

APRS网关、MMDVM大热点、OpenWebRX监测站、各种SDR……都塞进去了,还加了散热和照明。

 

生命在于折腾!

发表于无线电

10 条评论

  1. bh9etg bh9etg

    感觉这个挺适合我,rtlsdr和sdrplay都有,就是没有树莓派和玩客云

  2. 窗外景色不错啊 哈哈

  3. PENGCHENG JIA PENGCHENG JIA

    巨佬牛逼666

  4. BH9EQH BH9EQH

    巨佬牛逼,神通广大。
    神功盖世,法驾中原。

  5. 大佬我想请教一下,同款rsp1,sdrsharp用rtl_tcp模式,频宽最大只有3.2m,10m是怎么调出来的?

    • SDRSharp设置里的带宽貌似是给定的,不能手动输入,我用OpenWebRX和HDSDR是可以的。之前发现以rsp_tcp跑的服务可以用rtl_tcp客户端读取,但rtl_tcp毕竟针对的是RTL-SDR,而不是RSP1,其最大带宽也就3.2M。

      • 解决啦!sdrsharp里只需要安装一个名为ExtIO_RSP_TCP.dll 的插件即可设置为10m频宽,网络占用很恐怖啊,有165mbps。

  6. BI4UBP BI4UBP

    我看你上面客户端是MACOS的版本吗?

    • 图是在网上找的,没注意是啥平台,因为最近一直在用OpenWebRX,之前的SDRSharp、HDSDR都已经卸载了,所以没法截图。
      刚搜了一下MAC装SDRSharp很麻烦,我手上没有MAC不太清楚,以前的Linux笔记本装过GQRX,这个MAC上貌似可以用。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注