HackRF OneをGNURadioで使う

HackRF OneはオープンソースのSDRプラットフォームで、ハード・ソフトの全ての設計情報がGitHub上に公開されている。

GitHub - greatscottgadgets/hackrf: low cost software radio platform
lowcostsoftwareradioplatform.Contributetogreatscottgadgets/hackrfdevelopmentbycreatinganaccountonGitHub.

元々はGreat Scott Gadgetsというベンチャーがクラウドファンディングを募って始めた物らしい。

今回はこのHacRF Oneをセットアップして使えるようにしてみたので、記事にまとめる。

スポンサーリンク

中国製の格安品をAliExpressで購入

HackRF One本体は日本では本家Great Scott Gadgets製の物が3〜4万円で売っているけれど、中国製なら格安で手に入る。そもそもハードもオープンソースなんだから格安品ってだけでニセモノとは言えないでしょう、という事でお約束のAliExpressにてケース付きで約1万円の物を購入。(この写真のセットは2020年秋頃は買えたけれど、現在はもう売っていないようだ)

photo

外付けの高精度クロックのオプションも追加。

photo

ケースに収めて付属のロッドアンテナをセット。手のひらサイズで見た目も悪くない。

photo

ファームウエアの更新

ファームウエアの更新方法は、GitHub上のページに解説がある。

GitHub - greatscottgadgets/hackrf: low cost software radio platform
lowcostsoftwareradioplatform.Contributetogreatscottgadgets/hackrfdevelopmentbycreatinganaccountonGitHub.

ファームウエアが古いとPCで正常に認識出来ない場合があるので、まずはファームウエアのインストールを行う。

ファームウエア書き込みツールのインストール

GitHubではファームウエア書き込みなどのツール類は基本的にソース提供でバイナリ配布しておらず、Windows環境だと少々面倒。Ubuntuであれば、一発インストール可能。

sudo apt install hackrf

本体へのファームウエア書き込み

ファームウエアのバイナリはGitHubで配布されているリリースパッケージに含まれている。

Release release 2023.01.1 · greatscottgadgets/hackrf
Toupgradetothisrelease,youmustupdatelibhackrfandhackrf-toolsonyourhostcomputer.YoumustalsoupdatefirmwareonyourHackRF.Thisreleaseincludesthehardwaredesignandsoft...

パッケージをダウンロードして展開しfirmware-bin/に置いてあるバイナリを焼けばOK。

cd firmware-bin/
hackrf_spiflash -w hackrf_one_usb.bin

書き込みは一瞬で終わってしまう。hackrf_infoを実行して、Firmware Versionの欄に焼いたファームウエアと同じバージョンが表示されれば成功だ。

$ hackrf_info 
hackrf_info version: unknown
libhackrf version: unknown (0.5)
Found HackRF
Index: 0
Serial number: 00000000000000000888XXdc24a77XXX
Board ID Number: 2 (HackRF One)
Firmware Version: 2021.03.1 (API:1.04)
Part ID Number: 0xa000cb3c 0x0058475d

GNURadio用入出力ブロックのインストール

OsmoSDRはHacRF Oneとは別のSDRだが、GNURadio用入出力ブロックgr-osmosdrはRTL-SDRやHackRF Oneにも対応している。

こちらもソース配布が基本なのだが、Ubuntuであればバイナリインストール可能だ。

sudo apt install gr-osmosdr

…と簡単な筈が、自分のUbuntu18.04環境ではバイナリインストールだとうまく動作しなかったので、ソースからビルドを実行した。

まずはHackRF Oneの開発用ライブラリのインストール。

sudo apt install hackrf libhackrf-dev

osmosdrのリポジトリを持ってくる。

git clone git://git.osmocom.org/gr-osmosdr
cd gr-osmosdr/

インストール済みのGNURadioが現時点で最新のバージョン3.9の場合は上のコマンドだけでOK。手元のバージョンは3.8なので、以下のコマンドでバージョン3.8対応のソースを持ってくる。(3.7の場合はgit checkout gr3.7を実行する)

git checkout gr3.8

あとはビルド&インストールすればOK。

mkdir build
cd build/
cmake ../
make
sudo make install

FMラジオを動かしてみる

以前RTL-SDR(USBワンセグチューナ)で試した時と同様、FMラジオのフローグラフを動かしてみた。

maro

設定はRTL-SDR Sourceのブロックをダブルクリックしてプロパティ画面を開き、”Device Arguments”に”hackrf=0″を指定する。他は基本的に以前の記事で作ったFMラジオのフローグラフと同じでOKだ。

maro

まとめ

オープンソースSDRのHacRF Oneをセットアップして動かしてみた。今回はFMラジオを動かしただけだったけど、RTL-SDRより対応周波数が広く(1MHz〜6GHz)用途が広がりそうだ。

コメント