Computer & RF Technology

gnuradio 3.7をHomebrewでMac OSXにインストールする

さて、gqrxをソースからビルドしたいのですが、gqrxは内部でgnuradioを使用しています。最初インストール済だったgnuradio 3.6でgqrxをビルドしようとしたのですが、エラーで失敗してしまいました。最新のgqrxはgnuradio 3.7が必須なようです。これを機会にgnuradioのバージョンを3.7に上げることにしました。現在の最新版gnuradio-3.7.2.1を使用することにします。せっかくなのでbrewのFormulaを修正して、gnuradio 3.7をbrewでインストールできるようにしてみます。さらにbladerfの対応も付け加えたいと思います。

OSのバージョンは10.8を使用します。最新版のMarvericksではありませんが、その理由は後述します。

brewのフォーミュラですが、Tapとしてgithubで公開されているtitanous-gnuradioを元に、ttrftech-gnuradioとしてフォークしてgnuradio-3.7に対応するよう修正を加えます。変更点は以下です。

ソースアーカイブとしてhttps://gnuradio.org/releases/gnuradio/gnuradio-3.7.2.1.tar.gzを使用する。sha1ハッシュも合わせて修正します。

  • libusbの代わりにlibusbxを使用する
  • bladerfのサポートを追加(gr-osmosdr)
  • bladerfのフォーミュラを追加

gr-osmosdrモジュールについても、gnuradio-3.7を使用するように修正します。bladerfをサポートするようオプションを追加しました。

これらを使ってgnuradioをインストールします。もし既にgnuradioがインストールされているのであれば、unlink(ディセーブル)しておきます。またlibusbxを使いますので、もしlibusbがinstallされている場合はunlinkしておきます。また、titanous-gnuradioをtapしてある場合はuntapしておきます。そのうえでbrewをupdateしてから、改めてttrftech-gnuradioをtapして、gnuradioをインストールします。

$ brew unlink gnuradio
$ brew untap titanous/gnuradio
$ brew unlink libusb
$ brew update
$ brew tap ttrftech/gnuradio
$ brew install gnuradio

もしエラーが発生した場合には、-vdオプションを付けて、brew install gnuradio -vdしてエラーの内容を確認して対処します。

gnuradioのインストールが成功したら、続いてモジュールをインストールします。gr-osmocomのビルドの前に、rtlsdrやbladeRFなど各デバイス用のライブラリを先にインストールしておきます。gitリポジトリから直接インストールするため、–HEADオプションを付けます。

$ brew install rtlsdr bladerf --HEAD

Osmocomのgitサーバがbrewからのcloneに失敗するよう(shallow-fileオプションを使用するとサーバから切断されてしまう)なので、手作業でキャッシュにcloneしておいてから、改めてinstallすることで回避します。rtlsdrと次のgr-osmosdrが該当します。

$ git clone git://git.osmocom.org/rtl-sdr.git /Library/Caches/Homebrew/rtlsdr--git
$ git clone git://git.osmocom.org/gr-osmosdr /Library/Caches/Homebrew/gr-osmosdr--git 

成功したらgr-osmosdrモジュールをインストールします。

$ brew install gr-osmosdr --HEAD

brew installの際に-vdオプションを追加することで、cmakeの際のコンフィギュレーションが表示されるのを確認することができます。以下のような表示が現れるはずです。

\-- ######################################################
-- # gr-osmosdr enabled components
-- ######################################################
-- \* Python support
-- \* IQ File Source
-- \* Osmocom RTLSDR
-- \* RTLSDR TCP Client
-- \* nuand bladeRF
-- \* RFSPACE Receivers

gr-osmosdrのビルドの際に、Funcube Dongle(FCD)をリンクしようとしてエラーになっていました。デフォルトで無効になるようにしましたが、もし必要な場合はオプションで有効にすることができます。

gnuradioとgr-osmosdrのインストールが完了したらgnuradio-companionで動作を試してみます。

先日のFMラジオを動作させてみます。RTL-SDRとbladeRFのどちらも正常に動作させることができました。

フォーミュラにはgr-bazも用意されています。これもビルドを試みたのですが最新版では通りませんでした。しかしこのモジュールは使用していないので後回しにすることにします。他に有用なモジュールとしてgr-iqbalも追加しようとしたのですが、これもうまくいきませんでした。

環境として今回はOS 10.8を使用しました。OSXの最新版10.9(Marvericks)でも試してみたのですが、libc++のバージョンの差異によるエラーが発生してしまいました。MacPortsの方では解決できているようなので、もう少し試してみたいと思います。

引き続きgqrxのビルドですが、これは次回にしたいと思います。

リファレンス

Load more