LinuxサーバーにRTL-SDR v4を挿して、どこからでも短波受信できる環境を作る

LinuxサーバーにRTL-SDR v4を挿して、どこからでも短波受信できる環境を作る

RTL-SDR v4って知ってます?

これです。

USBに挿すとPCでラジオが聴けるドングルです。SMAコネクタが出ているのでそこにアンテナを繋いで、対応アプリをインストールすれば受信できます。いわゆる「ソフトウェア無線(SDR: Software Defined Radio)」というやつで、FMラジオはもちろん、中波、短波、エアバンド、アマチュア無線まで、受信範囲がめちゃくちゃ広いのが特徴です。

よくある使い方としては、PCでFMラジオを聴きたくてUSBに挿してアプリを入れて聴く、みたいな運用かと思います。ただこれ、かなり高機能な分、設定項目が多くてやや上級者向けな側面があります。価格も年々上がってきてて、私が最初に知った頃のほぼ2倍くらいになっちゃってます。

SMAアンテナはアキバなんかでジャンクでも売ってたりするので見繕っておきましょう。……って、もうこの時点でこのガジェットを扱う面倒くささを感じるはずです。普通に考えたら、ラジオを聴きたけりゃ普通のラジオを買えばいいし、radikoとかアプリの方が正直音質もいいですからね。

なのでこのガジェットというかオモチャ(stuff)は「受信そのものが目的」な人に向いているわけです。今回はそんなRTL-SDR v4を、私は普段Linuxサーバー経由で使っているので、そのやり方を記しておこうと思います。

この記事でやること

  • RTL-SDR v4 を Linux サーバーに接続
  • rtl_tcp で常駐・遠隔利用
  • VPN 越しに Mac / PC から SDR++ で受信
  • 短波(7MHz / 4〜5MHz)、AM/FM、CW を安定して聴く

