DesignSpark Electrical Logolinkedin
  • Brought to you by
  • RS Components
  • Allied Electronics

February 2, 2015 09:27

Follow

GNU RadioによるRaspberry Pi 2のテストドライブ

title

GNU RadioのインストールとUSBテレビチューナによる航空機用レーダーの受信

Raspberry Piは、その手頃な価格、容易に使用できるGPIOに加え、熱意と創意にあふれたコミュニティにより、数え切れないほど多くの独創的な用途に使用され、単純に楽しむためのものから高度で難解なものまで、幅広い用途を生み出してきました。

しかし、シングルコアのRaspberry Piは万人にとって万能だったわけではなく、高い処理能力が必要な用途向けに処理能力をもう少し高めて欲しいというのがユーザー共通の願いでした。その良い例がソフトウェア無線(SDR)です。SDRでは、通常ハードウェアに実装されるコンポーネントがソフトウェアに実装されます。この結果、柔軟性が高まりますが、コンピュート処理も膨大になります。

Raspberry Pi 2モデルBは、クアッドコアプロセッサと1GBのRAMを備えており、前モデルと比較して約6倍のパフォーマンスを発揮するため、SDR用途への適合性がはるかに高くなるはずです。

title

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

title

RTL-SDRの設定

title

£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を再起動することができますが、カーネルモジュールもブラックリストに入れたため、単に再起動するのが最も簡単でしょう。

シンプルなテスト

title

gr-osmocomソフトウェアの一部として提供されるFFTアプリケーションを実行することで、シンプルなスペクトラム表示を使用できます。

$ osmocom_fft

その後、CPUの負荷を確認すると、十分な空き容量があり、1コアのみが約70%前後の使用率になっていることがわかります。

title

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

小型アンテナしかなくても、また最も近い空港までかなりの距離があっても、完全な出力を得ることができます。

title

もちろん、繰り返しになりますが、処理能力にも十分な余裕があります。

title

まとめ

Raspberry Pi 2は、第1世代のハードウェアと比べて著しく進歩しています。コアが1つから4つに増え、各コアには新しくパワフルなARMアーキテクチャが採用されています。パフォーマンスの向上は、大勢のユーザー、とりわけSDR用途を考えているユーザーに歓迎されることでしょう。

Andrew Back

Open source (hardware and software!) advocate, Treasurer and Director of the Free and Open Source Silicon Foundation, organiser of Wuthering Bytes technology festival and founder of the Open Source Hardware User Group.

February 2, 2015 09:27

Follow