bladeRFのホスト用のソフトウェアはソースからビルドする必要があります。8/25に開発バージョンがマージされて若干手順が変わりました。アップデートされたバージョンではlibusbがサポートされました。デフォルトではこちらが有効になり、カーネルドライバが不要になりました。新しいバージョン向けに手順をまとめておきます。
使用した環境はUbuntu 13.04です。あらかじめ開発用ツール群をインストールしておきます。
$ sudo apt-get install build-essential
https://github.com/Nuand/bladeRF/tree/master/host に記載されている手順に従ってコンパイルを進めます。まず、必要なツールと依存ライブラリをインストールしておきます。
$ sudo apt-get install libusb-1.0.0 libusb-1.0.0-dev cmake
コマンドインタラクティブモードをサポートするためのオプションのライブラリをインストールしておきます。
$ sudo apt-get install libtecla1-dev
bladeRFソースコードをgithubから取得します。
$ git clone https://github.com/Nuand/bladeRF.git
hostディレクトリで、cmakeしてmake, make installします。
$ cd bladeRF/host
$ mkdir build
$ cd build
$ cmake ../
$ make
$ sudo make install
共有ライブラリがインストールされるのでldconfigを実行しておきます。
$ sudo ldconfig
さて、いよいよ実行ですが、bladeRF-cliコマンドからbladeRFが認識されるかどうか試してみます。内部コマンドprobeやversionで各情報が表示されます。
$ bladeRF-cli
bladeRF> probe
Backend: libusb
Serial:
USB Bus: 1
USB Address: 19
bladeRF> version
Serial #: ba5054da746a5f1a3f7e8516447afd75
VCTCXO DAC calibration: 0x996b
FPGA size: 40 KLE
Firmware version: 1.1
FPGA version: 0.0
bladeRF> quit
動作させるためにはFPGAへのロードが必要です。ファイルをダウンロードしておきます。
$ wget https://nuand.com/fpga/ddc81d0fb1b653227b5824d8d5fcb444556da175/hostedx40.rbf
bladeRF-cliコマンドでFPGAファイルをロードしてみます。うまく行けば、bladeRFボード上に三つ並んだLEDが点滅し始めるはずです。
$ bladeRF-cli -l hostedx40.rbf
Loading fpga...
Done.
bladeRF>
help setコマンドで設定可能なパラメータの一覧が表示されます。
bladeRF> help set
set
The set command takes a parameter and an arbitrary number of
arguments for that particular command. The parameter is one
of:
bandwidth Bandwidth settings
config Overview of everything
frequency Frequency settings
lmsregs LMS6002D register dump
loopback Loopback settings
mimo MIMO settings
pa PA settings
pps PPS settings
refclk Reference clock settings
rxvga1 Gain setting of RXVGA1 in dB (range: )
rxvga2 Gain setting of RXVGA2 in dB (range: )
samplerate Samplerate settings
trimdac VCTCXO Trim DAC settings
txvga1 Gain setting of TXVGA1 in dB (range: )
txvga2 Gain setting of TXVGA2 in dB (range: )
bladeRF>
次のような操作をすると受信を開始して、サンプルをファイルに保存できます。
bladeRF> set frequency 1000000000
bladeRF> set samplerate 1000000
bladeRF> rx config file=samples.bin format=bin n=10000
bladeRF> rx start
bladeRF> quit
ファイルが生成されることを確認しておきます。
$ ls -ln samples.bin
-rw-rw-r-- 1 1000 1000 40960 Aug 27 02:02 samples.bin
もしファームウェアのバージョンが低いと表示された場合には、下記のようにFX3のバイナリイメージをダウンロードして、-fオプションでフラッシュへ書き込んでおきます。
$ wget https://nuand.com/fx3/latest.img
$ bladeRF-cli -b -f latest.img
はまったポイントとして、前のバージョンでは共有ライブラリlibbladeRF.soが、/usr/libにインストールされていたのですが、新しいバージョンでは/usr/local/libに変更されていました。新しいのに差し替えた際に、場所が違うため上書きされず前のものが残っていたため、bladeRF-cliを動かしたときに古い共有ライブラリがロードされ、動作せずに悩みました。/usr/lib/libbladeRF.soを消してldconfigし直すことで解決しました。
次はgnuradioのセットアップです。最新のgnuradio-3.7.1をインストールするために、ディストリビューションに含まれているものではなく、https://nuand.com/forums/viewtopic.php?f=9&t=2804#p3397 の後半に記載されている手順に従い、スクリプトをダウンロードして自動的にセットアップを行います。
$ mkdir gnuradio-build
$ cd gnuradio-build
$ wget https://www.sbrac.org/files/build-gnuradio
$ chmod +x build-gnuradio
$ ./build-gnuradio -m prereqs gitfetch
つづいて、gr-osmosdrです。ソースをgitで取得してcmakeします。
$ git clone git://git.osmocom.org/gr-osmosdr
$ cd gr-osmosdr/
$ mkdir build
$ cd build
$ cmake ..
このときbladeRFのサポートが入ることを確認します。
\-- ######################################################
-- # gr-osmosdr enabled components
-- ######################################################
...
-- \* nuand bladeRF
ここでmakeしますが、なんと現段階ではまだgr-osmosdrが新しいbladeRFのライブラリの変更に対応していないようです。なのでmakeに失敗してしまいます。というわけで、現時点では配布されているソースではbladeRFをgnuradioからは利用できなくなっています。libusb対応が入る前の版では使えていたのにもかかわらず残念です。
また状況が変化したら追記したいと思います。