bladeRFはカバー範囲が300M~3.8Gと広いのですが、RTLドングルでHFが受信できないのと同様に、bladeRFではVHF以下をカバーしていない弱点があります。そこでアップコンバータによる受信を試してみました。
キットとして頒布しているHFコンバータを改造して、先日作成したPLLシンセサイザにより300MHzを生成し、これをローカルとして使うようにしてみました。このハードウェアとgnuradioを使って、bladeRFによるFMラジオの受信を試してみました。
コンバータですが、クリスタルを取り付ける代わりに、同軸ケーブルでローカルを入れるようにしてみます。このSMAコネクタ付きの同軸ケーブルは、頒布している変換ケーブルを中間で切断したものです。
出力のフィルタは、300MHz以上のHPFになるよう定数を変更しています。手持ちにあったLとCで4.7pF/27nH/6pF/27nH/4.7pFにしました。入口のフィルタはとりあえず省略というこでジャンパしています。つい習慣で基板にレギュレータやUSBコネクタを取り付けてしまいましたが、今回の実験では不要です。
改造ができたら、SMAコネクタをPLLシンセサイザと接続してみます。この状態で試してみたところ、ローカルの入力が過大でしたので、6dBのATTを入れています。
キット頒布しているコンバータではDBMのローカル入力にコンデンサによるマッチング回路を入れていました。これが無いと変換ロスが大きく使い物にならなかったためです。今回の実験でも、試しにこれを抵抗ATTのみに変更してみたところ、やはり変換ロスが著しく全く使えません。このDBMではローカルの入力に容量性の成分が必須なのかもしれません。
PLLシンセサイザは、電源を接続するだけで、動作するようにファームウェアの改造を行いました。USB経由で設定を行った際に、EEPROMに設定値を保存しておき、次回以後の起動時にこれを設定します。当然の機能ですが、実はさぼっていて実装していなかったのです。
設定はPCを接続して、コマンドラインからスクリプトを実行します。
$ ./adf4351usb.py 300e6
動作確認として、まずはRTLドングルで試してみます。SGから10MHzを入力して、310MHzが受信できるかどうかを確認します。
RTLドングル+300MHz PLL+コンバータでは-120dBm程度の信号なら受信できるようです。100MHzのクリスタルを使ったものと大きく差はないようです。
さて、周波数変換動作が確認できたら、bladeRFで受信ができるかどうか確認します。いつも使っているgqrxも実はbladeRFをサポートしているらしいのですが、配布されているバイナリには入っていないようですので、今回はGNURadioで試してみます。
ハードウェアの接続ですがコンバータからの出力をbladeRFのRXポートに接続します。アンテナはRTLドングルの付属ホイップアンテナです。bladeRFとPC(Mac)はUSB2.0で接続しています。PLLの電源はUSB電池ボックスです。コンバータには電源は不要です。
gnuradio-companionで、FMラジオを構成します。bladeRFからの信号の取得にはosmocom_sourceを使います。後述するDCオフセットの問題があるため、bladeRFの中心周波数をずらして受信し、後の処理で周波数をずらしてFM復調するようにしています。
FFTの画面ではこのようになります。82.5MHzのFM放送を受信している様子です。コンバータで300MHz上の382.5MHzに変換された後、bladeRFで382.0MHzで受信したのちに500kHzずらした状態をFFT表示しています。
-0.5MHzの位置に一つピークが見えていますがこれがDCオフセットです。osmocom_sourceにはDCオフセットキャンセルの設定があるのですが残念ながら効果が見られませんでした。
不十分なアンテナですが、FM放送程度の強い電波であれば受信はできました。bladeRFによる受信ですが、ゲイン設定によっては過大入力でスプリアスだらけになったり、逆にゲインが足りないとまったく受信できなかったりと、うまく動作させるためには、DCオフセットの件も含めてかなり気を使う必要があります。これを経験するとRTLドングルはとても優秀なんだということがわかります。
メモ
久しぶりにbladeRFを使ったので、ファームウェアの更新を行いました。以前はFPGAのイメージをUSB接続時に行う必要がありましたが、新しいFX3ファームウェアでは、自動ロードができるようになっていました。その他、受信性能等についてはあまり違うが感じられませんでした。
ファームウェアをダウンロード、flashへ書き込み、FPGAのイメージをflashへ書き込みする手順です。
$ curl -O https://www.nuand.com/fx3/bladeRF_fw_v1.5.3.img
$ bladeRF-cli -f bladeRF_fw_v1.5.3.img
Flashing firmware...
[INFO] Erasing 0x00020000 bytes starting at address 0x00000000.
[INFO] Writing 0x00020000 bytes to address 0x00000000.
[INFO] Verifying 0x00020000 bytes at address 0x00000000
Done.
$ bladeRF-cli -L hostedx40.rbf
Flashing fpga...
[INFO] Erasing 0x00140000 bytes starting at address 0x00040000.
[INFO] Writing 0x00140000 bytes to address 0x00040000.
[INFO] Reading 0x00140000 bytes from address 0x00040000.
Done.
リファレンス
- nuand.com bladeRFの配布元 https://nuand.com/
- 改造に使ったコンバータキット
- ADF4351を使ったPLLシンセサイザの製作
- 愛用のSDRソフトウェアgqrxの配布元。linux/win/mac対応しています。 https://gqrx.dk/