Airspy Mini と Raspberry Pi で ラジオサーバー

iot

SDR宅内ラジオサーバー

使用していないRaspberry Pi 4Bが一台あり、CUIの操作も忘却、復習を兼ねて、宅内ラジオサーバーを作成。SDRドングルは、比較的安価なRTL-SDR系ではなく、やや(?)高価なAirspy Miniを2万円程度で購入。

RTL-SDR系であれば、rtl_fm / rtl_tcp等のコマンドが利用でき、SDR#のSourceとしてRLT-SDR TCPが使えるRLT-SDRをビルドしてインストールすれ比較的簡単に導入できます。

しかし、Airspy Miniを導入して、是非とも、Raspberry Pi にSpyserverをインストール、そしてサーバー化し、 クライアントPC(Win 10 & 11)にて、SDR#のSourceの一つ、”AIRSPY Server Network”を使用したくチャレンジ。

SDR# Sourece 選択画面

ネットには、RTL-SDRの導入方法は多数日本語解説がありましたが、AIRSPY / Spyserverの導入方法はFM放送受信向けの記事は殆ど無く、いばらの道へ突入、そして英語との格闘となりました。

偉そうなこと書いていますが、主たる目的はFMラジオ受信が目的です(笑)

KAZUHO
KAZUHO

radikoがあるのになPCでFMラジオを聴く必要がある??

ソフトウェア無線(ソフトウェアむせん、SDR, Software-defined radio)とは、従来、アナログハードウェアとして実装されていた部品(ミキサー、フィルタ、アンプ、変調器/復調器、検出器など)による機能を、代わりに、パソコン内のソフトウェア、または組み込みシステムによって実現する無線通信技術である。一般的に広い周波数範囲において多くの変調方式が可能となるように、ソフトウェアが汎用性の高いプログラム可能なハードウェアを制御するもの、として考えられる。

Wikipediaより引用

備忘録かねて、来歴補助簿ネタにします。

我が家の受信機環境

我が家の受信環境は約20年前にヤフオクで落札した、名機AR-3000A(1989年販売開始)がいまだに現役ですが、デジタル化の波に乗るために(?)SDR導入しました。

アンテナは第一電波工業(DIAMOND ANTENNA)製ディスコーンアンテナ(D150)を地上高約3mのベランダに設置しているので、受信環境は貧弱です。

アンテナは50MHz~1,500MHz受信可能 / 受信機AR-3000AはSDR系統の受信帯域をすべてカバーしており、100kHz~2,036MHzです。

Raspberry Pi はネットワーク安定性向上を目途に有線LAN、そしてRaspberry Piの給電は、PoEです。SDRドングル程度の外付け機器であれば、PoE給電でも電圧降下無く問題なく動作しています。

PoE LAN スイッチは、Netgear GS108PEを使用、ラズパイ以外は無線LANアクセスポイントをPoEで動作させています。

KAZUHO
KAZUHO

あれ?

SDRが二系統 / RTL-SDRもある…

AIRSPY & Spyserver導入

冒頭にも書きましたが、AIRSPY / Spyserverの日本語の導入解説記事はほとんど無く、英語解説を読み、そして、試行錯誤を繰り返しました。以下に激闘で得た方法を記します。

以下記事ですが、GUI(Graphical User Interface)ではなく、以下のようなCUI(Character User Interface)での操作を前提に記述しています。

CUI 例

もちろん、GUI版OSでも、LXTerminalを使って、コマンド入力で対応は可能と思います。またOSは64bit版を使用しています。

Raspberry Piの準備 / OSの進化とIP固定化

Raspberry Piの準備は多数記事がありますので、詳しくは書きませんが、久々にセットアップしたところ、いきなり壁にぶつかったので、記述します。

久々にRaspberry Pi ImagerでOS (64bit Lite / CUI)をセットアップしたところ、OSが進化しており、Bookwormとなっていました。チャレンジということで、Legacy / Bullseyeを選択しないという、暴挙に出た結果・・・

