ソフトウェア制御のUSRPでマイクロ秒単位の送受信制御を行う

GNURadioでHackRFやBladeRFのIQデータが受信できない場合の対処法

こんにちはドルフィンシステム福島です。


何故かIQデータが受信できない

HackRFやBladeRFを接続してもIQデータが受信できない場合があります。
このような場合はエラーが発生していないか確認してください。


GRC左下のメッセージをよく見ます。


メッセージの中程に、

gr-osmosdr 0.1.4 (0.1.4) gnuradio 3.7.11
built-in source types: file osmosdr fcd rtl rtl_tcp uhd miri hackrf bladerf rfspace airspy airspyhf soapy redpitaya freesrp
[WARNING @ libusb.c:307] Found a bladeRF via VID/PID, but could not open it due to insufficient permissions.

hackrf_open() failed: HACKRF_ERROR_NOT_FOUND (-5)

と表示されている場合、USBのアクセス権限が絡んでいる可能性があります。


権限が問題なのか?問題を特定する

権限が無い場合は、権限を付けてやれば問題なく動作するはずです。

まずGUIでターミナルを開いてGNURadio Companionを管理者権限で起動します。


$ sudo gnuradio-companion


これでIQデータが受信できていたら、権限の問題です。


USBデバイスを開けるように権限を与える

sudoでgrcを起動すれば動きますが、根本的な解決になりません。

USBデバイスの権限を設定しましょう。


BladeRFの場合

まずBladeRFのUSBベンダーID(VID)とプロダクトID(PID)を見つけます。

これは簡単でlsusbコマンドを実行すると、表示されます。


$ lsusb
Bus 002 Device 005: ID 2cf0:5246
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 010: ID 17ef:6047 Lenovo
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

えーと、この"2cf0:5246"がbladerfのVIDとPIDです。

bladerfと書かれていないのに何故分かるのか?bladerfをUSBポートから抜いて、lsusbを実行して比較してみてください。


設定ファイルを作成する

$ sudo nano /etc/udev/rules.d/50-bladerf-rule.rules SUBSYSTEM=="usb", ATTRS{idVendor}=="2cf0", ATTRS{idProduct}=="5246", MODE="0666"


次にルールを更新します。

$ sudo udevadm control --reload-rules

これでBladeRFを抜き差しするか、再起動してgrcで動作確認してください。


HackRFの場合

HackRFの場合は、

hackrf_open() failed: HACKRF_ERROR_NOT_FOUND (-5)

または、

hackrf_open() failed: HACKRF_ERROR_LIBUSB (-1000)

というエラーが発生します。

この場合の対応策は、手順が紹介されています。


I can't seem to access my HackRF under Linux
https://github.com/mossmann/hackrf/wiki/FAQ#i-cant-seem-to-access-my-hackrf-under-linux


設定ファイルを作成する

$ sudo nano /etc/udev/rules.d/51-hackrf-rule.rules ATTR{idVendor}=="1d50", ATTR{idProduct}=="604b", SYMLINK+="hackrf-jawbreaker-%k", MODE="660", GROUP="plugdev" ATTR{idVendor}=="1d50", ATTR{idProduct}=="6089", SYMLINK+="hackrf-one-%k", MODE="660", GROUP="plugdev" ATTR{idVendor}=="1fc9", ATTR{idProduct}=="000c", SYMLINK+="hackrf-dfu-%k", MODE="660", GROUP="plugdev

$ sudo nano /etc/group plugdev:x:46:ubuntu,使用するユーザ名

グループplugdevに使用するユーザ名を書き入れる。

ルールを更新します。

$ sudo udevadm control --reload-rules $ sudo shutdown -r now

これでHackRFを抜き差しすれば良さそうですが、私の場合は再起動しないと正常動作しませんでしたので、再起動をしておきます。


以上、ドルフィンシステム福島でした。

コメント