ぱらめでぃうす

"don" also known as "doumae" and "donz80"

アマチュア無線

Webブラウザで遠隔からSDR受信する OpenWebRX+とRTL-SDR

OpenWebRX+

「RTL-SDR」USBドングルと、OpenWebRX+というLinux用ソフトウェアを使うことで、パソコンやスマホのWebブラウザを使って遠隔地から無線の受信ができる環境を簡単に作ることができます。受信できる周波数はドングルの性能に寄りますが、FMラジオやアマチュア無線(HF~UHF)が受信できます。FM・AMの復調だけでなく、D-StartやDMRなどのデジタル音声コーデックFT8・FT4、さらにADS-Bまでブラウザ上で復号することができます。

OpenWebRX+
OpenWebRX+


  • 移動運用中に自宅でどのぐらい電波が届いているか確認したい
  • オフィスにいるときにちょっと無線が聞きたい
  • 複数人で受信環境をシェアしたい

などなど利用できると思います。

OpenWebRX+の構成
OpenWebRX+の構成

RTL-SDRはWindows・MacOSやAndroid用のソフトウェアが出ていますが、いずれもPCやスマホにUSBドングルを直結して利用するのが前提です。つまりその場でアンテナを設置して付近の電波を受信します。

また、RTL-SDRはTCP/IPを使って遠隔地に設置したドングルの信号を受信することもできます。これも便利ですが、受信側のPCにソフトウェアをインストールする必要があります。また、特別なTCP/IPポートでの通信を許可しなければなりません。

OpenWebRX+は、遠隔地に設置したドングルの信号を、Webブラウザで受信します。受信側にWebブラウザがあり、Webが閲覧できる環境なら利用できる点がメリットです。(WebSocketを使います)