いつもの手順でIP固定化をしようと、以下を打ち込むと

sudo nano /etc/dhcpcd.conf
KAZUHO
KAZUHO

あれ? おかしいぞ!!

New File と表示され、設定Fileが無い!!

早速Googleで検索すると、nmcliというコマンドを使うとできることが判明。Raspberry Piに割り当てたいIPを192.168.0.XY (XYは適当な数字)として、宅内LAN環境がGateway 192.168.0.1 / DNS 192.168.0.1であれば、以下のコマンドで有線LANの場合、IPアドレス固定できます。

sudo nmcli connection modify 'Wired connection 1' ipv4.method manual ipv4.addresses 192.168.0.XY/24 ipv4.gateway 192.168.0.1 ipv4.dns 192.168.0.1

変更確認は以下のコマンドで確認できます。確認画面から戻るのはBreakを押してください。

nmcli connection show ‘Wired connection 1’
KAZUHO
KAZUHO

いきなり躓きましたが、無事IP固定化完了

AIRSPY導入

非常に参考になったHPは、本家 AirspyがGitHubで公開してるの以下のページです。

GitHub - airspy/airspyone_host: AirSpy's usemode driver and associated tools
AirSpy's usemode driver and associated tools. Contribute to airspy/airspyone_host development by creating an account on GitHub.

ページをスクロールして、下部に行くと”How to build the host software on Linux:”と小見出しがあります。順序を追って説明すると・・・

libusbのインストール

libusbはアプリケーションからUSBデバイスにアクセスするためのライブラリです。正しい表現かはわかりませんが、Raspberry PiにつないだUSB機器を動かすために必要なライブラリです。以下のコマンドでインストール。

sudo apt-get install build-essential cmake libusb-1.0-0-dev pkg-config

もし、この後の作業を進めてAirspyが認識できない等のエラーが出るようであれば、以下を試す価値はあります。筆者の環境では必要ありませんでした。

sudo rmmod dvb_usb_rtl28xxu
sudo rmmod rtl2832

上記で改善するようであれば、必要ないカーネルドライバを恒久的に使用しないように、Black Listを作成するのも手と思います。以下のコマンドを打つと、

sudo nano /etc/modprobe.d/rtl_blacklist.conf

nanoではNew Fileと表示されると思いますので、以下の2行を記述して、上書きCtrl + O / 終了は、Ctrl + Xです。

blacklist dvb_usb_rtl28xxu 
blacklist rtl2832
AIRSPY Mini ドライバ (libairspy) のインストール

GitHubの解説では、Host Softwareと記述されていますが、筆者はドライバと思ってビルド&インストール

wget https://github.com/airspy/airspyone_host/archive/master.zip
unzip master.zip
cd airspyone_host-master
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install
sudo ldconfig

無事終了すれば、一度Raspberry Piを再起動。

もしビルド&インストールで生成された、Temporay fileとディレクトリを消したい方は、GitHubに”Clean CMake temporary files/dirs:”に方法が記載されています。

Spyserverのインストール

Airspy Mini 付き Rasberry Piをラジオサーバー化するために、Spyserverを導入します。

解説は、本家 Airspyのホームページ / Quick Startを参考にしました。

Quick start guide - airspy.com
High Performance Low Cost Software Defined Radio Receivers

ページの中頃に記載のある、” Running on ARM Linux (Raspberry Pi or Odroid) “を参照。

一つ一つコマンドを打ち込んで導入する方法もありますが、一つのコマンドでインストールできるコマンドは以下の通り。

wget -qO - http://airspy.com/downloads/install-spyserver-rpi.sh | sudo bash

Spyserverインストール後に、設定ファイル(spyserver.config)の書き換えが必要になります。

筆者の環境であれば、spyserver.configは以下のspyserverディレクトリにされていますので、以下の通り打ち込むと、エディターのnanoが立ち上がります。

cd
cd spyserver
sudo nano spyserver.config

以下の通りにspyserver.configの各項目を編集。

