MENU

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

June 24, 2018 • 折腾

前言

笔者手中有一台由飞常准下发的 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
  • 本文由于时间的因素,部分时效性内容已经发生转变。
  • 非飞常准认证用户借鉴本文进行搭建时,由于志愿者上传计划(自建设备上传计划)的淡化,您的数据可能不被服务器接受。
  • 项目内已增补官方发布的脚本安装包
Last Modified: January 27, 2021
Archives QR Code
QR Code for this page
Tipping QR Code