前言
笔者手中有一台由飞常准下发的 ADSB 数据接收器,并加入了数据上传计划。设备基于 Raspberry Pi 2B + RTL2838(820T2)。RTL2832 是一套廉价的无线电接收硬件。由于树莓派的特性,掉电之类的情况频繁发生,因而整个体系不是十分稳定,某年某月某日,我对于飞常准的上传模块进行了移植。
在您按照本文操作实践前,请阅读文末的注意事项!
请不要尝试将相关电波数据传送至 FR24,RBOX,FA 等境外平台,这将严重违反无线电管理条例以及国家安全法!
为什么选择 Arch Linux
Arch Linux(或称 Arch)是一种以轻量简洁为设计理念的 Linux 发行版。其开发团队秉承简洁、优雅、正确和代码最小化的设计宗旨。
因此,在这个系统上的操作,更体现移植过程中所有需要的关键因素。
概览
我们分别需要安装以下内容
rtl_sdr 的套件
dump1090
飞常准上传模块
基础搭建
ArchLinux 的仓库为我们提供了大量的软件,因此我们省去了很多编译的过程。
首先需要安装 rtl_sdr 的套件 pacman -S rtl-sdr
安装完成,系统输出提示了:
You can not use a DVB stick for both DVB and SDR. There is a driver conflict. /etc/modprobe.d/rtlsdr.conf blacklists the DVB drivers.
该提示是需要让我们确认设备的工作模式(DVB OR SDR),以及,如果插入了多个 RTL2832 设备,则需要指定。
如果只有一个设备,则通常不需要额外更改配置。
终端输入 rtl_tcp -a 0.0.0.0
并打开 SDR# 使用 tcp 模式连接 1234 端口 进行设备工作测试,如果能够出瀑布图,说明工作正常。
从 github 上下载 dump1090 源码
git clone git://github.com/MalcolmRobb/dump1090.git
进入 dump1090 目录,输入 make 编译。(这一步如果出错,尝试安装 make 和 gcc)
编译完成后,当前目录输入
./dump1090 --interactive
就可以看到接收的结果。
至此,您的设备可以正常接收数据了,您可以尝试访问设备的 8080 端口,会有一个可视化页面供您查看。
移植上传套件
接下来就是利用从官方镜像中提取的文件了。
首先 pacman -S python2 //安装 python
根据你的网络环境,这一步可能很慢,可以尝试换源
将官方镜像 ./root 下内容转移到 arch 下的 root (本文文尾部附有代码仓库,可选 2016 文件夹或 2017 文件夹中的内容)
运行 task.sh,发现报错了
task.sh: line 5: /etc/init.d/dump: No such file or directory
task.sh: line 7: /etc/init.d/dump: No such file or directory
2016-08-29 04:37:11 dump1090 restart
------------------------------------------------------------------------
2016-08-29 04:37:11 send_message restart
------------------------------------------------------------------------
nohup: appending output to 'nohup.out'
OK
2016-08-29 04:37:12 get_ip restart
------------------------------------------------------------------------
task.sh: line 39: /usr/sbin/ntpdate: No such file or directory
PS:此处如果报告找不带类库,请自行安装,(例如 urllib 等)
首先,我们发现找不到 ntpdate 这个目录(默认状态下 arch 是没有带 ntp 服务的) pacman -S ntp
然后就是坑爹的 init.d 的问题了,arch 上并没有链接/etc/init.d 目录,而是搬到了/etc/systemd/目录下,因此,将官方镜像下 etc/init.d/dump 文件转移到 arch 的/etc/systemd/user 下、并设置 755 权限。
再次运行 task.sh,我们发现运行正常
root 1120 1 15 05:28 pts/0 00:02:28 ./dump1090 --net --net-sbs-port 30003
2016-08-29 05:44:20 dump1090 running
------------------------------------------------------------------------
root 1285 1 10 05:38 pts/0 00:00:36 python -O /root/get_message/send_message.py
2016-08-29 05:44:21 send_message running
------------------------------------------------------------------------
OK
return: {"content":"ok","type":"IP","md5":"90a154820104ec2cf8c67c38e6eba828"}
2016-08-29 05:44:21 get_ip restart
------------------------------------------------------------------------
为了使得上传进程不掉下,我们需要定期运行 task.sh
同样的,检查 task.sh 是否为 755 权限。接着,我们需要安装 cronie
pacman -S cronie //使用pacman来安装
systemctl enable cronie.service //启用cronie.service
systemctl start cronie.service//打开cronie.service
最后 你可以选择编辑 /var/spool/cron/root 或者使用 crontab -e 来建立任务
至此,设备可以正常上传数据至飞常准服务器了。
注意事项
- https://github.com/dextercai/FEEYO-Adsb
- 本文由于时间的因素,部分时效性内容已经发生转变。
- 非飞常准认证用户借鉴本文进行搭建时,由于志愿者上传计划(自建设备上传计划)的淡化,您的数据可能不被服务器接受。
- 项目内已增补官方发布的脚本安装包
本文标题:在 Arch Linux 下安装飞常准上传套件
本文连接:https://blog.dextercai.com/archives/45.html
除另行说明,本站文字内容采用创作共用版权 CC-BY-NC-ND 4.0 许可协议,版权归本人所有。
除另行说明,本站图片内容版权归本人所有,任何形式的使用需提前联系。