树莓派之SDR服务器
-最近一段时间闲的无聊突发奇想利用树莓派搭建一个SDR的服务器,这样无论在何地也能通过网络收听想听的频率.美滋滋.
首先 我们来看一下 什么是SDR?
软件定义的无线电(Software Defined Radio,SDR) 是一种无线电广播通信技术,它基于软件定义的无线通信协议而非通过硬连线实现。频带、空中接口协议和功能可通过软件下载和更新来升级,而不用完全更换硬件。(摘自百度百科)
简单地介绍一下.以前接收各种无线信号是靠各种电子元件.调频,检波等等"处理"变成音频输出,而SDR,就是将无线信号转换为数字信号,然后利用软件+硬件实现音频输出,有什么好处呢? 频带宽,可解调协议更多,抗干扰性能更优秀.随着技术的发展,SDR在业余无线电通讯中渐渐地流行起来.
去年,鄙人不才才加入这个行列.研究了一款基于SDRPLAY 的RSP1 开源硬件的SDR,这款SDR出自于一位3区(天津)的HAM BG3CS.
频率覆盖:1KHZ - 2GHZ
最高带宽:10MHZ(取决于计算机硬件性能)
在家使用的时候我用的是倒V天线+GP高增益天线作为接收.使用windows系统进行解调.总觉得要是外出也能访问收听就更好一些了.
于是网上搜索各种资料.发现了一套解决方案,树莓派+OPEN WEB SDR,但大数都是基于RTL2832U+R820T的,各种周转..翻山阅读.终于搞清楚.这个SDR如果使用OPEN WEB SDR的话需要第三方软件的支持...经过阅读了大量资料.各种编译..各种代码修正后终于成功了.在树莓派上 成功将3CS 的SDR 共享为WEBSDR.理论上这个教程适用于SDRPLAY 的RSP各系.
前段时间把原来的树莓派搞成HIFI数播.于是又从新买了台.
没选择树莓派4?
树莓派4,虽然性能会更高.但是由于刚出来没有多长时间.加上硬件上有些BUG.所以排除了.
至于3B+,这货...多了200MHz主频..只要散热搞好,从3B直接超频稳稳的.
依旧我的树莓派3B+ 铸铝外壳.散热没的说....
话不多说.先上教程.
对不住大家..树莓派基于UNIX系统.所以.下面将会是一大段代码编译过程......
首先,依旧要讲西戎烧录在TF卡上.
系统选用:
由于这个应用基本上树莓派处于一个"服务器"的角色,所以武学GUI界面.系统选用为
Raspbian Buster Lite
版本信息:
Version:September 2019
Release date:2019-09-26
Kernel version:4.19
请前往官网下载:
https://www.raspberrypi.org/downloads/raspbian/
刷系统
软件:
SD Card Formatter
Win32DiskImager
将下载回来的压缩文件解压获得IMG镜像,然后
把TF卡插在电脑上,使用 SD Card Formatter 格式化
然后使用 Win32DiskImager 将下载回来的 Raspbian Buster Lite 系统镜像.写入TF卡
等待系烧录完成,打开"可移动磁盘"
在磁盘根目录下创建一个文本文件.空的即可,命名为ssh(注意不包含扩展名)
这一步是为了打开ssh功能
最后将TF卡插入树莓派...开机.让树莓派自动配置 飞 一会
进入自家路由器,或者其他方法找到树莓派的IP地址,
再用 ssh 软件 连接到树莓派(我用putty),
用户名:pi
密码:raspberry
登录系统后,第一件事请是要更新一下系统.
输入并运行: sudo apt-get update
输入并运行: sudo apt-get upgrade
等待更新完毕后.我们就要开始安装各种所需软件了.一大堆命令执行
(以下命令请单独执行,如遇提示请输入Y同意即可安装)
sudo apt-get install cmake python2.7 libfftw3-dev libfftw3-3 libfftw3-bin libusb-1.0-0.dev netcat git
根据网络不同时间不等.请耐心等待完成.
然后进行FTP的设置,这个主要是树莓派传输文件用.
1.安装vsftpd
sudo apt-get install vsftpd
2.修改配置 /etc/vsftpd.conf
sudo nano /etc/vsftpd.conf
把里面的所有内容全部删除,将以下内容粘贴进去ctrl+X保存退出
#若出现以下报错是,则开启一下行 vsftpd: 500 OOPS: prctl PR_SET_SECCOMP failed
#seccomp_sandbox=no
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
#chown_uploads=YES
#chown_username=whoever
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=600
data_connection_timeout=120
async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to blah FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd.banned_emails
userlist_enable=YES
userlist_deny=NO
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
#local_root=/var/ftp
ls_recurse_enable=YES
secure_chroot_dir=/var/ftp
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
在配置访问用户
sudo nano /etc/vsftpd.user_list
在编辑器里面输入pi
ctrl+X保存退出
sudo nano /etc/vsftpd.chroot_list
在编辑器里面输入pi
ctrl+X保存退出
新建ftp文夹
sudo mkdir /var/ftp
sudo chown ftp:ftp /var/ftp
sudo chmod 555 /var/ftp
重启树莓派
sudo reboot
等待重启完成在用SSH工具连接到树莓派,继续操作
在控制台继续输入命令
创建一个SDR的目录
mkdir SDR
用FTP软件 连接树莓派,
服务器IP地址就是树莓派地址
用户名:pi
密码:raspberry
将从 https://www.sdrplay.com/ 官网下载的
API/HW DRIVER 上传到树莓派的SDR文件夹
我下回来文件名是 SDRplay_RSP_API-RPi-2.13.1.run
继续运行
进入SDR目录
cd SDR
安装SDR硬件驱动
sudo chmod +x SDRplay_RSP_API-RPi-2.13.1.run
sudo ./SDRplay_RSP_API-RPi-2.13.1.run
按回车直到100%,然后Y
接下来就要安装各种相关软件了,都是要从GIT仓库GET下来.
执行代码.每行未执行一次
git clone https://github.com/pothosware/SoapySDR
git clone https://github.com/rxseger/rx_tools
git clone https://github.com/pothosware/SoapySDRPlay
git clone https://github.com/simonyiszk/csdr.git
git clone https://github.com/simonyiszk/openwebrx.git
然后是漫长的编译...又是一大堆代码....
cd csdr
sudo make
sudo make install
cd ..
cd SoapySDR
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig
cd ..
cd rx_tools
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig
cd ..
cd SoapySDRPlay
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig
cd ..
#编辑硬件连接
sudo nano /etc/modprobe.d/blacklist-sdrplay.conf
这时会打开一个编辑器 将下面内容粘贴进去
blacklist sdr_msi3101
blacklist msi001
blacklist msi2500
Ctrl+O保存,Ctrl+X退出
#重启
reboot
#至此如果安装正确.已经可以查看到硬件设备了,确认硬件连接后继续执行
SoapySDRUtil --find
正常的话会显示
#进一步确认连接
#测试设备 Ctrl+C 退出测试
rx_sdr - | csdr through > /dev/null
重要
当所有配置或者镜像烧录完毕 都必须要配置文件config_webrx.py
可用FTP连接树莓派
/home/pi/SDR/openwebrx/config_webrx.py
或 用命令方式编辑文件
sudo nano /home/pi/SDR/openwebrx/config_webrx.py
将
server_hostname="XXX.XXX.XXX.XXX"
改为
server_hostname="树莓派地址"
否则无法运行
#运行服务
cd /home/pi/SDR/openwebrx/
python2.7 openwebrx.py
此时如果设置全部顺利正常,您在浏览器里面打开
http://树莓派IP:8073
就能看到WEB SDR的整个界面了
如果需要增加开机启动
sudo nano /etc/rc.local
打开编辑器在EXIT 前加入如下内容
cd /home/pi/SDR/openwebrx/
sudo python2.7 openwebrx.py
cd /
即可
config_webrx 推荐配置
短波建议修改
rf_gain = 30
waterfall_min_level == -80
写在最后
openwebrx 文件夹下config_webrx.py 文件是WEB SDR 的配置.我做了一些简单的中文注释.大家可以根据自己的需求修改配置文件.
理论上使用SoapySDR 可以进行其他SDR软件的TCP连接.大家自行研究吧.
如果需要在外网访问 还要需要配置自家陆游的动态域名.以及端口映射即可.