Computer & RF Technology

bladeRFとGNURadioをMac OSX用に構築する

引き続きbladeRFを試していますが、Macでも使えるようになりましたのでメモしておきます。以前OSX 10.6でGNURadioをセットアップしましたが、最新のMountain Lion 10.8でもセットアップできました。

bladeRFのコードは毎日のように更新されていますが、先日のアップデートでlibusb対応になりLinuxカーネルドライバが不要になりました。WindowsやMac OSXでもコード上の互換性は問題無くなったはずですが、公式サイトやフォーラムでは、Mac OSXでの利用法がまだ出ていませんが、試してみたところうまくいったのでそのまとめです。

使用した環境ですが、Mountain Lion(OSX 10.8.4)で、Xcode 4.6環境です。コンパイラとしてXcodeのPreference>Downloads>ComponentsからCommand Line Toolsをインストールしておきます。

パッケージ管理はbrew環境を用意します。最初はおまじないでgitからrubyスクリプトをダウンロードして実行しておきます。

$ curl -fsSk https://raw.github.com/mxcl/homebrew/go | ruby

brewがインストールできたら、最初にdoctorで確認しOKならupdateしておきます。

$ brew doctor
$ brew update

bladeRFのビルドに必要なcmakeとlibusb、libteclaをインストールしておきます。

$ brew install cmake libusb libtecla

bladeRFのソースをgitで用意します。

$ git clone https://github.com/Nuand/bladeRF.git
$ cd bladeRF

hostディレクトリの中身をビルドします。OSXでudevは不要なのでOFFにしておきます。

$ cd host
$ mkdir build
$ cd build
$ cmake -DINSTALL_UDEV_RULES=OFF ..
$ make

ビルドが成功したらインストールします。共有ライブラリlibbladeRF.dylibとヘッダbladerf.h、コマンドラインツールbladeRF-cliが/usr/local/bin,/usr/local/lib等にインストールされます。

$ sudo make install

さっそくコマンドラインツールのbladeRF-cliを試してみます。

$ bladeRF-cli
bladeRF> probe

    Backend:        libusb
    Serial:         
    USB Bus:        253
    USB Address:    4

bladeRF> version

Serial #: ba5054da746a5f1a3f7e8516447afd75
VCTCXO DAC calibration: 0x996b
FPGA size: 40 KLE
Firmware version: 1.1
FPGA version:     Unknown (FPGA not loaded)

bladeRF> 

うまく動いているようであれば、FPGAファイルをダウンロードして、ボードにロードしてみます。

$ curl -O https://nuand.com/fpga/ddc81d0fb1b653227b5824d8d5fcb444556da175/hostedx40.rbf
$ bladeRF-cli -l hostedx40.rbf

次にGNURadioをインストールします。依存ツールやライブラリの依存があるので順に入れて行きます。

最初にbrewでpythonをインストールしておきます。

$ brew install python

次にpipでpython関係のパッケージをインストールします。

$ pip install numpy scipy matplotlib Cheetah lxml

GUIウィジェットセットとしてwxmacをインストールします。

$ brew install wxmac --python

Mountain LionからX11が含まれなくなりましたので、XQuartzを別途インストールする必要があります。https://xquartz.macosforge.org/landing/ から、 XQuartz-2.7.4.dmgをダウンロードしてインストールします。

XQuartzのインストールが終わったら一度ログアウトして再ログインが必要なようです。

gnuradioの構築にはapple-gcc42が必要なのですが、brew tapで外部のFormulaを取り込んでinstallします。

$ brew tap homebrew/dupes
$ brew install apple-gcc42

以上準備が整ったら、いよいよgnuradioをインストールしますが、これも外部のFormulaが必要ですのでtapしてからインストールします。

$ brew tap titanous/homebrew-gnuradio
$ brew install gnuradio

gnuradioでbladeRFを使用するためにgr-osmosdrが必要となります。これもbrewからインストールすることができます。bladeRFのライブラリがインストール済であれば、bladeRF対応でコンパイルされます。最新版を取得するため–HEADオプションを付けてinstallします。

$ brew install rtlsdr gr-osmosdr --HEAD

以上でインストールは完了です。

gr-osmosdrにはいくつかアプリケーションが付属していますのでosmocom_fftを試してみます。

もうひとつosmocom_siggenも試してみます。

キャリアが出てくるのは確認できました。ところがちょっと不安定なようで二回に一度はエラーになり動作しません。調べてみる必要がありそうです。

$ osmocom_siggen
gr-osmosdr v0.0.x-xxx-xunknown (0.0.3git) gnuradio 3.6.5.1
built-in sink types: bladerf 
Using nuand LLC bladeRF #0 SN ba5054da746a5f1a3f7e8516447afd75 FPGA v0.0
bladerf_enable_module has returned with -5
set_sample_rate has failed to set integer rate, error -5

リファレンス

Load more