先日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の環境を試行錯誤しています。環境が安定したらそちらでの作業に移りたいと思います。
- github.com/bladeRFのコミットログ。毎日のように更新があります。 https://github.com/Nuand/bladeRF/commits/master
- gr-osmosdrの変更履歴 https://cgit.osmocom.org/gr-osmosdr/log/
- osqzssさんがbladeRFでGPSにチャレンジされています https://blog.goo.ne.jp/osqzss/e/b47fae33b273f3ae769957eb74c20a8f