在 Arch Linux 下安装飞常准上传套件

前言

笔者手中有一台由飞常准下发的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端口 进行设备工作测试

sdr套件工作正常。

从github上下载dump1090源码

1
git clone git://github.com/MalcolmRobb/dump1090.git

进入dump1090目录,输入make编译。(这一步如果出错,尝试安装 make 和 gcc)

编译完成后,当前目录输入

1
./dump1090 --interactive

就可以看到接收的结果。

至此,您的设备可以正常接收数据了,您可以尝试访问设备的8080端口,会有一个可视化页面供您查看。


移植上传套件

接下来就是利用从官方镜像中提取的文件了。

首先 pacman -S python2 //安装python

根据你的网络环境,这一步可能很慢,可以尝试换源

将官方镜像 ./root 下内容转移到arch下的root (本文文尾部附有代码仓库,可选2016文件夹或2017文件夹中的内容)

运行task.sh,发现报错了

1
2
3
4
5
6
7
8
9
10
11
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,我们发现运行正常

1
2
3
4
5
6
7
8
9
10
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

1
2
3
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
    • 本文由于时间的因素,部分时效性内容已经发生转变。
    • 非飞常准认证用户借鉴本文进行搭建时,由于志愿者上传计划(自建设备上传计划)的淡化,您的数据可能不被服务器接受。
    • 项目内已增补官方发布的脚本安装包