2023年1月23日月曜日

 

https://falconblog.org/hackrf-setup-guide_ubuntu/   参照



バッタモンHackRF one ファーム入れ替えたら動いた。しかし、受信感度はあまり良くない。でも、こんなもんだろう。SGとして良い。。2021年のfairmはバグがわんさかある??2022.9 latest firm is good!

HackRF oneのファームウェア更新方法(ubuntu編)

Radio

先日購入した高性能SDR HackRFのファームウェアの更新方法を記載します。

ファームウェア関連のバージョン確認と書込みは、hackrfのツールが必要でWindowsとUbuntuで実施できます。今回は、前回の記事でも記載したWindows10上に構築したVMwareのUbuntu18.04上で行ってみました。

Windowsでファームバージョンアップをする場合はこちらの記事を参照してください。

ファームウェアのバージョン確認

最初にHackRFのUSBをPCに差し込み、VMwareの設定はubuntu側に接続します。

VMware経由だとUSBの速度が制限されますが、ファーム更新程度の通信容量なら速度がでなくても失敗することはありませんでした。

次にHackRFの関連ツールをインストールします。

falcon@ubuntu:~$ sudo apt install hackrf

VMwareのレジュームしてから時間が経過していると、ロックファイルが解除できずインストール自体が拒否されるので、その時はubuntuを再起動してください。

HackRFの関連ツールがインストール後、hackrf_infoでファームウェアのバージョンを確認します。

falcon@ubuntu:~$ hackrf_info
hackrf_info version: unknown
libhackrf version: unknown (0.5)
Found HackRF
Index: 0
Serial number: 0000000000000000f77c60dc2a979ac3
Board ID Number: 2 (HackRF One)
Firmware Version: 2017.02.1 (API:1.02)
Part ID Number: 0xa000cb3c 0x006f4752

実装されているファームバージョンは2017.2.1でした。

HackRFのファームバージョンアップ方法

最新ファームウェアはgithubで公開されており、最新版は2021.3.1となっていましたので、入手してインストールをおこなってみます。

VMwareを使っている場合は、Windowsでダウンロードしてzipを解凍し、解凍したフォルダをVMwareのUbuntuに貼り付けることで、コマンド操作なしに入手でき簡単です。


Ubuntuへコピーが終わると、hackrf_spiflashコマンドでファームウェアをupdateすることができます。転送量は、35kbytes程なので書き換えは瞬時に完了します。

falcon@ubuntu:~/hackrf-2021.03.1/firmware-bin$ hackrf_spiflash -w hackrf_one_usb.bin
File size 35444 bytes.
Erasing SPI flash.
Writing 35444 bytes at 0x000000.

書き換え後のファームウェアの確認は、HackRFの電源をON/OFFしてSDRを再起動してから確認してください。再起動をしないと情報がキャッシュされているためか、古いバージョン表示のままとなりますので、HackRFの電源ON/OFFは忘れないようにしてください。

falcon@ubuntu:~$ hackrf_info
hackrf_info version: unknown
libhackrf version: unknown (0.5)
Found HackRF
Index: 0
Serial number: 0000000000000000f77c60dc2a979ac3
Board ID Number: 2 (HackRF One)
Firmware Version: 2021.03.1 (API:1.04)
Part ID Number: 0xa000cb3c 0x006f4752

また、HackRFをUbuntu上のGNUradioで動作させるには、入出ブロックに"gr-osmosdr"というモジュールが必要です。こちらのインストール方法は過去記事も参考に実施してください。

$ sudo apt install gr-osmosdr

バージョンダウン方法も同じ

HackRF専用ソフトである「HackRF Spectrum Analyzer」は、ファームバージョン2021.03では動作しなかったので、ファームのバージョンダウンが必要です。

バージョンダウン方法はアップデートと全く同じです。

githubからインストールしたいファームウェアをダウンロードして、hackrf_spiflushで指定するファイル内容を変えるだけで、バージョンダウンできます。

falcon@ubuntu:~/hackrf/hackrf-2018.01.1/firmware-bin$ hackrf_spiflash -w hackrf_one_usb.bin
File size 22024 bytes.
Erasing SPI flash.
Writing 22024 bytes at 0x000000.

以上、UbuntuでのHackRFのファームウェア更新方法でした。

2023年1月22日日曜日

 Gnu Radio

 Reff::

https://falconblog.org/ubuntu-gnu-radio-install/#google_vignette

GNUradioのバージョンに注意

GNUradioの最新版は3.8ですが、v3.7から多くの変更がありますので、過去のソフト資産を使いたい場合は、バージョンを上げる際には細心の注意が必要です。

  • python2からpython3へ変更
  • GRCファイルの記録様式がXML形式からYAML形式に変更
  • gr-qtguiGUIがQt4からQt5へ変更
  • gr-comedi、gr-fcd、およびgr-wxguiモジュールのサポートが終了
  •  PyQwtベースのユーティリティはコンポジションから削除

