ADALM-PlutoをGNU Radioから使えるようにする

Ubuntu20.04で実施

libiioのインストール

前の記事を参考にしていただけると良いかと思います。

gr-iioをインストール

事前にgnu-radio本体が必要(2021/10時点ではv3.8.1がインストールされる)

sudo apt install gnuradio

以下を事前にインストール

sudo apt install bison flex cmake git libgmp-dev swig liborc-dev
git clone -b upgrade-3.8 https://github.com/analogdevicesinc/gr-iio.git
cd gr-iio
cmake .
make 
sudo make install
cd ..
sudo ldconfig

上記make install中にpythonのライブラリのインストール先が出ているはずなのでそこにパスを通してやる。

export PYTHONPATH=$PYTHONPATH:/usr/lib/python3/dist-packages

(適宜、.bashrcなどに追記すべし。また、環境によってPATHは異なる。)

ここまで実行するとGNU Radioを開きブロック一覧を確認するとPlutoSDR SourcePlutoSDR Sinkなるブロックが利用可能になっているはず。

補足

GNU Radioでブロック実行時にiioのインポート周りでエラーが出る場合、~/.local/lib/python${PYTHON_VERSION}${site_or_dist}-packages/にあるiio.pyを移動またはリネームしてみると解決する可能性がある。

(2021/11/2追記) どうやらlibiioのインストールで入るiio.pyとgr-iioのインストールで入るiioモジュールが同じ名前であるせいで衝突しているようである。

pythonのadiモジュールで必要なのは前者のみ、gnu-radioで用いられるのは後者のみなので片方しか用いない場合、リネーム/削除でも良さそうだがどちらも同じ環境で使用している場合、環境変数などを用いて参照先を変えると良さそう。

例えば上記.bashrcでの環境変数の書き込みを行わずに、gnuradio起動時に

$ PYTHONPATH=/usr/lib/python3/dist-packages:$PYTHONPATH gnuradio-companion

などとして環境変数をオーバーライドしてあげるなどすればうまく動作するはず。

(pythonのモジュールの探索は「カレントパス=>$PYTHONPATH=>sys.path」の順で行われるみたい。また$PYTHONPATHの中でも前に書いたものが優先されるのでこの点に注意すること。)

2023 mu2chn CC BY-NC 4.0
Built with Hugo
Theme Stack designed by Jimmy