HackRFOneとGNURadio(Companion)をWindowsで使ってみる
最近、仕事でSDR(software defined radio=ソフトウェア無線)を使う機会がありそうなので、備忘録とタイピング練習を兼ねて書く練習をする。
これらを使うとなにができるか
・2.4GHz帯とか、電波の様子を見ることができる
・AMFMラジオを受信してPCで聞ける
・・なんだったらAMFMトランスミッタもできる
・ASK、PSKなどのデジタル通信の送受信を色々試せる
・BTとか電波通信のスニッファができるかもしれない
GNURadioのバイナリをインストールする
GNURadio公式のWikiには既に書かれているが、Win向けにビルド済みのバイナリが配布されている。
ここから、自分の環境にあったインストーラをダウンロードしてくる。
よくわからなければ下記のようにAnyCPUと書かれているものの最新版でよい。
この時点で64bit版のバイナリしかないので、未だに32bitOSを使っているひとは今すぐ64bit版を買ってこよう
インストール時、特に聞かれることはない。
パスを通す
GNURadioのインストール時に、対応しているSDRボードのツール群もインストールされている。(BladeRFやHackRFのものももちろんある)
しかし、そのままではパスが通っていないので自分でパスを通す必要がある。
私の場合、Dドライブにいれたので
D:\Program Files\GNURadio-3.7\bin
配下に色々なバイナリ群が置いてあったのでここへパスを通す。
パスの通しかたは
Windows で環境変数 PATH をいじる方法のまとめ - Qiita
がわかりやすい。
※SDRボード側の用意しているツール群をインストール(ないしビルド)する必要はあるか?
このへんで、ほかの記事を並行して見ている人は「このあとはHackRF由来のツールもインストールするんだろ?」と思う人もいると思うが、
少なくともHackRFを利用する上でその必要はない。
HackRFのgithubレポジトリの説明を見ると、自分で一からビルドしなければいけない風に書いてあるが、ビルド済みのものをGNURadioが用意してくれている。CMakeやらcygwinを使ってビルドする必要はない
(それに気づかずずいぶんと時間を消費してしまった・・・)
BladeRFについては、ボードのUSB側ファームウェアの更新などをインストール時にしてくれるのでnuandから用意されているインストーラーは使うと楽。
それにfpga側ファームウェアのロードなどもしなければいけなので、一度nuand提供のgetting startedを読んだほうが良い。
HackRFOneを繋いでドライバ入れる
インストールしてパスを通したら、HackRFOneをPCに繋ぐ。
ドライバのインストールが必要なので、先ほど通したパスの中にある
zadig.exeでドライバのインストールを行う。
なければ本家がここにあるので、ダウンロードしてくる。
起動してもリストボックスに何のデバイスもなければ、Options->List All Devices
を選択する
HackRFOneを選択して、既にドライバーがあれば(左側の表示)そのままで良いし、何もなければInstall Driverを押下。
ドライバはWinUSB含めて3種類ほどあったが、WinUSBで良い。
動作確認
ここまできたら、コマンドプロンプトを開き、以下のコマンドを入力
hackrf_info
こんな感じでFound HackRFと共にバージョンやシリアル番号が取得できれば準備完了
GNURadio上で動かしてみる
GNURadio Companionを起動する
しばらくすると、こんな感じの画面が現れる。
ここにフロー図を書くことで簡単に信号処理を行うことができる。
GNURadioの操作方法については、このチュートリアルが大変わかりやすい。
英語はGoogle翻訳に突っ込めばほぼ理解できる。
このなかの
Core concepts of GNU Radio applications
は、自分でフロー図を書くときに必要になるのであとで目を通そう。
とりあえずFMを受信してみる
HackRFのチュートリアルから、FMラジオの受信を行う。
Getting Started with HackRF and GNU Radio · mossmann/hackrf Wiki · GitHub
チュートリアルのページにある”You can find the GNU Radio Companion source file here”となっているリンクから、fm_radio_rc.grcというxmlをダウンロードする。
これはフロー図のデータなので、GNURadioConpanionで読み込むことができる。
実行すると、設定した周波数の音声を聞くことができる。(要アンテナ)