Initial center frequency は 起動時に80.0MHz (東京FM) になるようにしています。またminimum_frequencyとmaximum_frequencyは、AIRSPY MINIの仕様、24MHz – 1,700MHzに合わせています。

# Device Type
# Possible Values:
#   AirspyOne (R0, R2, Mini)
#   AirspyHF+
#   RTL-SDR
#   Auto      (Scans for the first available device)
#
device_type = AirspyOne

# Initial Center Frequency
#
initial_frequency = 80000000

# Minimum Tunable Frequency
# Comment if using the device default
#
minimum_frequency = 24000000

# Maximum Tunable Frequency
# Comment if using the device default
#
maximum_frequency = 1700000000

# Bias-Tee
# For AirspyOne only – Useful for LNA’s and SpyVerter
enable_bias_tee = 1

nanoの上書きは、Ctrl + O / 終了は、Ctrl + Xです。ここまで到達できれば、あと少しです。

Spyserverは起動する必要があり、インストール後に以下のコマンドを打ち込みます。

./spyserver

この時点で、後述のAIRSPY SDR#の設定を先に行い、テストでもOKです。

Spyserverの自動起動

Spyserver起動後、SSHでアクセスしているターミナルを閉じたり(筆者の場合はTERA TERM)、Rasberry Piを再起動すると、再度起動コマンドを打ち込む必要があるので、Raspberry Pi 再起動毎に自動で実行するために、crontabを使って、Spyserverを自動起動させます。

この解説は本家AIRSPY.COMではなく、RTL-SDRのページに解説がありました。

RTL-SDR Tutorial: Setting up and using the SpyServer Remote Streaming Server with an RTL-SDR
A number of people have asked how to use SDR#'s SpyServer with an RTL-SDR. In this tutorial we will show how to set up SpyServer on both Windows and Linux syste...

” Running SpyServer Automatically on Boot (Raspberry Pi) “の項目を参照すると、以下の指南があります。

  1. Crontab を 開く (エディターはnanoが使いやすいと思います)
    crontab -e
  2. 以下の記述を、最下段に追記、上書き保存して、エディターを終了
    @reboot /home/pi/spyserver/spyserver /home/pi/spyserver/spyserver.config

Raspberry Piを再起動するたびに、自動でSpyserverが起動されます。筆者はcrontabを使って、Raspberry Piも毎日深夜に再起動するように設定しています。

Raspberry Pi の作業はこれで終わりです。

AIRSPY SDR#の設定

今度は、クライアントPC側で、聴取ソフトの設定になります。

SDR# (SDR SHARP)のインストール方法は、多数解説がありますので、割愛いたします。

SDR#のフォルダですが、C drive / Program filesに保存すると、うまく動作しないので、C Driveであれば、直下に保存する方法おすすめします。

SDR#を起動したら、いよいよ設定作業です。

Sourceの設定
図1

” ≡ “をクリックすると、プルダウンメニューが表示されるのSourceをクリックして、AIRSPY Server Networkを選択。

図2

Source: AIRSPY Server Net… の赤囲み部に、Spyserverを起動しているRaspberry PiのIPアドレスを参考に以下の通り入力

sdr://192.168.WX.YZ:5555/

(WX.YZはRaspberry Pi のIPアドレス)

最後に図1に表示されている” ▶ “を押せば、受信開始します。お好みの周波数に合わせて、視聴を楽しんでください。

SDR#の全体的な見た目は、以下の通りです。Noize Reduction等の音色調整は好み、Gain等は受信環境にもよりますので、調整は都度追い込んでいく感じですね。

SDR#ですが、簡易的ですがAudio Recorder機能もあり、昔懐かしエアチェックも簡単にできます。

KAZUHO
KAZUHO

radikoは録音できないので、録音機能はいいかも!!

動機 / 雑談

動機

久々にラズパイをCUIで弄りたいと思ったのも一つの動機ですが、ラジオを手軽にパソコンで録音したいと思ったのも一つの動機です。最近は在宅中は全くというほどテレビは見ておらず、一日中ラジオを聴いている生活で、中高生時のラジオ生活を思い出しました。

