Pocket SDRバージョン0.16以降の利用

category: gnss
tags: pocketsdr

はじめに

Pocket SDRは、元東京海洋大学の高須知二先生がGitHubで公開しているオープンソースのGNSSソフトウェア無線受信機です。ハードウェアの設計資料、ファームウェア、ソフトウェアから構成されています。ソフトウェアのコードは簡潔でわかりやすく、最新の信号を含む幅広い民間用GNSS信号を追尾・復号できる特長があります。Windows、Linux(Raspberry Pi OSを含む)、macOSで利用できます。

バージョン0.16以降では、Pocket SDRフロントエンド(FE)に加え、SoapySDRを介してUSRP、LimeSDR、bladeRF、PlutoSDR、RTL-SDRなどのハードウェアも利用できるようになりました。これらの利用方法は、公式README.mdに記載されています。

新しいバージョンでは処理が高速化され、解析できる信号や対応するハードウェアも増えました。そこで、旧バージョンから移行してみました。本記事で使用したバージョンは0.20です。

Windows

新たに対応したハードウェアを利用するには、SoapySDRと各機器に対応するドライバーやモジュールが必要です。Windowsでは、radiocondaをインストールすると、SoapySDRを含むソフトウェア無線環境をまとめて導入できます。

Pocket SDRのbinディレクトリーには、コンパイル済みのバイナリーファイルが用意されています。これらのバイナリーファイルは、SoapySDRのDLL(dynamic-link library)に依存するバイナリーファイルです。これらをそのまま利用するためには、radiocondaをインストールした上で、スタートメニューのradiocondaの項目からコマンドプロンプトを開き、実行します。

スタートメニューのradiocondaの項目

このコマンドプロンプトでは、プロンプトが(base) C:\Users\...のように表示されます。ここからpocket_trkなどのバイナリーを実行します。長いファイル名の入力の際、途中まで入力してTabキーを押すと、残りを補完できます。

radiocondaのコマンドプロンプトからPocket SDRを実行

radiocondaは、インストーラーをダウンロードしてダブルクリックすることでインストールできます。Windowsのパッケージマネージャーwingetを使う方法は、radiocondaを用いたソフトウェア無線環境構築にまとめました。

radiocondaのインストール

LinuxとRaspberry Pi OS

LinuxやRaspberry Pi OSでPocket SDRを利用するには、ソフトウェアを自分でコンパイルする必要があります。手順は、Pocket SDRのREADME.mdに記載されています。SoapySDRは、radiocondaだけでなく、Debian系のLinuxではaptからも導入できます。ヘッドレス(モニターやキーボードを接続しない状態)での利用を想定した導入手順は、radiocondaを用いたソフトウェア無線環境構築にまとめました。

Pocket SDR FEのみを使う場合や、収録済みのデータを解析する場合は、SoapySDRの対応を無効にしてビルドできます。USE_SOAPYは、radioconda自体ではなく、SoapySDRへの対応を切り替えるビルドオプションです。makeにUSE_SOAPY=0を指定すると、SoapySDRに依存しないバイナリーを作成できます。

私はDebianで、以下の手順を実行しました。まず、管理者権限で開発ツールとライブラリをインストールします。

apt update
apt install git gcc g++ make libusb-1.0-0-dev libfftw3-dev

次に、Pocket SDRのソースコードを取得し、そのルートディレクトリー(libやappがあるディレクトリー)で、一般ユーザーとして以下を実行します。

cd lib/build && make USE_SOAPY=0 && make USE_SOAPY=0 install && cd ../..
cd app && make USE_SOAPY=0 && make USE_SOAPY=0 install && cd ..

すでにビルドしたソースツリーで設定を変更する場合は、各ビルドディレクトリーでmake cleanを実行してから、再ビルドします。

&&は、直前のコマンドが成功した場合にだけ、次のコマンドを実行する演算子です。;で区切った場合とは異なり、途中のコマンドが失敗すると、同じ行の残りのコマンドは実行されません。生成されたバイナリーファイルは、binディレクトリーに配置されます。

macOS

macOSでも、Linuxと同様にコンパイルが必要です。USE_SOAPY=0を指定してビルドすると、SoapySDRに依存しないバイナリーを作成できます。HomeBrewインストールの際にコンパイラーもインストールしますので、Pocket SDRのREADME.mdに記述されている通り、libusbとfftwを追加としてインストールすれば、開発環境や必要なライブラリが揃います。

新たに対応したハードウェアを利用する場合は、SoapySDRを含む環境を準備します。radiocondaのインストール手順は、radiocondaを用いたソフトウェア無線環境構築にまとめました。

私は仕事にも趣味にもmacOSを使っていますが、GNU Radioを日常的に利用するのはこれからと考えています。そのため、Pocket SDRを使うたびにconda activate baseを実行するのは、やや面倒に感じました。そこで、SoapySDRに依存しないバイナリーを作成し、普段使っている複数のMacにrsyncでコピーして利用しています。

まとめ

Pocket SDRバージョン0.16以降では、SoapySDRを介して利用できるハードウェアが増えました。radiocondaは、そのための環境を導入する方法の一つです。

Pocket SDR FEの利用や収録済みデータの解析が目的であれば、USE_SOAPY=0を指定してビルドすることで、SoapySDRに依存しないバイナリーを作成できます。私はLinuxとmacOSでこの方法を利用しています。


関連記事