こちらの記事について、内容・翻訳・視点・長さなど、皆様のご意見をお送りください。今後の記事製作の参考にしたいと思います。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
こちらの記事の感想をお聞かせください。
GNU RadioのインストールとUSBテレビチューナによる航空機用レーダーの受信
Raspberry Piは、その手頃な価格、容易に使用できるGPIOに加え、熱意と創意にあふれたコミュニティにより、数え切れないほど多くの独創的な用途に使用され、単純に楽しむためのものから高度で難解なものまで、幅広い用途を生み出してきました。
しかし、シングルコアのRaspberry Piは万人にとって万能だったわけではなく、高い処理能力が必要な用途向けに処理能力をもう少し高めて欲しいというのがユーザー共通の願いでした。その良い例がソフトウェア無線(SDR)です。SDRでは、通常ハードウェアに実装されるコンポーネントがソフトウェアに実装されます。この結果、柔軟性が高まりますが、コンピュート処理も膨大になります。
Raspberry Pi 2モデルBは、クアッドコアプロセッサと1GBのRAMを備えており、前モデルと比較して約6倍のパフォーマンスを発揮するため、SDR用途への適合性がはるかに高くなるはずです。
Installing GNU RadioGNU Radioのインストール
GNU Radio SDRツールキットは非常に充実したコードベースですが、その分依存性も高くなります。幸い、Raspbianパッケージが「jessie」テストバージョンで提供されています。これは現行の「wheezy」バージョンでは使用できません。Raspberry Pi 2に付属のMicroSDカードはwheezyをベースにしていますが、Apt構成に1行追加するだけでjessieパッケージを使用できるようになります。
/etc/apt/sources.listを編集して、下記の行を追加します。
deb http://archive.raspbian.org/raspbian jessie main
Aptキャッシュを更新します。
$ sudo apt-get update
GNU Radioのランタイムファイルと開発ファイルをインストールします。
$ sudo apt-get install gnuradio gnuradio-dev
RTL-SDRの設定
£10程度で手に入る、なんの変哲もないUSBテレビチューナドングルとオープンソースSDRソフトウェアを併用することで発揮される性能には、本当に驚かされます。上の画像は、そのようなチューナをUSBポートの1つに接続し、付属のアンテナを接続した状態のRaspberry Pi 2です。rtl-sdrの詳細については、2012年に私が書いた投稿記事をご覧ください。
Linuxカーネルでサポートされているテレビ受信専用のチューナを他の目的に使用するためには、まずカーネルがテレビ受信を行わないよう設定する必要があります。
/etc/modprobe.d/raspi-blacklist.confファイルを編集して、下記の行を追加します。
blacklist dvb_usb_rtl28xxu
rtl-sdrソフトウェアとGNU Radioサポートをインストールします。
$ sudo apt-get install rtl-sdr gr-osmosdr
非rootユーザーとしてデバイスにアクセスするために、新しいudevルールを設定する必要がありますが、まずUSB IDを確認する必要があります。チューナが接続されていることを確認し、下記を入力します。
$ lusb
次が返されます。
Bus 001 Device 004: ID 0bda:2832 Realtek Semiconductor Corp. RTL2832U DVB-T
次に、下記の行を使用して、 /etc/udev/rules.d/20.rtlsdr.rulesファイルを作成します。
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2832", GROUP="adm", MODE="0666", SYMLINK+="rtl_sdr"
この時点でudevを再起動することができますが、カーネルモジュールもブラックリストに入れたため、単に再起動するのが最も簡単でしょう。
シンプルなテスト
gr-osmocomソフトウェアの一部として提供されるFFTアプリケーションを実行することで、シンプルなスペクトラム表示を使用できます。
$ osmocom_fft
その後、CPUの負荷を確認すると、十分な空き容量があり、1コアのみが約70%前後の使用率になっていることがわかります。
gr-air-modes
およそ2年半前、rtl-sdrハードウェアとGNU Radioベースのgr-air-modesソフトウェアを併用して、航空機のモードSトランスポンダから位置情報やヘディング情報を受信する方法を投稿しました。その際、ノート型パソコンを使用しましたが、Raspberry PiモデルBの使用も試したところ、処理能力不足でバッファアンダーランが発生してしまいました。
gr-air-modes をビルドするために、いくつか依存ファイルを追加する必要があります。
$ sudo apt-get install sqlite pyqt4-dev-tools liblog4cpp5-dev swig
これらをインストールしたことで、GitHubからソースをクローンできます。
$ git clone https://github.com/bistromath/gr-air-modes.git
次に、ビルドとインストールを実行します。
$ cd gr-air-modes
$ mkdir build
$ cd build
$ cmake ../
$ make
$ sudo make install
$ sudo ldconfig
その後、下記のコマンドを使用してアプリケーションを実行できます。
$ modes_rx -s osmocom
小型アンテナしかなくても、また最も近い空港までかなりの距離があっても、完全な出力を得ることができます。
もちろん、繰り返しになりますが、処理能力にも十分な余裕があります。
まとめ
Raspberry Pi 2は、第1世代のハードウェアと比べて著しく進歩しています。コアが1つから4つに増え、各コアには新しくパワフルなARMアーキテクチャが採用されています。パフォーマンスの向上は、大勢のユーザー、とりわけSDR用途を考えているユーザーに歓迎されることでしょう。