見たく無いニュースも、ラジオであれば受け入れられるというのもラジオを好んでいる理由の一つかもしれません。

もう一つの動機としては、radikoはもちろん国内限定の提供であり、特に海外出張の時にVPNを活用すれば、ちょっと面白いことができます。(もちろん、個人で楽しむ範囲です)

実は RTL-SDRも

実は、2022年の春にRTL-SDR V3 でも、SDR環境を構築しており、SDRとしてはAIRSPY MINIは初めてではありませんでした。ただ、AIRSPY MINI の価格はRTL-SDRの4倍程度高価であり、高いなりには何かがあるのかな?と思い手を出してみました。

RTL-SDR V3 と AIRSPY MINIの差に関しては、これからあれこれ検証しようと思います。ネタになれば来歴補助簿で挙げます。

AR-3000A

AOR製、名機AR-3000Aも現役です。

受信性能はAIRSPY MINIと大差はなく、ダイアルを回してチューニングしたり、キーを押したりと、操作をしている感覚があって、実機の受信機もやっぱり良いと思います。まだまだ現役で使っていきたいと思います。

以下備忘録的な記事ですが、AR-3000A 代表的な不具合対応として、

  1. バックアップバッテリー不良
    CR2032の交換 / 私は基板直付けから、リード線&電池ケースに変えました。
  2. リセット動作
    電源ONでリセットボタンを押す必要があります。リセットボタンの位置は以下の通り。
AOR社HPから引用

我が家のネットワーク

ネットワークにぶら下がっている機器が増えてきて、構成がわからなくなってきたので、絵に起こしてみました。ネットワークはPoEやLink Aggregationしてみたりと、ちょっと遊んでいます。意外とトラブルは少なく、安定して動いています。

常時稼働の機器は、ラズパイが5台 + NAS(DS720+)の計6台です(笑)

WiFiにつないでいる機器は割愛していますが、ノートパソコンが4台 / タブレットが2枚 / 携帯電話3台 / 任天堂SWITCHが1台 / デジタル百葉箱を表示している手のひらPCが1台です。なんだかんだで機器が増えてきました。

老眼鏡デビュー

同軸コネクタははんだ付が必要なSMA-Jを使いましたが、ピンのはんだ付けの際、まったく、ピンの穴が見えませんでした。老眼鏡デビューです(笑)

愛用している老眼鏡は” Thin Optics キーチェーンタイプ ” です。昨年12月に欧州系の人たちと会食した際に、英国人が携帯電話の裏に老眼鏡をケースごと張り付けており、気になって聞いたら、「Amazonで買えるよ」とアドバイスされ、即購入!!

こんな老眼鏡です。

ThinOptics | Readers + Black Keychain Case | Readers & Reading Glasses
Keep your essentials close and your Reading Glasses handy with the ThinOptics Readers + Keychain Case. You'll never be left without your clear vision again.

免責事項

小生プロではなく、多数の間違い、誤記等あると思いますので、決して動作保証はできません。その点ご了承ください。念のため以下免責事項記しますので、気になる方は以下参照ください。

免責事項

1.情報の正確性について
当記事の情報は、信頼性の高い情報源から参照し取得したものですが、その正確性や完全性を保証するものではありません。情報の利用により生じる損害に対して、当サイトは一切の責任を負いません。

2.損害等の責任について
当記事の利用に関連して発生した損害、及び当記事を参考にソフトウェアをダウンロード・インストール・利用した結果生じるいかなる損害についても、当サイトは責任を負いかねます。ユーザー自身の責任のもとでの利用をお願いいたします。

3.機器のトラブル・メンテナンス
ユーザーが当記事を参考に作業をされる際に使用する機器のトラブルやメンテナンスに関して、当サイトは一切の責任を負いません。ユーザーは自身の機器の管理と維持を適切に行ってください。

コメント

タイトルとURLをコピーしました