博主在之前的文章中介绍了如何利用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。
开工
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位ARM和64位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、端口、频宽填写即可。
完工
杂七杂八都丢外面,家里整齐了许多。
APRS网关、MMDVM热点、各种SDR……都塞进去了,还加了散热和照明。
生命在于折腾!
感觉这个挺适合我,rtlsdr和sdrplay都有,就是没有树莓派和玩客云
窗外景色不错啊 哈哈
巨佬牛逼666
巨佬牛逼,神通广大。
神功盖世,法驾中原。
你好好的
大佬我想请教一下,同款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。
我看你上面客户端是MACOS的版本吗?
图是在网上找的,没注意是啥平台,因为最近一直在用OpenWebRX,之前的SDRSharp、HDSDR都已经卸载了,所以没法截图。
刚搜了一下MAC装SDRSharp很麻烦,我手上没有MAC不太清楚,以前的Linux笔记本装过GQRX,这个MAC上貌似可以用。
博主玩法真丰富。😍😍😍