参考
Rtl-sdr - rtl-sdr - Open Source Mobile Communications
Quick Start Guide
Soapy SDR plugin for RTL-SDR
Build Linux
BuildGuide
SDRとは
SDRは高性能なADCとPCを組み合わせたソフトウェアによるラジオです
SDRの基本的なことはこちらから
MacでのソフトウェアラジオはCubicSDRが簡単&スムーズかも♪
Macを万能受信機へとグレードアップしてゆく!!!
ソフトウェアラジオの自作!dsPICで計算した音を聴く
海外の実際のSDRを体験できるサイト
Wide-band WebSDR in Enschede, the Netherlands
SDRはかなり気になっていたんですがちょっとお値段張るので躊躇していたところ某店で安売りされているのを見て衝動買いしました
この記事はLinuxでSDRをやってみたいという人向けのメモ的なものです
なお高周波回路では信号が反射してしまうのを防ぐためインピーダンスマッチングをする必要があります
主にラジオ向けの受信機では同軸ケーブルとアンテナは通常は特性インピーダンス50Ωになることが想定されていますので同封されていなければ条件にあうものを準備してください
(秋葉原やアマゾンにあります)
またプラグ形状はSMAやMCXなどがあり当然変換アダプターも存在するので必要があればこちらも用意する必要があります
ドライバー
RTL-SDRっぽいUSBトングを買うとR820T2やR860と書かれていると思います
実機をセットしてみて
sudo lsusb
を実行したときに
Realtek Semiconductor Corp. RTL2838 DVB-T
が表示されればアタリです
RTL2832U向けのドライバーをインストールします
git clone https://github.com/osmocom/rtl-sdr.git
cd rtl-sdr
mkdir build
cd build
cmake .. -DINSTALL_UDEV_RULES=ON
make -j 4
sudo make install
sudo ldconfig
今回はnon-rootユーザーから使いたいのでudevもinstallします
SoapySDR
操作にはクロスプラットフォームのCubicSDRを使用します
トラブルになりやすいGUI関連のライブラリーに触れなくてはならない, SoapySDRを/usr/localではなく/usr/lib64にinstallしなくてはならない等, 多少面倒くさいので出来合いのものを使った方がビルドが安定します
(必要ならパッケージのアップデートで壊れない様にバージョンフィックスや再ビルドをした方がよいかも(?))
Fedora
sudo dnf install CubicSDR SoapySDR-devel
SoapySDRはさまざまな環境に対応するためすべてをまとめるSoapySDR本体の下にデバイスに対応する各モジュールがあるという構造になっているようです
これがCubicSDRのようなGUIソフトに読み込まれて動作するという方式です
RTL-SDRに使うモジュールがあるのでそれを用います
git clone https://github.com/pothosware/SoapyRTLSDR.git
cd SoapyRTLSDR
mkdir build
cd build
cmake ..
make
sudo make install
実機をセットしてテストします
そのままだと
Error probing device: Unable to open RTL-SDR device
と怒られてしまうのでドライバーの上書きを行います
sudo rmmod dvb_usb_rtl28xxu
echo 'blacklist dvb_usb_rtl28xxu' | sudo tee --append /etc/modprobe.d/blacklist-dvb_usb_rtl28xxu.conf
SoapySDRUtil --probe="driver=rtlsdr"
出力は例えばこのようになります
######################################################
## Soapy SDR -- the SDR abstraction library ##
######################################################
Probe device driver=rtlsdr
Found Rafael Micro R820T tuner
[INFO] Opening Generic RTL2832U OEM :: 00000001...
Found Rafael Micro R820T tuner
----------------------------------------------------
-- Device identification
----------------------------------------------------
driver=RTLSDR
hardware=R820T
index=0
origin=https://github.com/pothosware/SoapyRTLSDR
----------------------------------------------------
-- Peripheral summary
----------------------------------------------------
Channels: 1 Rx, 0 Tx
Timestamps: YES
Time sources: sw_ticks
Other Settings:
* Direct Sampling - RTL-SDR Direct Sampling Mode
[key=direct_samp, default=0, type=string, options=(0, 1, 2)]
* Offset Tune - RTL-SDR Offset Tuning Mode
[key=offset_tune, default=false, type=bool]
* I/Q Swap - RTL-SDR I/Q Swap Mode
[key=iq_swap, default=false, type=bool]
* Digital AGC - RTL-SDR digital AGC Mode
[key=digital_agc, default=false, type=bool]
* Test Mode - RTL-SDR Test Mode
[key=testmode, default=false, type=bool]
* Bias Tee - RTL-SDR Blog V.3 Bias-Tee Mode
[key=biastee, default=false, type=bool]
----------------------------------------------------
-- RX Channel 0
----------------------------------------------------
Full-duplex: NO
Supports AGC: YES
Stream formats: CS8, CS16, CF32
Native format: CS8 [full-scale=128]
Stream args:
* Buffer Size - Number of bytes per buffer, multiples of 512 only.
[key=bufflen, units=bytes, default=262144, type=int]
* Ring buffers - Number of buffers in the ring.
[key=buffers, units=buffers, default=15, type=int]
* Async buffers - Number of async usb buffers (advanced).
[key=asyncBuffs, units=buffers, default=0, type=int]
Antennas: RX
Full gain range: [0, 49.6] dB
TUNER gain range: [0, 49.6] dB
Full freq range: [23.999, 1764] MHz
RF freq range: [24, 1764] MHz
CORR freq range: [-0.001, 0.001] MHz
Sample rates: [0.225001, 0.3], [0.900001, 3.2] MSps
Filter bandwidths: [0, 8] MHz
実験
それではFMラジオを聞いてみましょう
日本では基本的に70-100MHzの周波数帯に収まっています
全国民放FM局・ワイドFM局一覧
(残念ながら高周波回路と低周波回路は本質的に異なるのでAMラジオの方は自分のものでは受信できませんでした)
(専用の回路とダイレクトサンプリングと組み合わせて低周波も検知できるトングもあるようです)
それでは, よいSDRライフを