GR-ISDBT
ISDB-T (Integrated Services Digital Broadcasting - Terrestrial)
は日本の地デジで採用されている放送方式。
GR-ISDBT は GNURadio 上の ISDB-T の実装。
GNURadio は SDR (Sofrware Defined Radio) の OSS ツールキット。
ラジオ/テレビ、デジタル無線、衛星通信、レーダーなど様々なチャレンジがなされている。
今回は、GR-ISDBT を Ubuntu 20.04 でビルドできるかためしてみたが、うまくいかなかった記録。
環境
Ubuntu 20.04 LTS
ビルドにチャレンジ
ここに書いてある通りにしてみる
$ git clone https://github.com/git-artes/gr-isdbt.git
$ cd gr-isdbt
$ mkdir build
$ cd build
$ cmake ../
としてみるが
-- Build type not specified: defaulting to release.
-- Could NOT find Boost (missing: Boost_INCLUDE_DIR filesystem system) (Required is at least version "1.35")
CMake Error at CMakeLists.txt:78 (message):
Boost required to compile isdbt
ふむ。boost が必要なのですね。
まずは、
「CMake で Could NOT find Boost と言われる。 @Ubuntu 12.04 & 14.04」
https://qiita.com/HiromiS/items/a05d61a7b8cc6590ebe3
を見て、
$ sudo add-apt-repository ppa:boost-latest/ppa -y
を試してみたが・・・
取得:23 http://jp.archive.ubuntu.com/ubuntu focal-backports/universe amd64 DEP-11 Metadata [1,768 B]
エラー:24 http://ppa.launchpad.net/boost-latest/ppa/ubuntu focal Release
404 Not Found [IP: 91.189.95.85 80]
取得:25 http://security.ubuntu.com/ubuntu focal-security/main amd64 DEP-11 Metadata [24.5 kB]
取得:26 http://security.ubuntu.com/ubuntu focal-security/universe amd64 DEP-11 Metadata [58.3 kB]
取得:27 http://security.ubuntu.com/ubuntu focal-security/multiverse amd64 DEP-11 Metadata [2,464 B]
パッケージリストを読み込んでいます... 完了
E: リポジトリ http://ppa.launchpad.net/boost-latest/ppa/ubuntu focal Release には Release ファイルがありません。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
うまくいかなかったので今度は
「c++ - installing Boost for CMake in OpenPose in Ubuntu 20.04 - Stack Overflow」
https://stackoverflow.com/questions/65605733/installing-boost-for-cmake-in-openpose-in-ubuntu-20-04
を見て、
$ sudo apt install libboost-filesystem1.71-dev
としてみた。
$ cmake ../
-- Build type not specified: defaulting to release.
-- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found suitable version "1.71.0", minimum required is "1.35") found components: filesystem system
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Checking for module 'cppunit'
-- No package 'cppunit' found
-- Could NOT find CPPUNIT (missing: CPPUNIT_INCLUDE_DIRS)
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
CMake Error at CMakeLists.txt:129 (find_package):
By not providing "FindGnuradio.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Gnuradio",
but CMake did not find one.
Could not find a package configuration file provided by "Gnuradio"
(requested version 3.7.2) with any of the following names:
GnuradioConfig.cmake
gnuradio-config.cmake
Add the installation prefix of "Gnuradio" to CMAKE_PREFIX_PATH or set
"Gnuradio_DIR" to a directory containing one of the above files. If
"Gnuradio" provides a separate development package or SDK, be sure it has
been installed.
-- Configuring incomplete, errors occurred!
See also "/home/nanbuwks/Downloads/gr-isdbt/build/CMakeFiles/CMakeOutput.log".
と出たので cppunit を入れる。
その上で出るエラーに沿って、 doxygen も入れる。
$ sudo apt install libcppunit-dev
$ sudo apt-get install doxygen
どうかな・・・
$ cmake ../
-- Build type not specified: defaulting to release.
-- Found Doxygen: /usr/bin/doxygen (found version "1.8.17") found components: doxygen dot
CMake Error at CMakeLists.txt:129 (find_package):
By not providing "FindGnuradio.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Gnuradio",
but CMake did not find one.
Could not find a package configuration file provided by "Gnuradio"
(requested version 3.7.2) with any of the following names:
GnuradioConfig.cmake
gnuradio-config.cmake
Add the installation prefix of "Gnuradio" to CMAKE_PREFIX_PATH or set
"Gnuradio_DIR" to a directory containing one of the above files. If
"Gnuradio" provides a separate development package or SDK, be sure it has
been installed.
-- Configuring incomplete, errors occurred!
See also "/home/nanbuwks/Downloads/gr-isdbt/build/CMakeFiles/CMakeOutput.log".
ふむ。それでは gnuradio-dev を入れればいいかな・・・
$ sudo apt install gnuradio gnuradio-dev libcppunit-dev liblog4cpp5-dev swig
としてみたところ・・・
$ cmake ../
-- Build type not specified: defaulting to release.
CMake Error at CMakeLists.txt:129 (find_package):
Could not find a configuration file for package "Gnuradio" that is
compatible with requested version "3.7.2".
The following configuration files were considered but not accepted:
/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GnuradioConfig.cmake, version: 3.8.1.0
/lib/x86_64-linux-gnu/cmake/gnuradio/GnuradioConfig.cmake, version: 3.8.1.0
-- Configuring incomplete, errors occurred!
See also "/home/nanbuwks/Downloads/gr-isdbt/build/CMakeFiles/CMakeOutput.log".
ふむむ。
../CMakeLists.txt の 129行目、
find_package(Gnuradio "3.7.2" REQUIRED)
Gnuradio のバージョン指定が為されている。試しに以下のようにしてみたのだけれど・・・
find_package(Gnuradio "3.8.1.0" REQUIRED)
$ cmake ../
-- Build type not specified: defaulting to release.
-- Found LOG4CPP: /usr/lib/x86_64-linux-gnu/liblog4cpp.so
-- Checking for module 'gmp'
-- Found gmp, version 6.2.0
-- Found GMP: /usr/lib/x86_64-linux-gnu/libgmpxx.so
-- Checking for module 'mpir >= 3.0'
-- No package 'mpir' found
-- Could NOT find MPIR (missing: MPIRXX_LIBRARY MPIR_LIBRARY MPIR_INCLUDE_DIR)
-- Found MPLIB: /usr/lib/x86_64-linux-gnu/libgmpxx.so
-- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found suitable version "1.71.0", minimum required is "1.71.0") found components: date_time program_options filesystem system regex thread unit_test_framework
-- Found VOLK: Volk::volk
CMake Warning (dev) at /usr/lib/x86_64-linux-gnu/cmake/gnuradio/GnuradioConfig.cmake:48 (if):
if given arguments:
"ON"
An argument named "ON" appears in a conditional statement. Policy CMP0012
is not set: if() recognizes numbers and boolean constants. Run "cmake
--help-policy CMP0012" for policy details. Use the cmake_policy command to
set the policy and suppress this warning.
Call Stack (most recent call first):
CMakeLists.txt:129 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.
CMake Warning (dev) in /usr/lib/x86_64-linux-gnu/cmake/gnuradio/GnuradioConfig.cmake:
Policy CMP0011 is not set: Included scripts do automatic cmake_policy PUSH
and POP. Run "cmake --help-policy CMP0011" for policy details. Use the
cmake_policy command to set the policy and suppress this warning.
The included script
/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GnuradioConfig.cmake
affects policy settings. CMake is implying the NO_POLICY_SCOPE option for
compatibility, so the effects are applied to the including context.
Call Stack (most recent call first):
CMakeLists.txt:129 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.
--
-- Checking for module SWIG
-- Found SWIG version 4.0.1.
-- Found SWIG: /usr/bin/swig4.0
-- Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS) (Required is at least version "2")
-- PYTHON_EXECUTABLE not set - using default python3
-- Use -DPYTHON_EXECUTABLE=/path/to/python2 to build for python2.
-- Found PythonInterp: /usr/bin/python (found version "3.8.5")
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.8.so (found suitable exact version "3.8.5")
-- User set python executable /usr/bin/python
-- Configuring done
-- Generating done
-- Build files have been written to: /home/nanbuwks/Downloads/gr-isdbt/build
うまくいったのかな?
$ make
すると果てしない時間がかかって・・・
・
・
・
[ 91%] Building CXX object lib/CMakeFiles/test-isdbt.dir/qa_frequency_deinterleaver.cc.o
[ 92%] Building CXX object lib/CMakeFiles/test-isdbt.dir/qa_ofdm_sym_acquisition.cc.o
[ 94%] Linking CXX executable test-isdbt
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_tmcc_encoder.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt15qa_tmcc_encoder2t1Ev':
qa_tmcc_encoder.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_tmcc_encoder.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_energy_dispersal.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt19qa_energy_dispersal2t1Ev':
qa_energy_dispersal.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_energy_dispersal.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_byte_interleaver.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt19qa_byte_interleaver2t1Ev':
qa_byte_interleaver.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_byte_interleaver.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_carrier_modulation.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt21qa_carrier_modulation2t1Ev':
qa_carrier_modulation.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_carrier_modulation.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_hierarchical_combinator.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt26qa_hierarchical_combinator2t1Ev':
qa_hierarchical_combinator.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_hierarchical_combinator.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_time_interleaver.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt19qa_time_interleaver2t1Ev':
qa_time_interleaver.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_time_interleaver.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_frequency_interleaver.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt24qa_frequency_interleaver2t1Ev':
qa_frequency_interleaver.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_frequency_interleaver.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_pilot_signals.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt16qa_pilot_signals2t1Ev':
qa_pilot_signals.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_pilot_signals.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_tmcc_decoder_1seg.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt20qa_tmcc_decoder_1seg2t1Ev':
qa_tmcc_decoder_1seg.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_tmcc_decoder_1seg.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_ofdm_synchronization_1seg.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt28qa_ofdm_synchronization_1seg2t1Ev':
qa_ofdm_synchronization_1seg.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_ofdm_synchronization_1seg.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_ofdm_synchronization.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt23qa_ofdm_synchronization2t1Ev':
qa_ofdm_synchronization.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_ofdm_synchronization.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_reed_solomon_dec_isdbt.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt25qa_reed_solomon_dec_isdbt2t1Ev':
qa_reed_solomon_dec_isdbt.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_reed_solomon_dec_isdbt.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_byte_deinterleaver.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt21qa_byte_deinterleaver2t1Ev':
qa_byte_deinterleaver.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_byte_deinterleaver.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_energy_descrambler.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt21qa_energy_descrambler2t1Ev':
qa_energy_descrambler.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_energy_descrambler.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_bit_deinterleaver.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt20qa_bit_deinterleaver2t1Ev':
qa_bit_deinterleaver.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_bit_deinterleaver.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_symbol_demapper.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt18qa_symbol_demapper2t1Ev':
qa_symbol_demapper.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_symbol_demapper.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_time_deinterleaver.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt21qa_time_deinterleaver2t1Ev':
qa_time_deinterleaver.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_time_deinterleaver.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_frequency_deinterleaver.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt26qa_frequency_deinterleaver2t1Ev':
qa_frequency_deinterleaver.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_frequency_deinterleaver.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
/usr/bin/ld: CMakeFiles/test-isdbt.dir/qa_ofdm_sym_acquisition.cc.o: in function `_GLOBAL__sub_I__ZN2gr5isdbt23qa_ofdm_sym_acquisition2t1Ev':
qa_ofdm_sym_acquisition.cc:(.text.startup+0x46): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::AppenderMapStorageInitializer()'
/usr/bin/ld: qa_ofdm_sym_acquisition.cc:(.text.startup+0x4d): undefined reference to `log4cpp::Appender::AppenderMapStorageInitializer::~AppenderMapStorageInitializer()'
collect2: error: ld returned 1 exit status
make[2]: *** [lib/CMakeFiles/test-isdbt.dir/build.make:401: lib/test-isdbt] エラー 1
make[1]: *** [CMakeFiles/Makefile2:268: lib/CMakeFiles/test-isdbt.dir/all] エラー 2
make: *** [Makefile:141: all] エラー 2
うーん、もうちょっとだったのに。やっぱりバージョン誤魔化すのはダメかな。
Gnuradio 3.7.2 をビルドしないといけないかな?
とりあえず Ubuntu パッケージ版の Gnuradio を削除。
$ sudo apt purge gnuradio gnuradio-dev liblog4cpp5-dev swig
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
freeglut3 libboost-date-time-dev libboost-filesystem-dev libboost-program-options-dev libboost-regex-dev libboost-system-dev libboost-test-dev libboost-thread-dev
libgmp-dev libgmpxx4ldbl libgnuradio-analog3.8.1 libgnuradio-audio3.8.1 libgnuradio-blocks3.8.1 libgnuradio-channels3.8.1 libgnuradio-digital3.8.1 libgnuradio-dtv3.8.1
libgnuradio-fec3.8.1 libgnuradio-fft3.8.1 libgnuradio-filter3.8.1 libgnuradio-pmt3.8.1 libgnuradio-qtgui3.8.1 libgnuradio-runtime3.8.1 libgnuradio-trellis3.8.1
libgnuradio-uhd3.8.1 libgnuradio-video-sdl3.8.1 libgnuradio-vocoder3.8.1 libgnuradio-wavelet3.8.1 libgnuradio-zeromq3.8.1 libgsl23 libgslcblas0 libgsm1-dev liblog4cpp5v5
libqwt-qt5-6 librtlsdr0 libuhd3.15.0 libvolk2-bin libvolk2-dev libvolk2.2 python3-bs4 python3-click-plugins python3-html5lib python3-lxml python3-networkx python3-opengl
python3-pyqt5.qtopengl python3-pyqtgraph python3-soupsieve python3-webencodings python3-zmq rtl-sdr swig4.0 uhd-host
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージは「削除」されます:
gnuradio* gnuradio-dev* liblog4cpp5-dev* swig*
次に、ここを見て
$ sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.7
Latest legacy 3.7 maintenance release of GNU Radio
詳しい情報: https://launchpad.net/~gnuradio/+archive/ubuntu/gnuradio-releases-3.7
[ENTER] を押すと続行します。Ctrl-c で追加をキャンセルできます。
ヒット:1 http://archive.ubuntulinux.jp/ubuntu focal InRelease
ヒット:2 http://jp.archive.ubuntu.com/ubuntu focal InRelease
取得:3 http://jp.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
.
.
.
エラー:29 http://ppa.launchpad.net/boost-latest/ppa/ubuntu focal Release
404 Not Found [IP: 91.189.95.85 80]
エラー:30 http://ppa.launchpad.net/gnuradio/gnuradio-releases-3.7/ubuntu focal Release
404 Not Found [IP: 91.189.95.85 80]
パッケージリストを読み込んでいます... 完了
E: リポジトリ http://ppa.launchpad.net/boost-latest/ppa/ubuntu focal Release には Release ファイルがありません。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
E: リポジトリ http://ppa.launchpad.net/gnuradio/gnuradio-releases-3.7/ubuntu focal Release には Release ファイルがありません。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
うーむ、ソースからビルドしないとダメかな?
を読んでみると
Right now, it's compatible with GNU Radio 3.7 only. You may use our docker for 3.7 to check it out: https://github.com/git-artes/docker-gnuradio/tree/master/gnuradio-releases-37.
なんて書いてますね!
これは Docker 使ったほうがずっと楽そうですね! 上記のようにあれこれやってきましたが、あきらめて Docker を使って改めてチャレンジすることにします。