Raspberry Pi 4 + Debian 13 (Trixie) で RTL-SDR を使った ADS-B 受信局を構築して Flightradar24 にフィードした記録
航空機のリアルタイム追跡サービス「Flightradar24」に自作の受信機からデータをフィードすると、Contributor プランが無料で提供されます(Business Plan と同等の機能が使えます)。今回は、最新の Debian 13 (Trixie) 環境で RTL-SDR ドングルを使い、基地局(RJTT2257)を立ち上げた際の技術ログをまとめます。公式スクリプトが Cloudflare に弾かれ、最新の署名ポリシーがレガシーを拒絶するケースへの対処が必要でした。
0. きっかけ:息子の飛行機ブーム
構築のきっかけは、息子の「飛行機ブーム」でした。空を見上げては「きー!」と指をさして教えてくれるので、飛来状況を調べるために Flightradar24 を多用していましたが、無料プランの広告の多さに閉口していました。
「データを提供すれば広告フリーの Business Plan が手に入る」と知り、エンジニア魂に火がついて受信システムを構築することにしました。都心の低層階ゆえ広域は拾えませんが、近隣の旧防衛省ヘリポート周辺をカバーするという局所的なミッションを持って運用しています。
1. 動作環境と構成
今回のスタックは以下の通りです。
- SBC: Raspberry Pi 4 Model B (4GB)
- OS: Debian GNU/Linux 13 (trixie) aarch64
- SDR: RTL2832U + R820T2
- Software: readsb (Decoder) + fr24feed (Feeder)
RTL-SDR ドングルは AliExpress で数百円から購入できます。今回使用した RTL2832U + R820T2 チップセットのものが 1090MHz の ADS-B 受信に適しています。

公式のオールインワン・インストーラーに頼らず、デコーダーとフィーダーを疎結合にする構成を採用しました。これにより、SDR から上がってくる Raw データを readsb が TCP ポート 30005(Beast 形式)で一旦待ち受け、そこから各サービスに分配する拡張性を持たせています。この構成だと Flightradar24 だけでなく FlightAware など他のフィーダーも並列で接続でき、1 つの受信機から複数サービスへ同時にデータ提供できます。
2. 最初の壁:Cloudflare の 403 Forbidden
構築を開始して早々、get.flightradar24.com からのスクリプト取得が WAF(恐らく Cloudflare)に弾かれ、403 Forbidden が返される事態に遭遇しました。多くのエンジニアがここで躓きますが、これは wget や curl のデフォルト User-Agent が Bot と判定されているためです。
解決策:User-Agent の偽装 ブラウザ(Chrome等)の文字列を模倣することで、セキュリティフィルタをパスします。
curl -L -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" [URL]
このワンクッションを入れることで、リポジトリ署名キー(.pub)の取得に成功しました。
3. 次の壁:Debian 13 (Trixie) の厳格なセキュリティポリシー
Debian 13 (Trixie) では、2026年以降のポリシーとして SHA1 署名を用いたリポジトリが apt update で拒絶されます。FR24 の公式リポジトリは依然として古い署名形式を使用しているため、そのままではインストールが不可能です。
解決策:[trusted=yes] による強制バイパス /etc/apt/sources.list.d/fr24feed.list の定義に [trusted=yes] を追記し、パッケージの署名検証を明示的にスキップさせることで解決しました。
deb [trusted=yes] https://repo-feed.flightradar24.com flightradar24 raspberrypi-stable
4. 最後の壁:libssl1.1 の依存関係崩壊
fr24feed バイナリは古い libssl1.1 を要求しますが、Trixie 環境では libssl3 が標準であり、旧版ライブラリがリポジトリから削除されています。
解決策:旧版 deb パッケージの直接導入 Ubuntu 20.04 等のアーカイブから libssl1.1 の aarch64 用 deb パッケージを取得し、dpkg -i で無理やり流し込むことでバイナリのリンクエラーを解消しました。
5. フィーダー設定と運用ステータス
/etc/fr24feed.ini では、readsb が開放している 127.0.0.1:30005 に接続するよう beast-tcp 形式で指定します。
港区・浜松町付近(RJTT 周辺)に設置した結果、btop での観測では CPU 使用率 3% 前後、温度 42°C という超低負荷で安定稼働。深夜帯でも羽田のアプローチ機を確実にトラッキングし、サーバーとの同期結果を示す syncing stream result: 1 を吐き出し続けています。
6. FlightAware への同時フィード
同じ readsb の 127.0.0.1:30005 に piaware を接続することで、FlightAware にも並列でデータをフィードできます。FlightAware 側もフィーダーには Enterprise 相当のアカウントが提供されるため、1 つの受信機で 2 つのサービスの上位プランを同時に得られるのが美味しいところです。
piaware-config でサイト ID を発行し、受信ソースを Beast TCP / 127.0.0.1:30005 に向けるだけで稼働します。readsb が疎結合のハブとして機能するので、既存の FR24 フィードに影響を与えずに追加できました。

tar1090 のローカル画面では、受信した航空機の位置がリアルタイムに描画されます。

個別機体を選択すると、機種・速度・高度・信号強度(RSSI)などの詳細情報が確認できます。下は JAL329(Boeing 787-8)を補足したときの tar1090 画面です。

graphs1090 では、メッセージレート・受信距離・信号レベルなどのパフォーマンス指標を長期間で可視化できます。

Flightradar24 の統計ページでは、受信機ごとの受信機数・距離・機数などの実績が確認できます。

データのフィードを継続することで Contributor として認定され、Business Plan 相当の機能が利用できるようになります。

まとめ
最新 OS での構築は依存関係の問題が連続しましたが、一つずつ解きほぐすことで稼働にこぎつけました。現在は RJTT2257 という局 ID で世界中の航空ファンにデータを提供しています。
次は JE1WFV(アマチュア無線)としての知見を活かし、1090MHz 専用のバンドパスフィルタを自作して S/N 比を追い込み、受信距離の限界に挑戦する予定です。
余談:肝心の息子は
苦労の甲斐あって、ついに広告なしの快適な環境が整ったのですが……肝心の息子の興味は、今や完全に車とトミカへ移行しました。せっかく構築したシステムですが、もはや Flightradar24 を開く機会すらありません。現場からは以上です。


