0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PCでラジオ -SDRで遊ぼう-

Posted at

参考

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ライフを

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?