0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SDR x HackRF One で遊び始めよう on macOS

Posted at

SDRとは?

SDR(Software Defined Radio / ソフトウェア無線)とは、無線通信の処理をソフトウェアでやっちまおうぜ!というもの。まぁ、この Software Defined という言葉はこの10年ぐらいで耳にタコができるほど聞きまくった用語だと思う。

本来、いわゆる無線機では、

  • 周波数の選択
  • 変調・復調(AM / FM / FSK / QPSK など)
  • フィルタリング
  • 復号処理

といった機能の多くが、専用のアナログ回路やハードウェアロジックとして実装されていた。

そのため、対応できる通信方式はHW的に決め打ちであとから変更不可能になりがちである。まぁだいたいそう。後から変更するのは困難であった。

一方SDRでは、

  • アンテナで受信した電波を
  • なるべく早い段階でデジタル信号に変換(ADC)し
  • その後の処理を PCやSoC上のソフトウェアで実装 する

という構成をとる。

これにより、

  • コードを書き換えるだけで別の通信方式を扱える
  • スペクトラムアナライザ、復調器、プロトコル解析器などを自由に実装できる
  • 未知の信号を「とりあえず見てみる」ことができる

といった、まさにソフトウェアな柔軟性と可搬性が得られる。

つまりざっくり言えば、SDRは ソフトウェア的な無線機ってこと。もちろん、とはいえ全部をソフトウェアだけでどうにかはできないので、前提にハードウェア自体は必要になる。ただし、SDR対応のHWであるため、以前のような無線機に比べれば圧倒的な柔軟性を持っている

注意

本ページで言及するHackRFは送信機能が備わっています。
使い方によっては違法です。自己責任で管理および利用をお願いします。

SDRデバイス

一番有名なのは、こちらの HackRF One というデバイス。

あるいはもっと安くすませるならRTL-SDRというのも有名。というかこの記事の対象外のくせに申し訳ないが、基本的にはこっちをむしろおすすめしたい。

今回は前者の HackRF をベースに取り扱う。

ちなみに、両者のざっくり比較はこんな感じ。

項目 RTL-SDR HackRF One
想定価格帯 数千円〜1万円前後 5〜7万円前後
主用途 受信専用 送受信可能
送信(TX) ❌ 不可 ✅ 可能
受信(RX) ✅ 可能 ✅ 可能
周波数範囲 24 MHz〜1.7 GHz(モデル依存) 1 MHz〜6 GHz
同時帯域幅 2〜3 MHz 最大 20 MHz
ADC分解能 8 bit 8 bit
フルデュプレックス ❌(半二重)
法規制リスク 低(受信のみ) 高(送信=電波法違反の可能性高)

ちなみに、上位モデルの HackRF Pro も存在する。さらに2倍の値段になるが。

購入先

基本的にどちらもAmazonから購入可能。HackRFの場合は、こちらにて認められた代理店の一覧を知ることができる。これらのECサイトから購入するのが一番確実だろう。

日本においては、HackRFは以前は秋月が正式な代理店扱いであったのだが、今は売り切れになっている。

ただし、↑の一覧にもある NooElec の日本ECがAmazonにあるので、こちらからHackRFを購入可能

アリエクでも手に入るっちゃ入るが、そんなめっちゃ安い!ってほどじゃないので、日本国内で買っちゃったほうがいいんじゃないだろうか。

そもそもそんなに価格にこだわるなら、RTL-SDR を買った方が幸せになると思う。

HackRFをざっくり使ってみる

環境

  • MacBook M3 Pro
  • macOS Tahoe 26.1

下準備 (各種インストール)

先人たちに大感謝! もうbrewでめっちゃ簡単にやれる。

$ brew install hackrf

インストールあと、以下のコマンドで動作確認。この時点でHackRFをUSB接続しておくこと。ただつなぐだけでOK.

以下のようにボードが認識されていたらOK,

$ hackrf_info
hackrf_info version: 2024.02.1
libhackrf version: 2024.02.1 (0.9)
Found HackRF
Index: 0
Serial number: 0000000000000000ffffffdcff47adff
Board ID Number: 2 (HackRF One)
Firmware Version: 2024.02.1 (API:1.08)
Part ID Number: 0xa000cb3c 0xbc5d4f38
Hardware Revision: r10
Hardware appears to have been manufactured by Great Scott Gadgets.
Hardware supported by installed firmware:
    HackRF One

何らかの理由によって正しくUSB接続できてないと以下のように見つからない。

$ hackrf_info
hackrf_info version: 2024.02.1
libhackrf version: 2024.02.1 (0.9)
No HackRF boards found.

CLIで動作確認

もうこの時点でCLIレベルでHackRFを使ってSDRを試し始めることができる。

このコマンドで100Mhzをベースに復調前の生データをiqファイルとして保存する。

$ hackrf_transfer -r /tmp/test.iq -f 100000000 -s 3000000 -n 6000000

こちらはFM放送帯(76Mhz - 98Mhz)を10kHz刻みでスイープして強度を出力。

$ hackrf_sweep -f 76:98 -w 10000

ここまで動いてたらもう完璧も完璧。世の中のあらゆるSDRツールはバッチリ動くはず。

SWなスペアナでざっくり可視化

SDRに対応したOSSが続々と登場している。macOSで簡単に使えて効果的なのは Gqrx だろう。

めちゃくちゃ簡単なのでHackRFを買ったらまずはこれを試してみるのが良いとおもう。

こちらもHomebrew経由で簡単一発インストール可能。

$ brew install gqrx

起動してみると、まずは設定を問われる。すでにmacOSにUSB接続済みならDevice に表示されるはずなのでそれを選ぶだけ。まずは他の設定はデフォで良いと思う。

image.png

そうすると以下のように表示される。これだけでもうなんか楽しいw

image.png

動作確認: FMラジオ放送を聞いてみる

手始めにFMを聞いてみる。私は千葉市在住なので bayfm を聞いてみる。

千葉市なら 78Mhz なので単純にそこに合わせるだけ。あとはModeを WFMにする。場所にもよるだろうけどノイズ耐性がよいmono で最初はok. 局による。

たったこれだけでこんな感じでスペアナ表示しつつ、実際にFMラジオが聴けてしまう。めっちゃおもしろい!かんたん!

image.png

動作確認の例として、FMラジオを紹介したが、もちろん HackRFの性能範囲内なら何でも聞ける。

送信機能について

明らかに安い RTL-SDR との大きな違いがこれ。RTL-SDRは受信専用だが、HackRFの場合は送信もできる。GNU Radioを使えばかなり簡単にやれちゃう。

が、日本国内においては知識と技術を持った人間が相当意識しながら適切に扱わない限り違法である。まぁまず大体は違法になるといってもいい。

そのためここで送信機能について詳しい説明はしない。↑を満たせるような人はここでの解説なんかなくても簡単にやれちゃうと思う。

さいごに

HacRFの受信機能に特化して今後なにか面白いことを紹介できたらいいなと思っている。たとえばLPWAまわりとかで…

本ページでは詳しく解説してないが、実はSDRの世界では GNU Radio が一番有名であろう。そして一番強力である。まぁとんでもなく強力なツールである。

例えばgnuradio-companionを使えばGUIでポチポチしながら色々加工やらデコードやらできてしまう。
もちろんコード書いて処理させることも可能。

世の中に情報自体は転がっているので、それらを参考にしながらHackRFでかなり遊べるのは間違いない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?