用意したハード
- Raspberry Pi Zero 2 W
- Nooelec NESDR SMArt v4
- アンテナ(D130)
ラズパイのセットアップ
いつも通りRapsberry Pi Imagerを使ってSDカードにOSを書き込む。
予めWiFiの接続設定とSSHの設定を行いモニタを接続せずに進めます。
今回はRaspberry Pi OS(32-bit)を選択。Zero 2 WはCortex-A53搭載なので64bitでも大丈夫そう。
あと今回はミスってRaspberry Pi OS Liteではなく通常の必要のないデスクトップ版を入れています。(ここガバ)
下記コマンドでGUIは後からオフにしました。
sudo raspi-config nonint do_boot_behaviour B1
sudo reboot
再起動後下記コマンドでCLIブートかGUIブートを確認
raspi-config nonint get_boot_cli
CLIなら0が、GUIなら1が返ります。
dump1090-faのビルド
Flightrader24やFlightAwareのバックで使われているデコードアプリはdump1090やそのフォークのdump1090-mutability、更にそのフォークのdump1090-faらしい。Flightrader24の自動セットアップスクリプトを使うとmutabilityの方が入ってしまうので今回は別個でdump1090-fa単体からまずは導入したいと思います。ラズパイでdump1090-faを実行しデコードしたデータは各データタイプ毎に設定した各ポートから吐くことができるので、追加でフィード先を増やしたり、他のクライアントからデータを取るにせよとりあえずdump1090-faを導入し信号の受信を確認できればまず問題がないということが確認できるため。
完全に参考元からの受け売りですがDebian用パッケージとしてビルドを行う。
git clone https://github.com/flightaware/dump1090 dump1090-fa
cd dump1090-fa
# 通常ビルド
dpkg-buildpackage -b --no-sign
# RTL-SDRレシーバ専用でのビルド
dpkg-buildpackage -b --no-sign --build-profiles=custom,rtlsdr
少し待てば(実測3分弱)ビルドが完了し親ディレクトリにdump1090-fa_○.○_armhf.debが作成されるはず。(今回は32-bitなので)
インストールを行います。
sudo dpkg -i dump1090-fa_7.2_armhf.deb
systemctlで有効化と起動を行う。
sudo systemctl enable dump1090-fa.service
sudo service dump1090-fa start
動作確認
Raspberry Pi Zero 2 W本体へチューナーとアンテナを接続する。
ラズパイZeroのUSBポートは端よりにあるのが電源用で中央よりが通信用ポートなので逆にするとデバイスと電源を逆に接続すると起動はできるけどデバイスを認識できなかったりするから気をつけよう!(ガバ2)
デバイスを接続しちゃんと認識できていればlsusbで下記のような結果が表示される。
$ lsusb
Bus 001 Device 002: ID 0bda:2832 Realtek Semiconductor Corp. RTL2832U DVB-T
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
RTL2832Uが見えているから問題なさそう。
ちなみにSDRチューナーを挿す前にdump1090-faを起動させようとするとデバイスが見つからずプロセスが再起動を繰り返すかもしれないので先に接続したほうがいいかもしれない。
http://IPアドレス/skyaware/に接続するとこんな画面が確認できるはず。
以上で動作確認完了!FR24とかFlightAwareへのフィード方法は気が向いたら書きたいけど日本語記事いくらでもあるしまあ…
ちなみにかなり雑な設置方法をしている。
参考サイト
こちらのがとらぼさんは各種サイトとの連携やアンテナの自作、Prometheusとの連携などかなりされているのでADS-B受信でやりたいことはここ見れば全部できるので今回の記事は実質ここからコピペした内容の自分用メモみたいな感じで独自性はないです。はい。