この記事はRaspberry Pi Advent Calendar 2017の11日目の記事です。

今年も色々やったようなやってないような感じですが、個人的にずっと塩漬けしてたADS-B受信のお話。

ADS-Bって?

ざっくりと言うと飛んでる飛行機が今どこにいて、どこに向かってるかを流してる電波です。
これを受信して集めることでFlightradar24のようなサービスを作ることができます。
今回はRasPiでADS-Bを受信して、Flightradar24に情報を送り、Bussinessプラン会員(お高いBussinessプラン会員がデータを送ることで無料になります)になるためにやったことをまとめてあります。

環境

OSはraspbian(Stretch)

$ uname -a
Linux raspberrypi 4.9.41+ #1023 Tue Aug 8 15:47:12 BST 2017 armv6l GNU/Linux

ADS-B受信機器

電波なので受信するための機械が必要です。
私はDX.comの怪しいUSB受信機を買いましたが、amazonで安く販売されているこういったものでもOKです。
ただ、後述しますが、どういった機械にしても熱対策が必要です。

事前設定

OSインストール諸々は適当に。

USBへの供給電力変更

RasPi3では不要

$ diff -u /boot/config.txt{.orig,}
--- /boot/config.txt.orig	2017-10-28 19:58:15.000000000 +0900
+++ /boot/config.txt	2017-10-28 19:58:23.000000000 +0900
@@ -57,3 +57,5 @@
 
 # NOOBS Auto-generated Settings:
 hdmi_force_hotplug=1
+
+max_usb_current=1

必要PKGインストール

インストール後に再起動

$ sudo apt-get install dirmngr
sudo shutdown -r now

fr24

flightradar24 へADS-B情報を送るためのソフトをインストール
スクリプトを実行するだけでインストール可能

事前に準備するもの

  • メールアドレス
  • Sharingkey(もし持っていれば。無くてもOK)
  • RasPi設置場所の緯度・経度・高度(mではなくfeet)


インストール

以下に公式手順はあります。
https://www.flightradar24.com/raspberry-pi

$ sudo bash -c "$(wget -O - http://repo.feed.flightradar24.com/install_fr24_rpi.sh)"

