Raspberry PiとRTL2832Uドングルを受信サーバとして使ってみるを参考にしたが、できるだけ楽をしたい。
まず、ライブラリ等のインストール (libusb、libtool、autoconf)
apt-get を使おう。まずインストールできるパッケージがあるかを
$ apt-cache search libusb
で調べる。libusb-1.0-0-dev が良さそう? ということで、
$ sudo apt-get install libusb-1.0-0-dev
autoconf と libtool も同様に、
$ sudo apt-get install autoconf $ sudo apt-get install libtool
git は、新しい Raspbian なら既に入っている。無ければ同様にインストールするか、OS を更新。
rtl-sdr のインストール
これはさすがにソースがいる。git でチェックアウトする。適当な場所で、
$ git clone git://git.osmocom.org/rtl-sdr.git
自動で rtl-sdr ディレクトリが出来て、その中にコードが入る。あとは適当に、
$ aclocal $ autoreconf --force --install $ ./configure $ make $ sudo make install $ sudo make install-udev-rules $ sudo ldconfig
として完了。
ドングルを繋いでテストしてみる。
$ rtl_test
しかし、
Found 1 device(s): 0: Generic, RTL2832U, SN: XXXXXXXXXXXXXXXXX Using device 0: Generic RTL2832U Kernel driver is active, or device is claimed by second instance of librtlsdr. In the first case, please either detach or blacklist the kernel module (dvb_usb_rtl28xxu), or enable automatic detaching at compile time. usb_claim_interface error -6 Failed to open rtlsdr device #0.
と出てうまくデバイスを開けないという。
標準ドライバを使わないように設定
これは、Linux がちゃんとドングルをTVチューナとして認識して、元々持っているテレビチューナ用カーネルドライバを割り当てているため。エラーメッセージにあるように、”Kernel driver is active” な状態。
$ lsmod
してみると、やはり dvb_usb_rtl28xxu がある。試しに
$ sudo rmmod dvb_usb_rtl28xxu
を実行してみると、ちゃんと rtl_test がドングルを開けるようになる。ちなみに
$ rtl_test -t
とすると、そのドングルで受信可能な周波数範囲を探れる。色々な周波数で PLL がロックするかどうか試して判定しているらしい。受信可能な最小〜最大周波数と、その中でも受信できない周波数範囲が表示される。
さて、rmmod することによって SDR として使えるようになったが、これは一時的にカーネルドライバを無効にしただけなので、再起動したり、次回ドングルを挿した時にはまた読み込まれてしまう。
今後、このドングルを普通のTVチューナとして利用する予定もないので (そもそも国内の放送と規格が違うし)、rtl_test のエラーメッセージにあったように、blacklist を使って恒久的にこれらのカーネルドライバを使用しないことにする。
Raspbian では、modprobe.d で出来そう。という事で、
$ sudo vim /etc/modprobe.d/rtl_blacklist.conf
とかして、
blacklist dvb_usb_rtl28xxu
blacklist rtl2832
という内容の設定ファイルを作ってみた。
これで、再起動しても OK になった。
Pingback: Raspberry Pi で ShinySDR を動かしてみる – りんごのマック