この記事は初出時「OpenWebRX」(jketterl/openwebrxについて記載していました。記事公開直後、「OpenWebRX+」(luarvique/openwebrxというfork(派生形)があることに気づきました。OpenWebRX+の方が開発も活発で、機能もかなり追加されているので、OpenWebRX+を前提に、記事を大幅に書き直しています。このため初出時と内容が異なっています。

ちなみに、jketterl/openwebrx自体、オリジナルからのforkのようです……https://www.openwebrx.de/という公式っぽいWebサイトからはjketterl/openwebrxがリンクされていますが。

用意するもの

OpenWebRX+の公式サイトにもインストール方法が記載されています。ここではLinuxホストにdockerを使ってインストールする方法を解説します。

Linuxホスト

OpenWebRX+はRaspberryPiでも動作するようです。Raspberry Piでインストールする場合、公式配布のimageをSDカードに書き込むだけで使えるので簡単です。

今回は一般的なLinuxホストにOpenWebRX+をインストールします。以下のとおりかなり非力なホストです。OSはUbuntuを使っていますが、Ubuntu以外でも大丈夫です。また、今回はdockerを使ってセットアップする例を紹介します。

  • CPU: Inten Celeon N4000
  • RAM: 4GB
  • Storage: eMMC 32GB
  • OS: Ubuntu 24.40 LTS + Docker

(中古で購入した小型PCです。最近Raspberry Piが高いので、こっちの方が安いんですよね……)

RTL-SDRドングル

今回はRTL-SDR blog公式のRTL-SDR Blog V4ドングルを購入しました。旧バージョンや互換品でも問題ありません。ジャンク箱に眠っているドングルを活用しましょう。


ちなみに、RTL-SDR Blog V4cというモデルです。このドングルはV3までUSB Type-Aオス端子が本体からそのまま出る形でちょっと使いづらかったのですが、V4からUSB Type-Cメス端子のモデルが追加され、扱いやすくなっています。

RTL-SDR V4c
RTL-SDR V4c

※Amazon.co.jpではいろんな商品が売られていますが、RTL-SDRドングルはオプションをつけても1万円はしない商品です。妙に高い商品をつかまないように気をつけましょう。

USBケーブル・アンテナほか

環境に合わせて用意してください。

インストール

Linux・Docker

Linuxが動いてdocker・docker-composeが使える状態にしてください。説明は割愛します。

dockerでOpenWebRX+を使う場合、ホストがRTL-SDRドングルを認識しないように、ホストOSのBLoacklistに追加する必要があります。ホストOSの/etc/modprobe.d/blacklist-owrx.confを作成し、次のような記入してください。

blacklist dvb_usb_rtl28xxu

RTL-SDRドングルは適当なUSBポートに接続してください。(動作確認だけならアンテナなしでかまいません)

docker-compose.yamlの準備、起動

適当なディレクトリ(例では/opt/owrx-docker)を作成し、その中にdocker-compose.ymlを作成します。

OPENWEBRX_ADMIN_USERはOpenWebRX+の管理ユーザー、OPENWEBRX_ADMIN_PASSWORDはパスワードです。適当なものに置き換えてください。

services:
  owrx:
    image: 'slechev/openwebrxplus-softmbe:latest'
    container_name: owrx-mbe
    restart: unless-stopped
    ports:
      - '8073:8073'
    environment:
      TZ: Europe/Sofia
      OPENWEBRX_ADMIN_USER: myuser
      OPENWEBRX_ADMIN_PASSWORD: password
    devices:
      - /dev/bus/usb:/dev/bus/usb
    volumes:
      - /opt/owrx-docker/etc:/etc/openwebrx
      - /opt/owrx-docker/var:/var/lib/openwebrx
      - /opt/owrx-docker/plugins:/usr/lib/python3/dist-packages/htdocs/plugins
    tmpfs:
      - /tmp:mode=1777

docker-compose.ymlをおいたディレクトリでdocker compose upを実行すると、OpenWebRX+のイメージが自動的にダウンロードされ、OpenWebRX+が起動します。-dをつけていないのでコンソールにログが出ます。CTRL-Cで終了します。

実運用に入る場合は、docker compose up -dで起動するとdaemonになります。終了はdocker compose downです。なお、docker-compose.ymlrestart: unless-stoppedと書いているので、コンテナを起動したままOSを再起動した場合は、daemonも起動します。(明示的にdocker compose downdocker stopした場合は自動で起動しません)

docker imageの更新

OpenWebRX+がアップデートされた場合、一度コンテナを停止してからimageを更新します。

# docker compose down
# docker compose pull
# docker compose up -d

設定

例に挙げたdocker-compose.ymlでは、ポート8073でWebサーバが動作します。ブラウザからhttp://[LinuxホストのIPアドレス]:8073/にアクセスしてください。次のよう画面が表示されます。

OpenWebRX+初期画面
OpenWebRX+初期画面

ここで画面をクリックすると、RTL-SDRドングルが認識されていればいきなりブラウザから雑音が聞こえてくるはずです。雑音が聞こえていれば、OpenWebRXのインストールはだいたい成功です。聞こえてこない場合は、PCがミュートになっていないか、WebSocketを許可しないproxyが入っていないか、docker-compose upしたコンソールに何か出ていないか確認しましょう。

初期設定の周波数帯が微妙なので、とりあえずFMラジオを聞けるようにします。(RTL-SDRドングルに適当なアンテナを接続してください)

画面右上の矢印(Settings)をクリックすると別ウィンドウ(タブ)が開きます。先ほど設定した管理ユーザ名とパスワードを入力すると設定画面が表示されます。

OpenWebRX設定ウィンドウ
OpenWebRX設定ウィンドウ

「SDR devices and profiles」をクリックします。(これ以降、すでにいろいろ設定済みのスクリーンショットで説明しますで、初回起動時とは画面が異なります)

「SDR devices and profiles」にはデフォルトでいくつかのデバイスが表示されていると思います。今回はRTL-SDRドングルを使うので「RTL-SDR-USB Stick」をクリックします。

RTL-SDR USB Stick
RTL-SDR USB Stick

「Enable this device」にチェックして、「Apply and save」をクリックします。オプション設定がいろいろありますが、とりあえずデフォルトでも動いています。その後、「New Profile」タブをクリックします。

New Profile
New Profile

OpenWebRX+では、受信する周波数帯を「Profile」として設定します。Profileでは「Center frequency」を中心周波数として、「Sample rate」の幅の周波数が受信可能です。たとえばCenter frequencyを433.0MHzとして、Sampre rateを2.4MS/sとすると、431.8MHz~434.2MHzが受信範囲となります。Sample rateは3.6MS/sまで設定できるようですが、RTL-SDRドングルによっては安定しないことがあるそうです。私は2.4MS/sに設定しました。

スクリーンショットは東京のFMラジオ局、J-WAVEを受信する場合の設定です。設定をしたら「Apply and save」をクリックし、元のウィンドウ(タブ)に戻ります

Receiver limits
Receiver limits

一度に受信できる幅が2.4MHzというのは、アマチュア無線の受信用途にはあまり気になりませんが、FMラジオの受信では不便があります。(日本のFMラジオは76.1MHz~98.9MHz、将来的は108MHzまで)その場合、「Settings」→「General Settings」→「Receiver limits」で「Allow users to change center frequency」を有効にし、「Magic Key」を空にしておくと、ユーザーが中心周波数を変更できるようになります。ただし、OpenWebRX+を他人が利用できるようにしている場合、管理者が意図しない周波数を受信される可能性があるため注意が必要です。

ほかにも様々な設定がありますが、とりあえずこの程度設定しておけば受信には問題ないと思われます。公式サイトも参考にしてください。

OpenWebRX+操作方法(一部)

OpenWebRX+操作方法
OpenWebRX+操作方法 (クリックで拡大)

ほとんどの操作は画面右下の「Receiver」ウィンドウで行います。このウィンドウが表示されていない場合は画面右上の「Receiver」アイコンをクリックしてください。

プロファイル選択
まずプロファイルを選択してください。
周波数設定
操作方法は独特です(SDR#と同じ)。周波数の各桁にマウスカーソルを合わせ、ホイールを上下するとその桁の数字が変化します。数字をクリックするとダイレクトに周波数の入力もできます。現在のプロファイルの受信範囲を外れる周波数を設定しても無効になります。「Allow users to change center frequency」を有効にしている場合、画面上部の「◀」「▶」を右クリックすると中心周波数が移動し、受信範囲が変化します。
ウォーターフォール表示
画面をクリックしてもダイレクトに受信周波数を変更できます。”Setting”の”Hole mouse wheel down to tune”をチェックしていると、ホイールで表示領域の拡大縮小ができます。
復調方式
FMラジオ放送は「WFM」、アマチュア無線などのFMは「FM」を選択。データ復調方式を選択すると、画面内にウィンドウが開き、デコード結果が表示されます。
録音
“REC”をクリックすると録音を始めます。再度クリックすると録音を終了し、すぐにmp3ファイルのダウンロードが開始されます。
ブックマーク
緑色のブックマークはシステムに設定されています。黄色のブックマークは管理者が設定画面で登録します。青色のブックマークは利用者が登録します。(Webブラウザに保存されます)
チャット
現在OpenWebRX+にアクセスしている人全員と簡単なチャットができます。OpenWexRX+は同時に複数人でアクセスできますが、受信できる周波数は一つです。誰かが受信周波数を変更すると、アクセスしている全員の受信周波数が変更されます。複数人が利用する可能性がある場合、チャットで連絡するといいでしょう。

その他

オリジナルのOpenWebRXの開発は停滞気味のようですが、OpenWebRX+は現時点でも活発に開発されています。私も最初はオリジナルをインストールしていたのですが、結局OpenWebRX+に入れ替えました(最初から気づいていれば……)。

Webブラウザからアクセスできるので、ルータの設定をすることでインターネットに公開することもできると思います。ただ、管理者以外のユーザー認証機能は無いようですし、そのままだと誰でも使えてしまいます。ReverseProxyを設定してそこで認証をかけますかね……。

ここで紹介した以外にも様々な機能があるようなので、あとは公式サイトの解説を参考に実験してみてください。

Amazon プライム対象