Computer & RF Technology

bladeRF用のツールとライブラリをLinuxでビルドする

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対応が入る前の版では使えていたのにもかかわらず残念です。

また状況が変化したら追記したいと思います。

Load more