前提はこんな感じです。

  • RTL-SDR Blog v4 に関する情報(他のバージョンでもいけそうだけど、細かい設定は違いそう)
  • Linux サーバー(Debian / Ubuntu 系)
  • VPN 接続済み(例: サーバー IP 10.0.0.3、ポート 1234
  • クライアント側: Mac + SDR++(Windowsでもオッケー。Linux端末でもsnapとかでSDR++が使えたはず。スマホだとアプリが有料だったりして辛い…)

この構成だとWebSDRサーバーを立てる方法もあるんですが、今回はそれはしない方向で。あくまで「手元のSDR++から、家のドングルに直接繋ぎにいく」構成です。

これが母艦サーバー。HPの古いMicroServerに、RTL-SDR v4が挿さってます。

RTL-SDR v4が挿さった自宅サーバー

ドライバ・ツールのインストール

まずは必須パッケージから。

sudo apt update
sudo apt install -y rtl-sdr librtlsdr-dev sox

DVBドライバをblacklistする(必須)

ここが少しハマりポイント。Linuxカーネルは RTL-SDR を挿すと「お、TVチューナーだな」と判断して DVB ドライバで掴んでしまいます。こうなると SDR として使えないので、blacklist に入れて掴ませないようにします。

実はこれ、公式ドキュメントにもちゃんと書いてあるんですよね。ちゃんと読みましょう。(教訓)

sudo nano /etc/modprobe.d/blacklist-rtl.conf

中身:

blacklist dvb_usb_rtl28xxu
blacklist rtl2832
blacklist rtl2830

反映:

sudo reboot

認識されているか確認する

rtl_test で認識テストができますよ。lsusb でも見れますけど、こっちは「実際に使えるかどうか」まで見れるのでおすすめ。

rtl_test

成功例:

Found 1 device(s):
  0:  RTLSDRBlog, Blog V4
Using device 0: Generic RTL2832U OEM
Found Rafael Micro R828D tuner

ちなみに PLL not locked! というのが出ることがありますが、短波帯ではよく出るもので致命的ではないです。焦らなくて大丈夫。

rtl_tcp を起動する

まずは手動起動

何はともあれ手動で起動してみましょう。

sudo rtl_tcp -a 0.0.0.0 -p 1234
  • 0.0.0.0 : VPN / LAN から接続可能にする
  • 1234 : デフォルトポート(変更可)

成功すると:

listening...

クライアントから接続されると、こんなログが流れます。

client accepted! 10.0.0.2
set freq 7000000
set sample rate 2048000

このログが出ていればSDR++側と通信できてます。

ひとつ注意なんですが、rtl_tcp はブラウザで開いて見るものではないです。流れているのはIQデータの生ストリームなので、ブラウザでアクセスしても何も起きません(昔の私へ)。

systemdで常駐サービス化

手動起動で動くのを確認したら、常駐化しましょう。Linuxのサービスについて今さら説明する必要もないでしょう。サービスファイルを作って、起動させてみます。

sudo nano /etc/systemd/system/rtl_tcp.service
[Unit]
Description=RTL-SDR TCP Server
After=network.target

[Service]
ExecStart=/usr/bin/rtl_tcp -a 0.0.0.0 -p 1234
Restart=always
User=root

[Install]
WantedBy=multi-user.target

有効化・起動:

sudo systemctl daemon-reload
sudo systemctl enable rtl_tcp
sudo systemctl start rtl_tcp

状態確認:

systemctl status rtl_tcp

これでサーバーが再起動しても勝手に rtl_tcp が立ち上がるようになりました。ドングルは挿しっぱなし、電源入れっぱなし。「家のどこかで常に電波を受けているサーバー」の完成です。

SDR++(クライアント側)の設定

ここからはクライアント側。SDR++を立ち上げて、Sourceをこう設定します。

  • Source Type: RTL-TCP
  • Host: 10.0.0.3(サーバーのVPN IP)
  • Port: 1234
  • Sample Rate: 2048000

Apply → ▶ Start で受信開始です。

SDR++で7MHz帯を受信している様子

こちらは受信の参考画像。あえてゲインを絞ってます。夜の受信で、この時間帯は太陽が沈んで電離層の具合で遠くの電波が届くようになるため、「祖国」のラジオ、韓国、中国、さらにはベトナム語のラジオやタイのラジオなんてのも聞こえますよ。

受信モード別・実践設定

FM(まず最初に成功させる用)

  • Mode: WFM
  • Bandwidth: 200kHz
  • Gain: Auto or Manual(高め)

これは「まず音が出るか」の確認用です。FMは強力なので、アンテナが適当でもだいたい入ります。最初から短波を狙うと「アンテナが悪いのか設定が悪いのか繋がってないのか」の切り分けができなくて詰むので、まずFMかAMで動作検証するのが結果的に時短です。

AM(中波・短波放送)

  • Mode: AM
  • Bandwidth: 6〜10kHz
  • AGC: ON
  • Gain: 手動で調整

CW(モールス)

  • Mode: CW
  • Bandwidth: 200〜400Hz
  • AGC: 弱 or OFF
  • Gain: 高め(ノイズフロアと相談)

帯域をグッと絞るのがポイント。あと、CWは「何も聞こえない時間」がデフォルトです。聞こえないからといって壊れてるわけじゃない。電波は出てる時に出てるんです。

短波帯域の目安(JST)

周波数時間帯備考
4〜5MHz深夜業務CW・ユーティリティ多い
7MHz夜〜明け方アマチュアCW/SSB
7MHzほぼ静か

ちなみに4.5MHz付近の高速CWは業務用の可能性大です。もちろん受信のみOKの世界なので、聴くだけにしましょう。

アンテナは自作した(ここが一番大変だった)

なんならここが一番大変でした。短波(7MHz)をまともに受けようとすると、半波長ダイポールでおよそ片側10m、合計20m長のアンテナを張る必要があります。私の自宅は持ち家なのですが、それにしても20mってのは長いもので、大変でした。

現在の構成は完全自作アンテナです。私は普段音楽活動をやってるので、色々な銅線を持ってます。その中で目をつけたのが 「スピーカーケーブル」

  • シールドされてなくて、導線がそのまま絶縁体に包まれている
  • 柔らかくて長さを調整しやすい
  • 手元に大量にある

そして私の家にはたくさんの「余ったテレビ用同軸ケーブル」があります。頻繁に引っ越ししてると、毎度テレビのアンテナ工事の際にサービスで同軸ケーブルが増えていくんですよね。その中の一本をバラして、SMA変換コネクタと半田付けして給電線にしました。

10m長に切った2本のスピーカーケーブルを、同軸の芯線とシールドにそれぞれ繋げてダイポールに。その直前にバランを入れました。こちらも自作です。

バランっていうか、ほぼ単純な「コモンモードチョークコイル」で、トロイダルコアに銅線を数回巻き付けてるだけです。トロイダルコアの入手が地味に難しく、最初は壊れた電源回路から拾ってきてたんですけど、最終的にはアキバで買いました。斉藤電気商会さんに行くといろんなフェライトコアが山ほどあるので、「巻きごたえのあるやつ」を買ってきました。

で、これが実際に張ったアンテナの写真です。

自作ダイポールアンテナ(のはず)

……はい。家の外観が写り込むのでほぼ全面ボカした結果、もはや何の画像でもなくなりました。かろうじて斜めに走ってる線がワイヤーで、真ん中あたりにぶら下がってる赤いのが自作バランです。信じてください、写ってるんです。

アンテナとアースの知見

自作してみて分かったことをまとめておきます。

  • 理想的なダイポール → アース不要
  • 自作ワイヤー / 簡易アンテナ → アース or カウンターポイズ必須
  • 同軸のシールド側をアースに落とすと S/N比が改善する
  • PC / サーバーの電源ノイズは想像以上に強い

あと、アンテナやコネクタを手で触ってみて受信が改善するなら、それはアース不足の証拠です。人体がカウンターポイズとして機能しちゃってるやつですね。

アンテナを追い込むのも受信側の魅力の一つと言えるでしょう。

何が聞こえるのか

お昼から午後は、関東圏のアマチュア無線の音が聞こえます。モールス信号と、そのまま声で交信してる人たちもいます。この趣味も高齢化が進んでいますが、「カミさんが帰ってきたから切ります」なんてやり取りを傍受してると、いろんな人が趣味や仕事や家庭という人生のイベントに、個人の人間として向き合ってる瞬間を切り取ったように感じて、なんかちょっと落ち着きます。

夜になれば前述の通り、海外の放送がわらわらと入ってきます。

他には 「暗号放送」 っていうのもありますよ。この辺で一番よく聞こえるのは『Japanese Slot Machine』ってやつです。これについてはぜひ調べてみてください。この分野で一番有名なのはロシアの「UVB-76」で、これを受信できる環境を作るのが当面の目的です。

これは多分ネットに書いてる人がいないっていう自負があるのですが、攻殻機動隊で草薙素子が暗号解析してるシーンの一部に、この『Japanese Slot Machine』のサンプリングが使われています。ことごとくオタク心をくすぐられるシーンが後になって分かってくるのも、楽しいものです。

おまけ: 外出先から「家の電波」を聴く

この構成の真価はここだと思ってます。

私は普段からWireGuardで全端末を同一VPNに繋げていて、どの端末からでも自宅サーバーに届くネットワークを組んでいます。つまり rtl_tcp がVPN上で待ち受けている時点で、受信機は家に置きっぱなしのまま、どこからでもチューニングできるということです。

これは電車のホームで、clockworkのuConsole(サイバーデッキ的なアレです)から自宅サーバーに繋いで、自宅周辺の400MHz帯を傍受しようとしているところ。この時はGQRXを使ってるのでSDR++ですらないんですが、rtl_tcpはただのTCPサーバーなので、クライアントは何でもいいんです。

電車のホームでuConsoleから自宅のRTL-SDRに接続

私は昔から「持ち歩けるターミナル端末」が欲しいと思っていて、このuConsoleを普段から持ち歩いてます。全端末がWireGuardで繋がってる前提のネットワークを組んでおくと、母艦サーバーにrtl_sdrのポートを通しておくだけで、こういうこともできるようになるわけです。ホームで電車を待つ数分間に、家のアンテナで空を聴く。意味があるかと言われると特にないんですが、ロマンはあります。

トラブルシュート

音が出ない

  • rtl_tcp が起動しているか(systemctl status rtl_tcp
  • VPNでIPが通っているか(ping 10.0.0.3
  • SDR++のSourceが RTL-TCP になっているか

ノイズしか見えない

  • Gainを上げすぎていないか
  • フィルタ幅が広すぎないか
  • アースが取れているか

まとめ

  • Linuxはドライバ周りが鬼門。DVBドライバのblacklistを忘れずに。公式手順はちゃんと読む
  • rtl_tcpブラウザで見るものではない(IQストリームです)
  • 最初はFMやAMで動作検証すると切り分けが楽で、むしろ時短になる
  • CWは「聞こえない時間」がデフォルト
  • 4〜5MHzの深夜は宝の山
  • アンテナ自作はスピーカーケーブル+余り同軸+自作バランでなんとかなる
  • 遠隔SDRは普通に実用レベルで楽しい

公式サイトは見ましょう。→ https://www.rtl-sdr.com/v4/

電波とネットワークを制した者は、場所に縛られない 📡

それではまた!