航空機はGPSを使って自身の位置、速度等を算出し、それをADS-B(Automatic Dependent Surveillance–Broadcast)として1,090MHzの電波で外に向けて送信しています。Broadcastという言葉からもわかるように、それは不特定多数に対して送られる暗号化されていない信号で、適当なアンテナと受信機さえあれば誰でも受信できるので、世界中で航空機や無線の愛好家によって受信されています。航空トラッキングサービス会社はそうした愛好家の有志を募ってネットワーク化し、そこからリアルタイムで得られるデータを主要な情報源として運営されています。
RTL-SDRを使うとADS-Bの電波を捉えることができますが、それをデコードするためにほとんどの人が使っているソフトウェアが dump1090-fa です。最初にSalvatore Sanfilippo氏が趣味で開発した dump1090 が広く使われるようになっていたのを、航空トラッキングサービス会社のFlightAware社がそれをフォークして大幅に機能・性能を向上させたものが dump1090-fa です。
FlightAware社は、dump1090-fa で検出した飛行機からの情報をインターネット経由でFlightAware社のサーバーへ転送するための piaware というソフトウェアも提供しています。
dump1090-fa が出力するデータ形式はデファクトスタンダードになっていて、他の航空トラッキングサービスでも利用されています。例えば fx24feed を使うとFlightradar24社のサーバーへ転送することができます。
これらのソフトウェアが動作するプラットフォームは、主にLinuxベースの環境ですが、動作実績が多く、FlightAware社の公式が直接サポートしているのはRaspberry Piです。Raspberry Piは低電力で連続運転できるのでこうした用途に最適だからでしょう。そこで今回は、図AのようにRTL-SDR BLogg V4をUSBに接続したRaspberry Piに上記dump1090-fa と piaware 、さらには fx24feed をインストールして、ADS-B受信・共有のためのシステムを動かしてみることにします。

Raspberry Piは「RTL-SDRが面白い その4」で使用したもので、電源とRTL-SDR Blog V4だけを接続しています。電源をONするとWiFiでLANにつながるので、LAN上の別のPCからVNC接続でデスクトップを表示して操作することができます。

アンテナはまず「RTL-SDRが面白い その4」で使用したダイポールアンテナで試します。ADS-Bは波長が27cm程度なので、そのλ/4にロッドの長さを合わせています。今回は空が見える屋外に置いてみました。

Raspberry Piに dump1090-fa、piaware をセットアップする手順は以下の通りです。
- Raspberry Piを最新の状態にする。
sudo apt update
sudo apt full-upgrade -y - FlightAwareのパッケージをダウンロードし、インストールする。
wget https://www.flightaware.com/adsb/piaware/files/packages/pool/piaware/f/flightaware-apt-repository/flightaware-apt-repository_1.3_all.deb
sudo dpkg -i flightaware-apt-repository_1.3_all.deb
sudo apt update - デコーダーのdump1090-faと piaware をインストールする。
sudo apt install dump1090-fa piaware -y
インストール後、再起動するとdump1090-fa はデーモンとして働き、バックグラウンドで受信が始まります。 そこで、同一ネットワーク内のPCやタブレットのブラウザで
http://192.168.1.20/skyaware/
にアクセスすると図BのようにRTL-SDR Blog V4が捉えた航空機がリアルタイムにプロットされ、便名、高度、速度、方向等が一覧で表示されます。これは自分のアンテナが捉えているものだけをローカルでみることができる自分だけのレーダーのようなものです。アンテナが簡易なのでごく近くを飛んでいる飛行機しか見つけられていません。アンテナを高感度、高利得のものにするとより多くの信号を捉えることができるはずですが、それについては別に書くことにします。

piaware もデーモンとして働きFlightAwareのサーバーにデータを送ります。
データを提供すると、FlightAwareの最上位にプラン(Enterprise User)が無料で提供され、自分が提供したデータの統計的な分析も見ることができる特典が得られることになっています。そこで、サーバーがどのPiAwareから送られてきたデータかを識別できるように、事前にFlightAwareのアカウントとPiAwareを紐づけが必要です。これはFlightAwareにログインしたアカウントとサーバーにデータを送ったpiawareが同じグローバルIPを使って接続していればそれを自動で検出して紐づけるようになると説明されています。しかし、私の場合、FlightAwareにログインしてもどうしてもFlightAwareにpiawareを見つけてもらえず、紐づけできませんでした。
そういう場合は、マニュアルで登録する方法がサポートページに書いてありました。
それに従って、FlightAwareにログインした状態で
https://www.flightaware.com/adsb/piaware/claim/<feeder id>⏎
にアクセスすると登録することができました。ここで、<feeder id>は、事前にBashで
piaware-status⏎
とすると最後の方に出てくる feeder ID (********-****-****-****-************) の値を使用します。
FlightAwareアカウントとPiAwareが紐づけられた後、FlightAwareにログインし、一番上にあるマイADS-Bボタンを押すと自分の提供したデータの統計を見ることができます。
私のPiAwareは、。SITE 277939 -- RJTA として登録されています。

Flightradar24に送信するための fx24feed をインストールする方法は公式に次のように案内されています。
sudo bash -c "$(wget -O - https://repo-feed.flightradar24.com/install_fr24_rpi.sh)"
しかし、私が使っている環境ではOS(Debian Trixie / Raspberry Pi OSの最新版)の強力なセキュリティポリシーに引っかかっているらしくブロックされてしまいます。Geminiに相談すると、暫定的に回避する方法を教えてくれました。それは、 /usr/share/apt/default-sequoia.config ファイルの一部を書き直す方法なのですが、それは使用環境によって異なるのでここに詳細を記述することは控えます。なにかエラーが返ってきた場合は、そのエラーメッセージを添えてGeminiに聞くと解決方法を提示してくれるので、それを試してみると良いでしょう。
上記のスクリプトが動くとターミナル上でいくつかの設定項目を聞かれるのでそれに応えて終了させ、
sudo systemctl restart fr24feed⏎
でサービスを再起動します。flightradar24.com にアクセスしてログインすると、アカウントのステータスが"CONTRIBUTOR"になっています。リアルタイム・データの提供者にこのステータスが与えられますが、無料で最上位のプランと同等のサービスが提供されるようです。

ところで、これまで”SILVER"プランで利用していたのでそちらは解約する必要があるかと思いましたが、SILVERに関する記述はどこにも見つかりません。"CONTRIBUTOR"になったことで”SILVER"から自動的に移行されているのしょうか? これについては継続して注意しておく必要がありそうです。