Gqrx + SDRドングルでソフトウェアラジオ
GqrxというアプリとSDRドングルを使ってUbuntu上でソフトウェアラジオの実験を行う。
これは実際に放送局やアマチュア無線の電波をアンテナで受信して復調するもので、インターネットラジオとは別物である。
"R820T"と"RTL2832U"というチップを搭載したSDRドングルがAmazonなどで格安で手に入る。Amazonで検索すると数多くの商品が見つかるので結構需要があるようだ。
SDRドングル内で1seg放送受信などで使用するデコーダ処理を使わず、その処理の手前で信号を取り出してPC側で信号処理して復調する。
SDRドングル単体の受信周波数帯は25MHzから1700MHz程度のものが多い。GqrxはこのSDRドングルを制御して、広い周波数帯を様々な受信モードでの受信機能を提供にする。
また、SDRドングルがカバーしていない低い周波数帯の中波帯と短波帯を受信するために、外付けのアップコンバーターを併用する。
★その他、チューナーチップをバイパスして低い週場数を受信する"ダイレクトサンプリングモード"に対応した機種もある。多くの場合、外付けLPFを追加したりする必要がある。

上の画像にある2のユニットの上側が"アップコンバーター"で、下側が"SDRドングル"である。
[gqrxのインストール]
ダウンロードのページで[Gqrx binary package for Ubuntu Linux]をクリックする。
[Gqrx SDR]
http://gqrx.dk/
Gqrxのサイトに記載されている手順に従いインストール作業を進める。
PPAのパッケージを使用するために、古いgqrx、gnuradio、またはSDRドライバライブラリのバイナリがインストールされていないことを確認&削除する。以下のコマンドを実行する。
------------------------------------------------------------
$ sudo apt update
$ sudo apt purge --auto-remove gqrx
$ sudo apt purge --auto-remove gqrx-sdr
$ sudo apt purge --auto-remove libgnuradio*
------------------------------------------------------------
今回は何もremoveされなかった。
続いて新しいリポジトリを登録する。
------------------------------------------------------------
$ sudo add-apt-repository -y ppa:bladerf/bladerf
$ sudo add-apt-repository -y ppa:myriadrf/drivers
$ sudo add-apt-repository -y ppa:myriadrf/gnuradio
$ sudo add-apt-repository -y ppa:gqrx/gqrx-sdr
$ sudo apt update
------------------------------------------------------------
エラー無くリポジトリ登録ができたら"gqrx"をインストールする。
------------------------------------------------------------
$ sudo apt install gqrx-sdr
------------------------------------------------------------
結構な量のファイルが導入される。
インストールが終了すると、ソフトウェア一覧に"GNU Radio Companion"や"Gqrx"が追加されている。
次にパフォーマンス最適化用のツールをインストールする。
------------------------------------------------------------
$ sudo apt install libvolk1-bin
------------------------------------------------------------
★今回は最初からインストールされていました。
GNU Radioのパフォーマンスを最適化する。端末で以下のコマンドを実行する(結構待たされる)。
------------------------------------------------------------
$ volk_profile
------------------------------------------------------------
[SDRドングルの接続]
まず、SDRドングル接続前のUSBデバイスと/devの様子を見る。端末で以下のコマンドを実行する。
------------------------------------------------------------
$ lsusb
Bus 002 Device 004: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 002 Device 006: ID 099a:0638 Zippy Technology Corp. Sanwa Supply Inc. Small Keyboard
Bus 002 Device 005: ID 056e:0035 Elecom Co., Ltd
Bus 002 Device 003: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$ ls /dev
------------------------------------------------------------
次にSDRドングルを接続してHDDのアクセスランプが消えたら、再度USBデバイスと/devの様子を見る。
SDRドングルが追加されたことを確認する。自分の場合は"Realtek Semiconductor Corp. RTL2838 DVB-T"が認識できた。
/devに"swradio0"などが追加されたことを確認する。
------------------------------------------------------------
$ lsusb
Bus 002 Device 008: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
Bus 002 Device 004: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 002 Device 006: ID 099a:0638 Zippy Technology Corp. Sanwa Supply Inc. Small Keyboard
Bus 002 Device 005: ID 056e:0035 Elecom Co., Ltd
Bus 002 Device 003: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$ ls /dev
------------------------------------------------------------
★SDRドングルは消費電流が多いようで結構暖かくなります。PCのUSBポートに直結か、バスパワーのUSB HUBの使用をオススメします。
★他のPC環境(WindowsのSDR#で実験時)で実施した時、USB3.0のポートに接続したらSDRドングルが認識されず、USB2.0のHUBを介したら認識された事がありました。原因は不明。
[gqrxの起動]
端末で以下のコマンドを実行する。
------------------------------------------------------------
$ gqrx &
------------------------------------------------------------
初回はGUI画面で"gqrx"の"Configure I/O device"画面が起動する。
この画面でDeviceを選択する。

自分の場合は"Realtek RTL2838UHIDIR ..."を選択したら動作した。
設定して[OK]をクリックすると、続けてGqrxのGUI画面が起動した。
Deviceの選択はGqrxの[FIle] → [I/O Device]で"Configure I/O device"画面を開いて設定することもできる。
また、ソフトウェア一覧の"Gqrx"のIconをクリックしても起動する。
[FIle]のすぐ下の三角"再生ボタン"の様なIconをクリックすると受信が始まる。
受信中に周波数やFM/AMなどのモードが切り替えられる。
★受信中にI/O Deviceを変更するとGqrxがハングアップするので、Deviceの設定変更時はかならず受信を止めてから行うこと。
まずアンテナを設置する。今回は室内に2m程度の銅線を張って適当なアンテナを作成した。
WFM(stereo)の設定で地元のFM曲が数局受信できた。WideFMだけあって高音質である。普通のラジオで受信できるFM局は全て受信できた。
50MHz帯, 144MHz帯のアマチュア無線のローカル局の電波は、辛うじて受信できるレベル。野外に周波数帯に合うちゃんとしたアンテナを設置すればもっと受信できそうだ。

[アップコンバーターの接続]
次に、SDRドングルとアンテナの間に、中波帯、短波帯を受信するためのアップコンバーターを接続してみた。
これはSDRドングルが受信できない25MHz以下の波数帯を受信可能にするものである。
具体的には30MHzまでの受信周波数を100MHz高いSDRドングルが受信可能な周波数帯に変換するもので、例えばGqrxで110MHzにチューニングすれば、実際には10MHzが受信できるという仕組みである。自分が使用したアップコンバーターはオークションで入手した組み立てキットである。もちろん完成品もAmazonなどで数種類の製品を見つけることができる。
受信周波数が100MHz高く変換されるため、Gqrxで表示する受信周波数も100MHz高くなるが、Gqrxの[FIle] → [I/O Device]で"Configure I/O device"画面を開いて"LNB LO"の設定を"-100MHz"に設定することで、アップコンバーター接続時に受信周波数表示が100MHz高くなった分を相殺して、受信周波数を正しく表示させることができる。

室内の適当なアンテナでも中波帯の国内放送や短波帯の海外放送も結構受信できる。7MHz帯のアマチュア無線の電波も辛うじて受信できた。
アマチュア無線の音声が聞こえ、FFT表示も辛うじて信号が見えた。

また、アマチュア無線のCWの信号が聞こえた。FFT表示で辛うじて点線のように見える。

ここでもアンテナが重要そうだが、ハムバンド近傍に強力な海外放送の電波がある。アンテナを大きして感度を上げると今度はSDRドングルのADCのダイナミックレンジをオーバーする可能性があり、LNAのGainを手動で調整したりして試してみる、受信の"コツ"をつかむのが結構難しい。
以下はハムバンド近傍の海外放送を受信しているところ。これはこれで綺麗に受信できる。

SDRドングルの受信周波数は非常に広く、今回紹介した格安のSDRドングルでも1GHzを超える周波数帯が受信可能である。こういった高い周波数帯は何に使われているのか調べないと正直全く判らない。様々な可能性を秘めているので今後も実験を続けていこう。
[Gqrx SDR]
http://gqrx.dk/
これは実際に放送局やアマチュア無線の電波をアンテナで受信して復調するもので、インターネットラジオとは別物である。
"R820T"と"RTL2832U"というチップを搭載したSDRドングルがAmazonなどで格安で手に入る。Amazonで検索すると数多くの商品が見つかるので結構需要があるようだ。
SDRドングル内で1seg放送受信などで使用するデコーダ処理を使わず、その処理の手前で信号を取り出してPC側で信号処理して復調する。
SDRドングル単体の受信周波数帯は25MHzから1700MHz程度のものが多い。GqrxはこのSDRドングルを制御して、広い周波数帯を様々な受信モードでの受信機能を提供にする。
また、SDRドングルがカバーしていない低い周波数帯の中波帯と短波帯を受信するために、外付けのアップコンバーターを併用する。
★その他、チューナーチップをバイパスして低い週場数を受信する"ダイレクトサンプリングモード"に対応した機種もある。多くの場合、外付けLPFを追加したりする必要がある。

上の画像にある2のユニットの上側が"アップコンバーター"で、下側が"SDRドングル"である。
[gqrxのインストール]
ダウンロードのページで[Gqrx binary package for Ubuntu Linux]をクリックする。
[Gqrx SDR]
http://gqrx.dk/
Gqrxのサイトに記載されている手順に従いインストール作業を進める。
PPAのパッケージを使用するために、古いgqrx、gnuradio、またはSDRドライバライブラリのバイナリがインストールされていないことを確認&削除する。以下のコマンドを実行する。
------------------------------------------------------------
$ sudo apt update
$ sudo apt purge --auto-remove gqrx
$ sudo apt purge --auto-remove gqrx-sdr
$ sudo apt purge --auto-remove libgnuradio*
------------------------------------------------------------
今回は何もremoveされなかった。
続いて新しいリポジトリを登録する。
------------------------------------------------------------
$ sudo add-apt-repository -y ppa:bladerf/bladerf
$ sudo add-apt-repository -y ppa:myriadrf/drivers
$ sudo add-apt-repository -y ppa:myriadrf/gnuradio
$ sudo add-apt-repository -y ppa:gqrx/gqrx-sdr
$ sudo apt update
------------------------------------------------------------
エラー無くリポジトリ登録ができたら"gqrx"をインストールする。
------------------------------------------------------------
$ sudo apt install gqrx-sdr
------------------------------------------------------------
結構な量のファイルが導入される。
インストールが終了すると、ソフトウェア一覧に"GNU Radio Companion"や"Gqrx"が追加されている。
次にパフォーマンス最適化用のツールをインストールする。
------------------------------------------------------------
$ sudo apt install libvolk1-bin
------------------------------------------------------------
★今回は最初からインストールされていました。
GNU Radioのパフォーマンスを最適化する。端末で以下のコマンドを実行する(結構待たされる)。
------------------------------------------------------------
$ volk_profile
------------------------------------------------------------
[SDRドングルの接続]
まず、SDRドングル接続前のUSBデバイスと/devの様子を見る。端末で以下のコマンドを実行する。
------------------------------------------------------------
$ lsusb
Bus 002 Device 004: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 002 Device 006: ID 099a:0638 Zippy Technology Corp. Sanwa Supply Inc. Small Keyboard
Bus 002 Device 005: ID 056e:0035 Elecom Co., Ltd
Bus 002 Device 003: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$ ls /dev
------------------------------------------------------------
次にSDRドングルを接続してHDDのアクセスランプが消えたら、再度USBデバイスと/devの様子を見る。
SDRドングルが追加されたことを確認する。自分の場合は"Realtek Semiconductor Corp. RTL2838 DVB-T"が認識できた。
/devに"swradio0"などが追加されたことを確認する。
------------------------------------------------------------
$ lsusb
Bus 002 Device 008: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
Bus 002 Device 004: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 002 Device 006: ID 099a:0638 Zippy Technology Corp. Sanwa Supply Inc. Small Keyboard
Bus 002 Device 005: ID 056e:0035 Elecom Co., Ltd
Bus 002 Device 003: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$ ls /dev
------------------------------------------------------------
★SDRドングルは消費電流が多いようで結構暖かくなります。PCのUSBポートに直結か、バスパワーのUSB HUBの使用をオススメします。
★他のPC環境(WindowsのSDR#で実験時)で実施した時、USB3.0のポートに接続したらSDRドングルが認識されず、USB2.0のHUBを介したら認識された事がありました。原因は不明。
[gqrxの起動]
端末で以下のコマンドを実行する。
------------------------------------------------------------
$ gqrx &
------------------------------------------------------------
初回はGUI画面で"gqrx"の"Configure I/O device"画面が起動する。
この画面でDeviceを選択する。

自分の場合は"Realtek RTL2838UHIDIR ..."を選択したら動作した。
設定して[OK]をクリックすると、続けてGqrxのGUI画面が起動した。
Deviceの選択はGqrxの[FIle] → [I/O Device]で"Configure I/O device"画面を開いて設定することもできる。
また、ソフトウェア一覧の"Gqrx"のIconをクリックしても起動する。
[FIle]のすぐ下の三角"再生ボタン"の様なIconをクリックすると受信が始まる。
受信中に周波数やFM/AMなどのモードが切り替えられる。
★受信中にI/O Deviceを変更するとGqrxがハングアップするので、Deviceの設定変更時はかならず受信を止めてから行うこと。
まずアンテナを設置する。今回は室内に2m程度の銅線を張って適当なアンテナを作成した。
WFM(stereo)の設定で地元のFM曲が数局受信できた。WideFMだけあって高音質である。普通のラジオで受信できるFM局は全て受信できた。
50MHz帯, 144MHz帯のアマチュア無線のローカル局の電波は、辛うじて受信できるレベル。野外に周波数帯に合うちゃんとしたアンテナを設置すればもっと受信できそうだ。

[アップコンバーターの接続]
次に、SDRドングルとアンテナの間に、中波帯、短波帯を受信するためのアップコンバーターを接続してみた。
これはSDRドングルが受信できない25MHz以下の波数帯を受信可能にするものである。
具体的には30MHzまでの受信周波数を100MHz高いSDRドングルが受信可能な周波数帯に変換するもので、例えばGqrxで110MHzにチューニングすれば、実際には10MHzが受信できるという仕組みである。自分が使用したアップコンバーターはオークションで入手した組み立てキットである。もちろん完成品もAmazonなどで数種類の製品を見つけることができる。
受信周波数が100MHz高く変換されるため、Gqrxで表示する受信周波数も100MHz高くなるが、Gqrxの[FIle] → [I/O Device]で"Configure I/O device"画面を開いて"LNB LO"の設定を"-100MHz"に設定することで、アップコンバーター接続時に受信周波数表示が100MHz高くなった分を相殺して、受信周波数を正しく表示させることができる。

室内の適当なアンテナでも中波帯の国内放送や短波帯の海外放送も結構受信できる。7MHz帯のアマチュア無線の電波も辛うじて受信できた。
アマチュア無線の音声が聞こえ、FFT表示も辛うじて信号が見えた。

また、アマチュア無線のCWの信号が聞こえた。FFT表示で辛うじて点線のように見える。

ここでもアンテナが重要そうだが、ハムバンド近傍に強力な海外放送の電波がある。アンテナを大きして感度を上げると今度はSDRドングルのADCのダイナミックレンジをオーバーする可能性があり、LNAのGainを手動で調整したりして試してみる、受信の"コツ"をつかむのが結構難しい。
以下はハムバンド近傍の海外放送を受信しているところ。これはこれで綺麗に受信できる。

SDRドングルの受信周波数は非常に広く、今回紹介した格安のSDRドングルでも1GHzを超える周波数帯が受信可能である。こういった高い周波数帯は何に使われているのか調べないと正直全く判らない。様々な可能性を秘めているので今後も実験を続けていこう。
[Gqrx SDR]
http://gqrx.dk/
スポンサーサイト