特にGRCファイルの記録様式がYAML形式に変わっている部分は要注意で、GRCファイルをGNUradio3.8で読み込んで保存してしまうと、GNUradio3.7で読み込めない形式となってしまします。

今後、gr-isdbtというワンセグデコーダを使って、ワンセグ受信にトライしていきたいと考えておりgr-isdbtの開発環境と合わせる必要がありますので、今回はGNUradio3.7をインストールすることにします。

制約について

本記事の対象はRTL2832, RTL2838が実装されたUSBチューナー限定です。

アナログデバイセズのADLAM-Pulto等の高機能チューナーは、メーカの専用ライブラリをいれないと動作しないようですので、この要領だけではGNUradioは動作しません。

またwindows10のWSL/WSL2での仮想ubuntu環境での動作は出来ていません。GNUradioのインストールと編集作業は可能ですが、USBデバイスや音声デバイスなどのIOデバイスのアクセスがあると実行時にエラーとなります。

ADLAM-PulutoはWindows10のWSL/WSL2で動作するそうなので、RTL2832/2838はおそらくWindowsのZadigドライバーと競合していると想定されます。

Windows10でお使いの場合は、Windows版のGNUradioを使う方が良さそうです。Windows版のGNUradioではUbuntuでビルドが必要なモジュールがインストールできませんが、解決方法は探っていきたいと思います。

GNUradioの入手とインストール

GNUradioはバージョン間の互換性が乏しいので、必ずバージョンを確認してからインストールします。

apt-cacheで提供されているバージョンを確認します。ubuntu18.04の場合は、バージョン3.7.11が最終リリースでした。

$ sudo apt update

$ apt-cache madison gnuradio
gnuradio | 3.7.11-10 | http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu bionic/universe amd64 Packages

$ apt-cache policy gnuradio
gnuradio:
インストールされているバージョン: (なし)
候補: 3.7.11-10
バージョンテーブル:
*** 3.7.11-10 500
500 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu bionic/universe amd64 Packages
100 /var/lib/dpkg/status
$ sudo apt install gnuradio

RTL-SDR用のIOドライバーモジュールをインストールします。GNUradioのRTL-SDR用のIOドライバーはgr-osmosdrにまとめられています。

$ apt-cache policy gr-osmosdr 
gr-osmosdr:
  インストールされているバージョン: (なし)
  候補:               0.1.4-14build1
  バージョンテーブル:
 *** 0.1.4-14build1 500
        500 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu bionic/universe amd64 Packages
        100 /var/lib/dpkg/status
$ sudo apt install gr-osmosdr

一般ユーザーがデバイスにアクセスできるようにパーミッションを設定します。

lsusbコマンドでRTL283xのポートを表示させると次のような結果が表示されます。

$ sudo lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
Bus 001 Device 002: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 003: ID 04b4:120d Cypress Semiconductor Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-TがUSBチューナのポートになるので、/lib/udev/rules.d/60-librtlsdr0.rulesの該当する記述の権限設定を、0660→0666に書き換えます。(以下表示は適宜改行しています)

$ sudo nano /lib/udev/rules.d/60-librtlsdr0.rules

# RTL2832U OEM vid/pid, e.g. ezcap EzTV668 (E4000), Newsky TV28T (E4000/R820T) e<br />tc.<br />
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", ENV{ID_SOF<br />
TWARE_RADIO}="1", MODE="0666", GROUP="plugdev"  MODEを0660→0666に変更する

これでGNUradioのインストールは完了です。

Ubuntu版のGNUradio起動方法

GNUradioの起動は、端末ウィンドウのコマンドラインから gnuradio-companionと入力します。単にgnuradioと入力しても起動しないので注意しましょう。

$ gnuradio-companion 
Gtk-Message: 20:00:50.802: Failed to load module "canberra-gtk-module"
<<< Welcome to GNU Radio Companion 3.7.11 >>>

Block paths:
  /usr/share/gnuradio/grc/blocks
  /usr/local/share/gnuradio/grc/blocks

linux; GNU C++ version 7.3.0; Boost_106501; UHD_003.010.003.000-0-unknown

>>> Done

gnuradioが起動すると次のような画面が出て、あとの使い方はWindows版とほぼ同一です。

Failed to load module "canberra-gtk-module"というメッセージが出ますが、イベントサウンドを再生させるモジュールです。インストールしなくともgnuradioは動作しますが、不具合があると困るのでインストールしておきます。

canberra-gtk-module大きなモジュールでインストールに時間がかかりますので、gnuradioの動作後に実施しましょう。

$ sudo apt install canberra-gtk*

FMラジオで動作テストする

インストールが終わったらFMラジオのモジュールをロードしてFM放送が受信できることを確かめます。

GNUradioは、信号処理を得意とするpythonでコーディングされており、GUI周りも同じQTで組まれていますので、使い方はWindows版と差がなく、同じように使えます。

なおGRCファイルはWindows版と同じものを使いましたので適宜ご利用ください。

GNUradio FMtuner grc-file