「RTL-SDRが面白い その1」でWindows 上で定評のあるアプリを使ってRTL-SDRを使ってみて、次に「RTL-SDRが面白い その2」でWindows の上のLinuxの仮想環境でコマンドラインでRTL-SDR用のツールを使って動かしてみました。その次のステップとしてとして、今回は「RTL-SDRが面白い その3」としてRaspberry Piで動かしてみます。
使用したのはRaspberry Pi 4で、ちょっと前にアップデートしたものを使います。
【CUIで使う】
Rapsberry PiはLinuxで、USBデバイスは挿すだけで使えるのでソフトウェアの構成は「RTL-SDRが面白い その2」と比べるとシンプルになります。

RTL-SDRの制御ツールをBashで
sudo apt update⏎
sudo apt install rtl-sdr ⏎ としてインストールします。
プレーヤーとしてsoxを
sudo apt update && sudo apt install sox libsox-fmt-all -y⏎
でインストールして
rtl_fm -f 84.7M -M wbfm -s 200k -r 48k | play -r 48k -t raw -e signed-integer -b 16 -c 1 -⏎
を実行するとFM横浜の放送が流れてきました。
【GUIで使う】
「RTL-SDRが面白い その1」でWindows用のフリーウェアであるSDR#を使いましたが、マルチプラットフォーム対応のSDRアプリケーションとしてはSDR++が人気のあるフリーウェアだと聞くのでこれを使うことにします。
Rasberry Pi用のバイナリが配布されていますが、適合しないこともあるので、ソースから実行ファイルをビルドするのが確実です。その手順は以下の通りです。
まず、必要となるツールやライブラリを用意します。
sudo apt install -y build-essential cmake git libfftw3-dev libglfw3-dev libglew-dev libvolk-dev libzstd-dev librtaudio-dev librtlsdr-dev⏎
ここで、
libfftw3-dev :FFTを行うための非常に高速なライブラリ
libvolk-dev :複素数やベクトルの計算を高速化するライブラリ
librtlsdr-dev:RTL2832Uチップを、広帯域受信機として使うためのドライバ
libglfw3-dev :OpenGLを使用した画面描画を行うためのライブラリ
libglew-dev: OpenGLの拡張ライブラリ
librtaudio-dev :クロスプラットフォームの音声入出力ライブラリ
libzstd-dev :非常に高速かつ高圧縮なデータ圧縮アルゴリズム
です。
ホームの下にSDRPlusPlusのリモートリポジトリをコピーします。
cd ~
git clone https://github.com/AlexandreRouma/SDRPlusPlus.git
cd SDRPlusPlus
ビルドするためのディレクトリをその下に作り、そのなかで作業をします。
mkdir build
cd build
cmake と make を使ってコンパイルを行います。
cmake ..
make j4
直接システムにインストールします。
sudo make install
sudo ldconfig # ライブラリのリンクを更新
これで /usr/bin/sdrpp としてインストールされます。それを実行すると下のようなウィンドウが開きます。SDR++は C++ で書かれているということで軽量かつ高速で動作すると評価されています。確かにRaspberry Pi の環境でも、滑らかに動いてくれます。

【サーバーとして使う】
このSDR++には電波の受信処理を行う「サーバー」と、それを操作して音声を聴く「クライアント」をネットワーク経由で切り離して運用できるSDR++ サーバー / クライアント機能が標準で備わっています。そこで、アンテナとRTL-SDRドングルを接続したRaspberry PiでSDR++をサーバーとして動かし、ネットワーク上にある別のPC上でSDR++をクライアントとして動かし、ネットワーク経由でRTL-SDRを遠隔操作するという面白い使い方ができます。これについては、長くなるので「RTL-SDRが面白い その4」として別に記述することにします。