--2017-10-28 20:19:31--  http://repo.feed.flightradar24.com/install_fr24_rpi.sh
repo.feed.flightradar24.com (repo.feed.flightradar24.com) をDNSに問いあわせています... 52.216.82.139
repo.feed.flightradar24.com (repo.feed.flightradar24.com)|52.216.82.139|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 921 [text/x-sh]
`STDOUT' に保存中

-                                100%[========================================================>]     921  --.-KB/s    in 0s      

2017-10-28 20:19:32 (8.13 MB/s) - stdout へ出力完了 [921/921]

gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key C969F07840C430F5: public key "Flightradar24 <support@fr24.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1
OK
取得:1 http://repo.feed.flightradar24.com flightradar24 InRelease [10.5 kB]                                                      
ヒット:2 http://archive.raspberrypi.org/debian stretch InRelease                                                                 
取得:3 http://repo.feed.flightradar24.com flightradar24/raspberrypi-stable armhf Packages [632 B]                 
ヒット:4 http://mirrordirector.raspbian.org/raspbian stretch InRelease                   
11.1 kB を 6秒 で取得しました (1,669 B/s)                                                                                        
パッケージリストを読み込んでいます... 完了
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  fr24feed
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 107 個。
1,288 kB のアーカイブを取得する必要があります。
この操作後に追加で 563 kB のディスク容量が消費されます。
取得:1 http://repo.feed.flightradar24.com flightradar24/raspberrypi-stable armhf fr24feed armhf 1.0.18-9 [1,288 kB]
1,288 kB を 5秒 で取得しました (235 kB/s)
以前に未選択のパッケージ fr24feed を選択しています。
(データベースを読み込んでいます ... 現在 122701 個のファイルとディレクトリがインストールされています。)
.../fr24feed_1.0.18-9_armhf.deb を展開する準備をしています ...
fr24feed (1.0.18-9) を展開しています...
systemd (232-25+deb9u1) のトリガを処理しています ...
fr24feed (1.0.18-9) を設定しています ...
______  _  _         _      _                    _              _____    ___ 
|  ___|| |(_)       | |    | |                  | |            / __  \  /   |
| |_   | | _   __ _ | |__  | |_  _ __  __ _   __| |  __ _  _ __`' / /' / /| |
|  _|  | || | / _` || '_ \ | __|| '__|/ _` | / _` | / _` || '__| / /  / /_| |
| |    | || || (_| || | | || |_ | |  | (_| || (_| || (_| || |  ./ /___\___  |
\_|    |_||_| \__, ||_| |_| \__||_|   \__,_| \__,_| \__,_||_|  \_____/    |_/
               __/ |                                                         
              |___/                                                          
[main][i]FR24 Feeder/Decoder
[main][i]Version: 1.0.18-9/generic
[main][i]Built on Apr 20 2017 09:25:30 (T201704200925/Linux/static_arm)
[main][i]Copyright 2012-2017 Flightradar24 AB
[main][i]http://flightradar24.com
[main][i]DNS mode: PING

Welcome to the FR24 Decoder/Feeder sign up wizard!

Before you continue please make sure that:

 1 - Your ADS-B receiver is connected to this computer or is accessible over network
 2 - You know your antenna's latitude/longitude up to 4 decimal points and the altitude in feet
 3 - You have a working email address that will be used to contact you
 4 - fr24feed service is stopped. If not, please run: sudo service fr24feed stop

To terminate - press Ctrl+C at any point


Step 1.1 - Enter your email address (username@domain.tld)
$:メールアドレス

Step 1.2 - If you used to feed FR24 with ADS-B data before enter your sharing key.
If you don't remember your sharing key, pelase use the retrival form:
http://feed.flightradar24.com/forgotten_key.php

Otherwise leave this field empty and continue.
$:Sharingkey(無ければ空欄でEnter)

Step 1.3 - Would you like to participate in MLAT calculations? (yes/no)$:yes
※ MLATシステムに参加するかの確認。詳細は http://www.soumu.go.jp/main_content/000010029.pdf

IMPORTANT: For MLAT calculations the antenna's location should be entered very precise!

Step 3.A - Enter antenna's latitude (DD.DDDD)
$:事前に調べた設置場所の緯度

Step 3.B - Enter antenna's longitude (DDD.DDDD)
$:事前に調べた設置場所の経度

Step 3.C - Enter antenna's altitude above the sea level (in feet)
$:事前に調べた設置場所の高度(単位はfeet)

Using latitude: 35.xxxx, longitude: 136.xxxx, altitude: 40ft above sea level

Validating email/location information...OK

The closest airport found is ICAO:XXXX IATA:XXX near XXX.

Latitude: 35.xxxx
Longitude: 136.xxxx
Country: Japan

Flightradar24 may, if needed, use your email address to contact you regarding your data feed.

Would you like to continue using these settings?

Enter your choice (yes/no)$:yes

Step 4.1 - Receiver selection (in order to run MLAT please use DVB-T stick with dump1090 utility bundled with fr24feed):

 1 - DVBT Stick (USB)
 -----------------------------------------------------
 2 - SBS1/SBS1er (USB/Network)
 3 - SBS3 (USB/Network)
 4 - ModeS Beast (USB/Network)
 5 - AVR Compatible (DVBT over network, etc)
 6 - microADSB (USB/Network)
 7 - SBSx via Basestation (localhost:30006)


Enter your receiver type (1-7)$:1
※ 使用する機器の選択

Checking for dump1090...FOUND

Step 4.3 - Enter your additional dump1090 arguments or leave empty
$:入力せずにEnter

Step 5.1 - Would you like to enable RAW data feed on port 30002 (yes/no)$:yes
※ RAWデータの使用ポート

Step 5.2 - Would you like to enable Basestation data feed on port 30003 (yes/no)$:yes
※ 基地局データの使用ポート

Step 6A - Please select desired logfile mode:
 0 -  Disabled
 1 -  48 hour, 24h rotation
 2 -  72 hour, 24h rotation
Select logfile mode (0-2)$:1
※ ログファイルのローテーション

Step 6B - Please enter desired logfile path (/var/log):
$:入力せずにEnter
※ ログファイルの保存パス

Submitting form data...OK

Congratulations! You are now registered and ready to share ADS-B data with Flightradar24.
+ Your sharing key (eeb0635e1e2cd26e) has been configured and emailed to you for backup purposes.
+ Your radar id is T-RJNG10, please include it in all email communication with us.
+ Please make sure to start sharing data within the next 3 days as otherwise your ID/KEY will be deleted.

Thank you for supporting Flightradar24! We hope that you will enjoy our Premium services that will be available to you when you become an active feeder.

To start sending data now please execute:
sudo service fr24feed start

Saving settings to /etc/fr24feed.ini...OK
Installation and configuration completed!

サービス再起動

$ sudo service fr24feed restart

動作確認

以下のURLにアクセス

  • http://RasPiのIPアドレス:8754/

受信したデータが表示されれば稼働しています。

Flightradar24への登録

Fr24インストール時に設定したメールアドレス宛に「Your Flightradar24 sharing key」というタイトルでsharing keyが届いた後にアカウントを登録します。
アカウントのメールアドレスをFr24インストール時に設定したメールアドレスと同じアドレスにすればBussinessプランで登録され、Bussinessプランで利用が可能となります。

熱対策

ADS-Bの受信機器がかなり熱を持ち、動作が不安定になります。
手っ取り早い対策として家に転がってた古いグラフィックボードのヒートシンクをつけてみました。
これをつけただけで、1ヶ月は安定稼働しています。