Open-Sourceプロジェクトで1 MHz~6 GHzのラジオ周波数を体験する方法

多くのWeb開発者は、ネットワークをソケットやHTTPリクエストという観点から考えることに慣れています。しかし、Wi-Fi、Bluetooth、ドア遥控などの形でデータが空へ飛び立つと、それはありふれた電磁波になります。長年にわたり、ラジオスペクトラムの探索は、何千ドルもするハードウェアを持つ専門家の領域ままでした。
状況は、Michael OssmannとGreat Scott GadgetsチームがHackRFをリリースした時に変わりました。安価なSDR(ソフトウェア無線)プラットフォームを作成し、回線図、ファームウェア、ソースコードのすべてを完全にオープンソース化了しました。
リポジトリの中身
リポジトリの greatscottgadgets/hackrf には、プロジェクトに関するすべての作業が集まっています。ハードウェアとソフトウェアの両方で作業するための単一エントリポイントです。
ソースコードの中には次のようなものがあります:
- PCBレイアウトとコンポーネント配置図
- LPC43xxマイクロコントローラーファームウェアとFPGAプラグインのソースコード
- System Cライブラリ
libhackrf - デバイス管理用のコンソールユーティリティ一式
- Sphinxドキュメントのソースファイル
プロジェクトはCで書かれています。ドキュメントはローカルでSphinxを使用してビルドでき、 готовый PDFファイルが必要な場合はLaTeXを使用します。
コードとユーティリティの深掘り
プロジェクトのソフトウェア部分は2つのレベルに分かれています。最初のレベルはライブラリ libhackrf です。低レベルのUSB通信を処理し、受信と送信のサンプル用のクリーンなC APIを提供します。2番目のレベルはコンソールユーティリティで、通常はここから始めることになります。
たとえば、433.92 MHzでラジオ信号をキャプチャするには、 hackrf_transfer ユーティリティを使用します:
hackrf_transfer -r capture.raw -f 433920000 -s 8000000
このコマンドは毎秒800万サンプルのレートで空気を記録し、複素数(I/Q)サンプルをバイナリファイルに保存します。このファイルは、GNU RadioやUniversal Radio Hackerで開いてプロトコルを解析できます。周波数をスキャンして使用中のチャンネルを特定する必要がある場合は、 hackrf_sweep ユーティリティが便利です:
hackrf_sweep -f 2400:2500 -l 32 -g 20
シンセサイザーの周波数を素早くスイープし、信号強度データを出力します。これを使えば、数秒で部屋のスペクトログラムを簡単に構築できます。
プログラマーにとっての実用的な価値
ラジオエンジニアリングの背景を持たないプログラマーがHackRFリポジトリを勉強する理由はありますか?
第一に、USBを介したハードウェア通信用のソフトウェアをアーキテクチャする方法の実用的な例です。ライブラリ libhackrf のコードでは、サンプルを失うことなくリアルタイムデータストリームを処理する方法を確認できます。
第二に、リポジトリはリバースエンジニアリングへの扉を開きます。このプラットフォームを使用して、人々はドア遥控、 tire pressure sensors、RFIDタグ、衛星航法信号がどのように機能するかを分析します。
第三に、GNU Radioの準備されたブロックや独自のCコードを使用して、ゼロから独自の通信プロトコルを記述できます。
ハードウェアとその特徴
ボードには明確な技術的制限があります。動作モードは半二重です。これは、トランシーバーが特定の時点で信号を受信するか送信するかのどちらかしかできないことを意味します。同時に両方はできません。
ADC分解能は8ビットです。複雑な干渉の詳細な分析には十分ではありませんが、大多数のエンジニアリングタスクには完全に十分です。ただし、動作周波数範囲はモジュールの交換なしで1 MHzから6 GHzまでカバーします。
学習の始め方
プロジェクトに飛び込みたい場合は、Read the Docsの公式ドキュメントから始めましょう。必要に応じて、 docs フォルダからローカルでビルドできます:
cd docs
make html
UbuntuでPDFバージョンをビルドするには、LaTeXパッケージをインストールする必要があります:
sudo apt install latexmk texlive-latex-extra
cd docs
make latexpdf
プロジェクトのコミュニティはDiscordとメーリングリストにいます。開発者はREADMEでサポートチケットの処理に最大2週間かかる場合があると正直に記しています。バグを見つけた場合やコードに貢献したい場合は、GitHubでIssueを開いてください。
HackRFは、熟悉したソフトウェアを超えてラジオスペクトラムを直接操作したい人にとって、最もアクセス可能で開かれた基盤の1つであり続けています。
関連プロジェクト