
那覇空港へと向かう航空機の音が聞こえると、思わず空を見上げてしまう——。
ここ沖縄・浦添は那覇空港のアプローチコースに近く、空のトラフィックを観察するには格好のロケーションです。
今回は、エアバンド(航空無線)の受信から始まった私のホビーが「ADS-Bデータ受信」へと広がっていった経緯と、「ラズパイでいけたから余裕と油断し、Dockerのバッティングとデバイス認識の泥沼にハマってOSを3回入れ直した」という壮絶なトラブル克服の記録をまとめてみました。
1. ADS-Bとは?エアバンドから始まった空への好奇心
すべての始まりは「エアバンド(航空無線)を聴いてみたい」という興味からでした。
自作のアンテナとチューナーをPCに繋ぎ、那覇タワー(118.1MHz)や那覇アプローチ(119.1MHz)から流れる管制官とパイロットのリアルタイムな交信に耳を傾ける。それだけでも空の世界がぐっと身近に感じられて面白い体験でした。
そんな中、無線について調べていくうちに知ったのが「ADS-B(Automatic Dependent Surveillance-Broadcast:放送型自動従属監視)」という仕組みです。
ADS-Bとは?
航空機が自機のGPS位置情報、高度、速度、識別符号(便名など)を1090MHzのデジタル電波で地上に向けて常時放送しているシステムのこと。
「音声(エアバンド)を聴くだけでなく、空から流れてくるデータそのものを自作アンテナで直接キャッチできるのか!」
この発見にワクワクし、さっそく手持ちのRaspberry Pi 3(ラズパイ3)を使ってADS-Bの受信環境を構築してみたところ、これが驚くほどすんなりと成功しました。
2. 自分のデータがマップを動かす!4大ADS-Bサイトへの登録とフィード
ラズパイでの成功に味を占め、「せっかく拾ったデータなら活用したい」と思い、主要なADS-Bトラッキングサイトにレシーバー登録し、データフィード(提供)を開始しました。
自宅のアンテナで拾った電波がネットワークを経由し、世界中のフライトトラッカーの画面上で飛行機アイコンをリアルタイムに動かしている——。さらに最上位プレミアム会員権が無料になる実利もあり、一気にこのホビーの沼にハマっていきました。
3. 「ラズパイでいけたから余裕」の罠:OSを3回入れ直した地獄の泥沼
ラズパイ3での運用も順調だったのですが、「より処理能力が高く、省電力で大容量なサーバー環境にまとめたい」と考え、余ったPCにUbuntu Serverを導入して本格的な移設作業を始めました。
「ラズパイですんなり動いたんだから、同じLinuxのサーバーでもすぐ終わるだろう」
……この軽い気持ちが、すべての悪夢の始まりでした。
沼の始まり:Dockerのポート競合とデバイスバッティング
Docker環境や各種コンテナ、受信サービスを詰め込んでいくうちに、何が原因か何度設定してもデータが「オンライン」にならない現象が発生。あっちを直せばこっちが競合し、ポートやUSBデバイスの認識が完全にバッティング。にっちもさっちも行かなくなりました。
GeminiさんとClaudさんもと協議をした結果入れ直し余計なものが増えすぎて収取がつかない設定ファイルのゴミが残ったのか、環境が完全に汚染されてしまい、原因を特定しようと足掻くうちに、なんとOSのクリーンインストールを3回もやり直す羽目に……!(「もうやめようか」と何度も心折れかけました)
※その間にDebianも2回インソールするが結果ダメでUbuntu Serverに戻したので結果5回ほど入れ替えを行いました。そのうち3回Ubuntu Serverです。
4. 敗因の分析と、シリアルナンバーによる完全固定へのたどり着き
OSを3回焼き直して冷静になり、ようやく原因が分かりました。
- チューナーの性能・認識問題: 安いワンセグチューナーではUbuntuサーバー環境でのUSB給電や認識が不安定だった(そのため「RTL-SDR Blog V3」へ変更)。
- デバイスインデックスの変動: 再起動やコンテナ再起動のたびにUSBのデバイス番号(0や1)が入れ替わり、Dockerやサービスが別のハードウェアを掴んでエラーになっていた。
これらを解決するため、ドングルが持つ「世界に一つだけの固有シリアルナンバー」を抽出し、システム側で完全に固定する設定を行いました。
Bash
# 接続されているRTL-SDRドングルのシリアルナンバーを確認
rtl_test -t
確認したシリアルナンバーをサービス設定に組み込みます。
Ini, TOML
# インデックス番号ではなく、固有のシリアルナンバーでデバイスを直接指定
ExecStart=/usr/local/bin/dump1090-fa --device-type rtlsdr --device 10900001 ...
この対策を施したところ、あれほど苦しめられたバッティングやオフライン病が嘘のように消え去り、再起動しても一発で正常稼働する鉄壁の環境が完成しました。
5. まとめと次回予告
「ラズパイでいけたから余裕」と油断した結果、Dockerのバッティングとデバイス認識の泥沼にハマり、Ubuntu Serverを3回とDebianも2回も入れ直すという壮絶な試練を味わいました。
※Linuxあるあるなのかもしれないが
しかし、その苦難を乗り越えてRTL-SDR Blog V3への刷新とシリアルナンバー固定を行ったおかげで、現在は那覇上空の航空機データを24時間休まず各サイトへ安定して送り届けてくれています。
さて、血の滲むような努力でPCサーバー側のADS-B環境が完璧に整ったところで、次回は「余ったチューナーを活用した船舶AIS(162MHz)の同時受信への挑戦」をお届けする予定です。空だけでなく海の世界も追いかけるシステム構築のプロセスをご紹介しますので、どうぞお楽しみに!








コメント