Computer & RF Technology

bladeRFをgnuradioとgr-osmocomで使ってみる

先日bladeRF用のライブラリをビルドした際ソースの構成が変わっていて、gr-osmosdr側ではビルドできなくなっていましたが、8/28に入った修正により対応したようです。なのでgr-osmosdrをビルドする方法の続きです。すでにbladeRFのライブラリがインストール済であることが前提です(前の記事参照)。

gr-osmocomのソースをgithubから取得します。

$ git clone git://git.osmocom.org/gr-osmosdr

すでに取得済なのであればfetch/mergeしておきます。

$ cd gr-osmosdr
$ git fetch
$ git merge origin/master

新しいbladeRFへの対応が含まれていることを確認します。

$ git log
commit 265de87c45cb546f656f810be7c01d182c65f03f
Author: Dimitri Stolnikov <horiz0n@gmx.net>
Date:   Tue Aug 27 22:37:08 2013 +0200

    bladerf: follow recent API changes

cmakeでMakefileを生成します。

$ mkdir build
$ cd build
$ cmake ..

enabled componentsにbladeRFが含まれていることを確認しておきます。

\-- ######################################################

-- # gr-osmosdr enabled components                         
-- ######################################################
...
--   \* nuand bladeRF

ビルド、インストールしておきます。

$ make
$ sudo make install

gr-osmocomには、osmocom_fftやosmocom_siggenなどいくつかgnuradioを使用したコマンドが含まれていますので、これを試してみます。

USBにbladeRFを接続してFPGAのイメージをロードしておきます。

$ bladeRF-cli -b -l hostedx40.rbf 
Loading fpga...
Done.

成功するとLEDが点滅し始めるはずです。

osmocom_fftコマンドを起動すると下のようなウインドウが現れ、いきなり動作を開始します。

$ osmocom_fft

周波数やゲインなど各種設定をいろいろ試すことができます。相変わらずDCオフセットは出ています。GUIから設定を変えることもできますが、コマンドラインからもいろいろ設定できるようです。

$ osmocom_fft -h
Usage: osmocom_fft \[options\]

Options:
  -h, --help            show this help message and exit
  -a ARGS, --args=ARGS  Device args, \[default=\]
  -A ANTENNA, --antenna=ANTENNA
                        Select RX antenna where appropriate
  -s SAMP_RATE, --samp-rate=SAMP_RATE
                        Set sample rate (bandwidth), minimum by default
  -f FREQ, --center-freq=FREQ
                        Set frequency to FREQ
  -c FREQ_CORR, --freq-corr=FREQ_CORR
                        Set frequency correction (ppm)
  -g GAIN, --gain=GAIN  Set gain in dB (default is midpoint)
  -W, --waterfall       Enable waterfall display
  -S, --oscilloscope    Enable oscilloscope display
  --avg-alpha=AVG_ALPHA
                        Set fftsink averaging factor, default=\[0.1\]
  --averaging           Enable fftsink averaging, default=\[False\]
  --ref-scale=REF_SCALE
                        Set dBFS=0dB input value, default=\[1.0\]
  --fft-size=FFT_SIZE   Set number of FFT bins \[default=1024\]
  --fft-rate=FFT_RATE   Set FFT update rate, \[default=30\]
  -v, --verbose         Use verbose console output \[default=False\]

下は435Mにチューニングして、435.02MHzを入れてみたところです。

前回gnuradio-companionで試したときは両サイドに信号が見えていましたが、今回は大丈夫です。ライブラリのアップデートとFX3のファームウェアのアップデートをしていますが、それらで改善されたのかもしれません。

ゲインをいろいろいじってみると、それぞれちゃんと追従します。VGA2を半分以上に上げると飽和状態になるようです。前回飽和状態だったのはVGA2がgr-osmocomのデフォルトで20dBに設定されていたためのようです。

Sample Rateが160kHzに設定されている場合、160kHz毎にエイリアスが見えます。例えば435.02MHzと、435.18MHz、435.34MHz等々で同じ位置に信号が見えることになります。フィルタはあるのですがBandwidthの設定がデフォルトで28MHzとなっています。これを絞ろうとしても、これの設定が限られた値のみのようで、最小が1.5MHzです。一方Sample Rateは任意の値を設定可能なようですので、160kHzのように遅いレートの場合はエイリアスが避けられないようです。BWの最小が1.5MHzだとすると、サンプリングレートは同程度以上で使用すべきだと思います。

もう一つosmocom_siggenを試してみます。その名のとおりSGのようです。

周波数や多少のレベル設定、いくつかの変調ができるようです。ホスト側の処理が重いようでVMwareでは厳しいようでしたが、キャリアと変調波が出てくるのは確認できました。

今回はgnuradioのアプリケーションであるgr-osmocom付属のアプリをちょっと試してみました。gnuradio-companionを使えばいろいろなコンポーネントを組み合わせて試せるはずです。

Macでのビルドも試しています。既にライブラリとコマンドはビルド成功し、gnuradioの環境を試行錯誤しています。環境が安定したらそちらでの作業に移りたいと思います。

Load more