RTL-SDR 【2017.7.2】 |
現在、赤ドラゴンフルーツと格闘中で、随分と楽しませてもらっています。これは話題がけっこうあって、まとめるには、ちょっと時間がかかりそうなので、その間はここに寄り道します。 すこし前に戻ってドングル(RTL-SDR)の話になります。
そういえば、数年前、RTL-SDRドングルがもてはやされた頃、私はまったく興味がなく放置プレイでした。というのも、TRX305を弄っていた1年くらい前の流行りだったので、ドングルは全くのおもちゃに見えて、とっても食指の働くものではなかったからです。しかしながら、ちょっと「思うところ」があって、もう、皆さんが飽きてしまったのか、話題から捨て置かれているドングルと遊び始めることになりました。その理由についてはおいおい明らかにしていこうと思います。
ところで、このUSBドングルって、情報を得るうちに1000円にしてはそこそこ良く考えられているということが解りました。A/Dこそ8ビットの分解能ですが、チューナーがうまいことその処理能力を補うように設計されているようで、ドングルとしての「感度」は、けっこう取れているようなのです。MATLABに関連したE-BOOK(RTL-SDRを題材)に、このドングルの構成が書いてあったので、以下に転記しておきます。
USBドングルの構成
USBドングルの外観
USBドングルの中身
上は通常、下がTCXOつき
これを見ると、うまいハイブリッド構成だなぁと思います。周波数帯域は25〜1750MHz程度ですが、オンチップPLL-VCOとミクサーからなるチューナーと、最大で28.8MHzサンプリングのA/D、NCOと入力をベースバンドに落とすI/Qミクサー、サンプリングレート変換のダウンサンプラー+デシメーションフィルターからなるベースバンド処理チップからなります。問題は、TV信号用の処理チップなのでデシメーションフィルターにどの程度リソースが割り振ることができるのか、そのあたりで選択度の特性が決ってしまいます。また、チューナー部のIFの「フィルタ」もオンチップ(RFは外付け)だったり、LNAのIM特性等からくる不全性が気になるわけです。それは、もちろん、今回の受信対象が「アマチュア無線通信」ですから。
このチューナ(R820T)ですが、データシートがあったのでDLしてみると、けっこうすごいことが書いてあります。例えば、VCOのC/Nですが、10kHz離れでC/Nが-98dBC/Hzとありますが、これがなんとここで示した大陸由来パチモン廉価スペアナ(笑)よりはいい値です。ただ、周波数もまったく書いてないので、なんだか当てにはならないデータかもしれませんが。また、感度はNFが3dB、LNAのゲインが最小の時のIIP3=35dBmなんて言っています。これって、ミクサーのIIP3がそれに近いということなので、値が本当ならば仰天モノです。
チューナの構成とスペック
チューナの構成とスペック
おまけにイメージレスポンスは−65dBって、これも「本当ですか?」と言いたくなります。アナログで、いくら高精度のイメージリジェクトミクサーを「自作」しても、ここまで特性を揃えることは不可能です。が、しかし1000円のSDRについてるチューナチップで、こんな値は普通に実現されます。なんだか、アナログで自作する気が失せてしまいますね。
こうなると、少なくともこのチューナは「スペック特性上からはまったく馬鹿にできない」ということができます。但し、このチューナの製造元はどうも大陸企業のように見えます。なので、このスペックのどれだけが「本物」なのかは、相当に眉になにかつけて見ないといけないかもしれません(笑)。
さて、このドングル、能書きを垂れていてもしかたがないので、さっそく使ってみます。と、その前に、このドングルを改造して、ケースに実装した様子を以下に示しておきます。
まずは、ともかくダイレクトサンプリングの改造をしておきます。これはあとあといろいろな応用が効きますから、是非、実施しておきたいものです。もともとRTL-SDRは受信帯域が25MHz〜1750MHzなので、HFの受信には、周波数変換をするチューナが、返って邪魔になってしまうことが解ります。もし、RTL-SDRを無改造でHF受信を行うのであれば、アップコンバージョンする必要があるからです。
こうなると、昔のコリンズタイプじゃありませんが、ミクサーを2段も通過するので、妨害波特性がよろしくなくなることが想定されます。なので、ダイレクトサンプリングを用いて、HFを受信するための「外付けフロントエンド」を自作できるようにしておきたいですね。これには、ゼロIF(複素周波数)に落とし込むI/Qミクサー、NCOダウンサンプルを行うベースバンド処理チップの入力に、そのまま、HF信号入力できるパスを設けてしまうということになります。
昔の記事を見ていると、この改造は、チューナからベースバンド処理チップへの信号線をぶった切って、そこに外部からの信号を入力しているようですが、「いまどき」のドングルを見ると、なんと!ダイレクトサンプル入力が可能となりそうな入力端子が設けられているではありませんか。下の写真を見てください。ちゃんと信号の取出し穴が開いています。
ダイレクトサンプリング入力!!!
矢印のポートは接続されていない
このドングルの回路を探してみると、ありました。こちらからDLしたのですが、なんと、このドングルのベースバンド処理チップは、信号入力端子が2系統あるようで、従来は使っていなかったと思われる入力系統(QP QN)に引出端子を設けてくれているようなのです。こいつは使わない訳にはいきません。
ダイレクトサンプリング入力!!!
ピン4,5が未接続のダイレクトサンプル入力として使用できる!
考えてみるとこれはラッキーです。ベースバンド処理チップの信号入力系統を「切り替えられれば」、通常のチューナ付ドングルとダイレクトサンプルの実験が一つのドングルで実現できることになるからです。ということで、ネットであさったここの記述をもとに、外部引出しのための改造を行いました。
ダイレクトサンプルのための改造
FT37#43にトリファイラ8tとDCカットのC(0.01μF×2)で得られたバランス信号を先のQP/QNに入力
これがその改造ですが、μsの大きなトロイダルコアに平衡不平衡変換のトランスとDCカットのチップコンデンサをくっつけて、外部から信号入力を可としています。文字で表現しただけですが、回路図は、実態物をみれば容易に分かると思いますので省略します。なお、このコイル達はケースカバーを掛けても干渉しないように実装することが出来ます。
これで、2用途(チューナ付&ダイレクトサンプル)のドングルが完成したわけですが、このままいじっていると、ふとしたストレスで破壊されそうなので、ケースインすることにしました。アンテナ2系統とUSBを引き出して、ドングルを固定してしまいます。この様子を以下に示します。
ドングルをケースに入れた様子
入力が2系統あるのは、左がダイレクトサンプル入力、右がチューナ入力となっている
さて、次はSDRのソフトですが、実は最初にトライしたのはPCを用いたHDSDRというソフトです。これは、この界隈では良く使われるソフトみたいなのですが、その紹介だと、もう、3年以上も前に皆さんがフィーバーした後なので、ちょっと情報価値が低いと思われます。
なので、今回はPCではなく、ラズパイ上で動かしてみることにしました。ラズパイも最近がバージョン3が当たり前になってきていますので、そちらを使うことになります。
ラズパイ3の様子
ラズパイは掌にのるコンピュータということですが、なんのなんのLINUXがしっかり動くPCそのものがこんなに小さくなってきたのは驚きです。1GHzのCPUが載っているのですから、処理能力はAVRを搭載するアルディーノとは比べ物になりません。能力的には直感ですが二桁近い差があるのではと思います。ラズパイは制限はあるとはいえ、PCと同じような作業ができるが、アルディーノは周辺機器をコントロールするのが精一杯で、信号処理なんて、とてもとても・・・という感じですからね。
ラズパイ3では、ドングルから吐き出されるI/Q信号のベースバンド復調処理を行うのですが、先の来夢SDRのように、USB3.0が必要なほどの高速データを処理できるわけではありません。ですが、ドングルのように、最大の帯域が2.4MHz程度の処理ならば、なんとかラズパイ3は処理が追いつくようです。
はい、次は、肝心のソフトです。ここは、実は370MLの7L4WVUさんにお世話になりました。当初、370MLでラズパイ上で動くSDRソフトって無いですかねーー?と質問したら、すでに、7L4WVUさんは、手頃なソフトを見つけていて、即座に教えてもらいました。こちらの記事に記載があります。なんと、目的は一緒でして、ラズパイでSDRというかスペクトラム表示ができれば、既存受信機の外付けモニタができるなぁ・・・と考えていたのです。なので、WVUさん的(もちろんPWZ的にも同じ)には、スペクトラム表示がメイン用途で、SDR受信は二の次という感じでした。
おっと、話が逸れました。その肝心のソフトですが、MAC方面では使う人が多いようなのですが、GQRXというものです。このソフトは、軽快なのでRP3でも(一応RP2でも)動くのです。先の記事にあったURLからダウンロードして、同じページのインストラクションに書いてある数行のおまじないを実行すれば動作し始めます。
まずは、ドングルをチューナーモード(というか本来の使い方)でアンテナを接続し、デフォルトの動作をさせてみます。この場合、I/ODeviceの設定はRTL-SDRのデフォルト設定でOKです。
RP3でのドングル受信スクリーンショット
ディスプレイは大昔に購入した「アナログTV+VGA入力のポータブルTV!」
安物の中華HDMI to VGAコンバータを介して接続しています。
ディスプレイが安物なので、色あいは最悪に近いです。
こんな感じに見えます。適当な受信対象が無かったので定番のFM波を受信してみます。しかしながら、音を聞こうかと思って、ラズパイ3のオーディオ出力端子を見たのですが、音が出ている気配がありません。もともと、スペクトラルモニタとしてしか期待していなかったのですが、やっぱり音が出ないのは寂しい限りです。それで、あちこち設定をつついて回りましたが、一向に拉致じゃなかったラチが空きません。GQRXのオーディオ設定は散々弄ったのですが、見当はずれのようです。
しばらくは先に書いた来夢SDRの方に関わっていたので、この件はほおっておいたのですが、ラズビアンOSの設定って何かないのか?と気が付いて、OSの設定を弄ってみることにしました。LXターミナルからsudo
raspi-configコマンドでオーディオ設定のページに飛んで、以下のように設定してみました。
sudo raspi-config
→advanced options
→Audio
Choose the audio output
→Force 3.5mm jack
(→は選択を示す)
とやると何事も無かったように音が出るようになりました。OSをインストールしても、こういうパラメータはデフォルトで自動設定はされないようですね。私から見ると、ちょっと不親切ですが、Windowsしか使ってないと、こういう「必要な設定は自分で行う」というLINUXでは当たり前の流儀がかえって新鮮に見えます(わかっていないと面倒至極ではありますけど)。
とりあえず、動き出したので、一番重要な感度について測定してみました。周波数は50MHzです。やはり測定中はAGCによって無信号時と信号が有るときのノイズレベルは異なるようです。そこで、前回のこの測定法のお出ましになります。
結果はちょっとびっくりです。50MHzのUSB受信時0.17μVrms@50Ωの信号入力でS/N=10dBになりました。これはかなり良好な値ではないでしょうか?なおチューナゲインはほぼ最大にセッティングしてあります。もちろん、ゲインを減らすと、感度も劣化し、データシートに有るとおりIIP3も向上していくのでしょう。(ゲイン最小でIIP3=35dBmは本当かどうか興味がありますね)。
さて、ドングル記事の初回は感度が測定できたこの辺にしておきましょうか。以降は、ハムバンドの受信とダイレクトサンプルにおける受信法について書いて行こうと思っています。