Ubuntu PPA Installationの手順により,バイナリパッケージをインストール
これまでGNU Radioを稼働させていたPCが5~6年ほど経過して,さすがに古くなってきていた.Ubuntu16.04時代からUbuntu20.04まで,Ubuntuを新規インストールしながら使ってきたPCもある.新調したPCにUbuntu 22.04.3 LTSをインストールして,GNU Radio環境を新たに構築する.今回は,Ubuntu PPA Installationの手順により,最新のバイナリパッケージをインストールする.GNU Radio Wiki(公式Wiki)での注意事項は下記である.
For Ubuntu, the latest builds (both released and pulled from master branch) are maintained as PPAs on launchpad. Be sure to uninstall any previously installed versions of gnuradio first. See UnInstallGR.
Note: We are no longer including PyBOMBS as a recommended method of installing GNU Radio, unless you want to play around with old versions (e.g. GR 3.7, 3.8, and OOTs of matching version)
公式Wikiでは,これまで一方ならずお世話になってきたPyBOMBSによるインストールは,もはや推奨されていない.新調したUbuntu22.04マシンでも,惰性でPyBOMBSによるGNU Radioのインストールを行ったが,より一般的な環境で検証する目的もあって,5~6年ぶりにバイナリパッケージのGNU Radioをインストールすることにした.
まずは,うっかりインストールしてしまったPyBOMBSをアンインストールする.
$ sudo pip uninstall pybombs
[sudo] user のパスワード:
Found existing installation: PyBOMBS 2.3.5
Uninstalling PyBOMBS-2.3.5:
Would remove:
/usr/local/bin/pybombs
/usr/local/lib/python3.10/dist-packages/PyBOMBS-2.3.5.dist-info/*
/usr/local/lib/python3.10/dist-packages/pybombs/*
Proceed (Y/n)? y
Successfully uninstalled PyBOMBS-2.3.5
WARNING: Running pip as the 'root’ user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
PyBOMBSを用いてGNU Radio 3.10.xをインストールしていたユーザのホームディレクトリで以下を実行し,PyBOMBSによりGNU Radioをインストールした痕跡を削除しておく.
$ rm -rf .gnuradio .pybombs ./gr310
続いて,公式Wikiの手順に従い,Personal Package Archives for Ubuntu(PPA)のほうの最新版のバイナリパッケージをインストールする.
$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases
$ sudo apt-get update
$ sudo apt install gnuradio
インストール作業はこれだけで,やはりバイナリパッケージインストールは簡単だ(その代わり融通が効かない面はある).上記のインストールは,PPAで準備されたバイナリパッケージを使っているので,Ubuntu標準のバイナリパッケージのGNU Radioとは異なる.そのため,公式Wikiには以下の注意書きがある.
Attention: Do NOT try to install further packages like gr-osmosdr
via Ubuntu’s package management (i.e. using “apt"). Ubuntu will try to install a potentially incompatible version and your system will be in an undefined state. Instead, please first open GNURadio-Companion, and in the right-hand side block list, open “Soapy" -> “Source" or “Sink", to see whether the hardware you are most likely using is already integrated.
PPAで準備されたある意味「ほぼ全部入り」のバイナリパッケージを使っているのだから,Ubuntuで通常のバイナリパッケージとして準備されている他のGNU Radio関連のバイナリパッケージをaptでインストールするな(混在させるな),と言うことなのでしょう.
しかし,USRP使用のためにuhd_find_devices,uhd_usrp_probe,uhd_config_infoなどのツール(コマンド)が必要なので,下記を実行した.
$ sudo apt install uhd-host
ADALM-PLUTO関連で,iio_attrコマンドを使いたいので,下記も実行する.
$ sudo apt install libiio-utils
USRPを使う際には,下記も必要のように思える.
$ sudo uhd_images_downloader
[INFO] Using base URL: https://files.ettus.com/binaries/cache/
[INFO] Images destination: /usr/share/uhd/images
[INFO] No inventory file found at /usr/share/uhd/images/inventory.json. Creating an empty one.
09146 kB / 09146 kB (100%) x4xx_x410_fpga_default-g26793b8.zip
21085 kB / 21085 kB (100%) x3xx_x310_fpga_default-g26793b8.zip
19610 kB / 19610 kB (100%) x3xx_x300_fpga_default-g26793b8.zip(以下,略)
上記の3つのコマンドのうち,aptを用いている2つが,「Attention: Do NOT try to install further packages」に該当するのかしないのか,よくわからない.いずれもGNU Radio本体のライブラリなどではなく,単なるツールなので,問題にはならないと考えている.以上,自身のための作業メモとして記載する.
上記の手順でインストールした状況で,最新版v0.37のファームウェアをインストールしたADALM-PLUTOがGNU Radio Companionで使用できることを確認した.PyBOMBSによるビルドとインストールのほうがよい点もあるが,GNU Radioの公式Wikiではバイナリパッケージも推奨されている.PyBOMBSの機能を必要としていた方々は,今後はRadiocondaをPyBOMBSの代わりに使って下さい,ということかもしれません.
以上に示したUbuntu PPA Installationでは,手軽に最新のGNU Radio環境を構築できる.教育や開発・研究などの目的でGNU Radioに向き合いたい方には,以上に示したUbuntu PPA Installationではなく,より柔軟性が高いradiocondaを用いたインストールをお勧めしたい.
ちなみに,今回(2023年10月10日現在)のPPAによるバイナリパッケージでは,下記のようにGNU Radio 3.10.7.0とUHD 4.1.0.5-3 がインストールされた.同じ時期のPyBOMBSによる gnuradio-default でのインストールでは,GNU Radio 3.10.8.0-rc1 とUHD 4.2.0.1がインストールされていた.
$ uhd_config_info --print-all
UHD 4.1.0.5-3
Build date: Mon, 28 Mar 2022 03:05:50 UTC
C compiler: GNU 11.2.0
C++ compiler: GNU 11.2.0
C flags: -DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_ASIO_DISABLE_STD_STRING_VIEW -DBOOST_ASIO_DISABLE_STD_EXPERIMENTAL_STRING_VIEW -DHAVE_CONFIG_H -DUHD_LOG_MIN_LEVEL=1 -DUHD_LOG_CONSOLE_LEVEL=2 -DUHD_LOG_FILE_LEVEL=2 -DUHD_LOG_CONSOLE_COLOR -DHAVE_DPDK -DHAVE_DPDK-g -O2 -ffile-prefix-map=/build/uhd-alyXio/uhd-4.1.0.5=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2
C++ flags: -DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_ASIO_DISABLE_STD_STRING_VIEW -DBOOST_ASIO_DISABLE_STD_EXPERIMENTAL_STRING_VIEW -DHAVE_CONFIG_H -DUHD_LOG_MIN_LEVEL=1 -DUHD_LOG_CONSOLE_LEVEL=2 -DUHD_LOG_FILE_LEVEL=2 -DUHD_LOG_CONSOLE_COLOR -DHAVE_DPDK -DHAVE_DPDK-g -O2 -ffile-prefix-map=/build/uhd-alyXio/uhd-4.1.0.5=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -fvisibility-inlines-hidden
Enabled components: LibUHD, LibUHD - C API, LibUHD - Python API, Examples, Utils, Tests, USB, B100, B200, USRP1, USRP2, X300, MPMD, SIM, N300, N320, E320, E300, X400, OctoClock, DPDK
Install prefix: /usr
Boost version: 1.74
Libusb version: 1.0.27
Library path: /lib/x86_64-linux-gnu
Package path: /lib
Images directory: /usr/share/uhd/images
ABI version string: 4.1.0