SDR用のソフトウェアは、WindowsプラットフォームではSDR#やHDRなど優秀なものがいくつもありますが、Windows以外のプラットフォーム、特にUnixベースで動作するものは殆ど無く、知る限りGqrxが唯一かと思います。Windowsベースのものに比べると、機能は限られていますが、比較的良い使い勝手を提供しているソフトウェアだと思います。有り難いことにGqrxはMac OSXでも動作し、バイナリも配布されています。
今回は、bladeRFに対応させるためにソースコードからビルドします。そのために前回Gnuradioのバージョンアップを行いました。
Gqrxのソースコードはgithubで公開されていますので、まずはこれを見て下調べをします。README.mdにビルド方法が記載されているのでこれを確認します。
GqrxはGnuradioの他に、GUIツールキットとしてQtが必要です。Qtは、Homebrewで既に構築済のもの(Qt 4.8.5)を使用しました。Qtにはいくつかバージョンがあり、最新のQt5(これもHomebrewでインストール可能です)や、Qtの現在の所有者であるNokiaが配布しているQtSDKにも含まれています。いずれでもGqrxをビルドすることができました。若干差異があるようですので、後述します。
ソースをgitで取得します。
$ git clone git@github.com:csete/gqrx.git
ビルドはQtの方法で行います。プロジェクトファイルは、gqrx.proですが、これの内容がMacPortsによるパッケージ管理を前提とした内容になっており、/opt/localを使用しています。これをHomebrewの流儀に修正する必要があります(/usr/localを参照するようにする)。またAlexさんのホームディレクトリを直接参照しているので、これらのパスを修正します。修正した結果は下記のようになりました。
macx {
# macports
#INCLUDEPATH += /opt/local/include
# brew
INCLUDEPATH += /usr/local/include
LIBS += -L/usr/local/lib
# local stuff
#INCLUDEPATH += /Users/alexc/gqrx/runtime/include
#LIBS += -L/opt/local/lib -L/Users/alexc/gqrx/runtime/lib
プロジェクトファイルが修正できたらさっそくビルドします。ディレクトリを掘り(この例ではbuild)、qmakeでMakefileを生成して、makeします。このときに使用するqmakeを、適切なものを選ぶことによってQtのバージョンを選択することができます。この場合は、/usr/local/bin/qmakeを使用しています。
$ cd gqrx
$ mkdir build
$ cd build
$ qmake .. PREFIX=/usr/local
$ make
うまくビルドできたらbuildディレクトリ内にGqrx.appができているはずです。OSXのアプリケーションは、.appという拡張子の付いたディレクトリになっています。このままでも実行できますし、適当な場所にコピーすることでインストールすることもできます。
さっそくダブルクリックして実行してみます。コマンドラインから起動することも可能です。
$ open Gqrx.app
Gqrxは、何か対応ハードウェアが接続されていないと、起動に失敗するようです。RTLドングルを接続して動作確認します。
一番最初に起動した時にはこのようなデバイス設定ダイアログが表示されます。サンプルレートに注意して設定します。
起動直後はこんな画面です。見慣れたレイアウトですが、若干ウィジェットの類いがバランス悪い感じです。
QtのAboutダイアログです。4.8.5になっています。
動作させてみました。HFCONVを接続して、1440kHzのAM放送を受信しています。
無事Gqrxをビルドすることができました。
続いてbladeRFで試してみます。用意してあったgr-osmocomがbladeRF対応させているので、GqrxもbladeRFで動作するはずです。RTLドングルの代わりにbladeRFをUSBで接続してから、Gqrxを起動してみます。
接続を変更した直後、最初はなぜか起動に失敗します。
めげずにもう一度起動すると、再設定するかの確認が出て、
デバイス設定ダイアログが出てきます。ちゃんとbladeRFが選択項目に表示されています。
サンプルレートに注意して、OKします。USBとCPUの能力を考慮すると1M〜2Mくらいが適切だと思います。
ちゃんと動作しています。以下は300MHzのコンバータを通して、82.5MHzのFM放送を受信している様子です。LNAゲインを上げて、DC remのチェックを入れておくことをお勧めします。
チューニング周波数をずらして、オフセットすると左右対称なスペクトルになります。IQがまったくバランスしていない状態のようです。これはGNURadioやosmocom_fftを使った場合も同様でした。何かbladeRFのどこかに間違いがあるような気がします。
以上で今回の目的である、GqrxからbladeRFを使うことができることが確認できました。
ちょっと気になるのはQtの見かけがちょっと変なことです。バイナリで配布されているGqrxとはちょっと形が異なり、レイアウトも若干崩れています。試しに別なバージョンのQtで試してみました。まずはbrewでインストール可能なqt5を試してみます。brewでqtをunlinkしておき、qt5をinstallします。
$ brew unlink qt
$ brew install qt5
qt5は、/usr/local/binにインストールされず、/usr/local/opt/qt5/に入ります。qmakeするときにこのパスを直接指定するようにします。
$ cd gqrx
$ mkdir build-qt5
$ cd build-qt5
$ /usr/local/opt/qt5/bin/qmake .. PREFIX=/usr/local
$ make
無事にビルドできたら起動してみます。
今度は普通通りの見かけになりました。動作も普通通りに動いています。Aboutを開いてみると、Qtのバージョンは5.2でした。
もう一つ、Qtの環境があるのでついでに試してみます。Nokiaの開発者サイトに登録すると、QtSDKがダウンロードできるのですが、ちゃんとMac OSX版も用意されています。これをインストールすると、開発環境一式がセットで使えるようになります。QtSDK-1.2.1を使用しました。
QtSDKの場合はQt Creatorという統合環境を使うこともできます。Qt Creatorを起動して、プロジェクトとしてgqrx.proファイルを開きます。
設定ダイアログが表示されるので、QtSDKに含まれているQtの新しいバージョンを選択します。
Qt Creatorのメイン画面です。
メニューまたはボタンから、Build AllまたはRunを選ぶと、ビルドが行われ、Runを選んだ場合はアプリケーションの起動まで行われます。問題なくビルドは完了し、同様に動作させることができました。
統合環境を使わずに、コマンドラインでqmakeを使ってビルドすることも可能です。QtSDKはホームディレクトリ~/QtSDKにインストールされているので、下記のような手順になります。
$ cd gqrx
$ mkdir build-qtsdk
$ cd build-qtsdk
$ ~/QtSDK/Desktop/Qt/4.8.1/gcc/bin/qmake .. PREFIX=/usr/local
$ make
QtSDK(Qt Creator)では、Qtのバージョンは4.8.1でしたが、ウィジェットは普通通りでした。先ほどちょっと見かけが変だったのはbrewで入れたqtの場合だけのようです(qt5はOK)。
今回はGqrxのビルドが趣旨でしたが、Qtについての記載が長くなってしまいました。無事にソースからビルドできるようになったので、適宜改造ができるはずです。Qtについてはよくわかっていない点もありますので、必要に応じて調べてみたいと思います。
リファレンス
- Gqrxの公式サイト https://gqrx.dk/
- ソース https://github.com/csete/gqrx
- Homebrew向けに修正したソース https://github.com/ttrftech/gqrx
- Nokia Developper SiteのQtSDKダウンロード https://developer.nokia.com/info/sw.nokia.com/id/da8df288-e615-443d-be5c-00c8a72435f8/Qt_SDK.html
- Qtの公式サイト。Qt Creatorはこちらからもより新しいバージョンがダウンロードできるようです。 https://qt-project.org/