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 Source
とPlutoSDR 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
の中でも前に書いたものが優先されるのでこの点に注意すること。)