引き続き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
リファレンス
- OSX 10.6でGNURadioを使用する方法。このblogの最初の記事
- apple-gcc42などデフォルトのbrewには入っていないformula https://github.com/Homebrew/homebrew-dupes
- brewでgnuradioをインストールするformula https://github.com/titanous/homebrew-gnuradio
- bladeRFソース https://github.com/Nuand/bladeRF
- bladeRF開発元 nuand.com
- gr-osmosdr https://sdr.osmocom.org/trac/wiki/GrOsmoSDR