本稿では、GNU Radioを使用し、無線信号処理の基本についてみていきます。
GNU Radioとは
「GNU Radio」は、デジタルとアナログの信号処理を扱うオープンソースな開発キットです。 RTL-SDR、HackRF、USRPなど幅広いSDR ハードウェアをサポートしており、データを処理するために使用できる膨大な種類の無線処理ブロックとアプリケーションを含んでいます。
環境情報
今回、GNU Radioを使って無線信号処理を行うための環境は次のとおりです。
OS:Ubuntu 20.04
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.1 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
GNU Radioのインストール
- GNU Radio本体
- 開発環境
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install gnuradio
$ sudo apt install git cmake build-essential
GNU Radio Companionの起動
ターミナルからgnuradio-companion
コマンドを実行します。GNU Radioのグラフィカルツールである「GNU Radio Companion(GRC)」を起動します。
$ gnuradio-companion
- Workspace: オプションと変数からなるブロックで表示される空白の領域
- Blocks: 右側のリスト、ラジオの作成に使用できるさまざまな処理ブロック
- Reports: 画面下部、出力、デバッグ、およびエラーメッセージが表示される
波形を生成して出力する
COS(正弦)波を生成して波形表示を行う
GRCを使用してワークフローを構築するには、ブロックペインからワークスペース領域にブロックをドラッグアンドドロップします。
ここでは、「COS(正弦)波」を生成し、波形表示を行います。
-
Signal Source
ブロックを配置する。Waveform Generators
セクション内に当該ブロックがあります。Ctrl + F
キーにて、Signal Source
キーワードにて検索して確認することもできます。
配置したブロックの文字列が赤で表示されていることに注目してください。これは、ブロックからの出力(この場合は信号源から出るコサイン波形)が別のブロックに未接続であることを意味しています。
-
Throttle
ブロックを追加する。Throttle
ブロックは、GNU Radioが過剰なシステムリソース消費するのを防ぐためにすべてのフローグラフで使用するものです。 -
それぞれのブロックを接続する。ブロックの
out
と、接続したいブロックのin
をクリックすることで接続可能です。 -
Signal Source
ブロックのプロパティを表示します。ブロックをダブルクリックしてください。プロパティでは、ブロックに関するさまざまな値を設定できます。ここでは、[Frequency]の値を100
に設定します。
-
メニューの[Run] > [Execute]または
F6
キーにて実行する。Top Block
ウインドウに波形が表示されます。
COS(正弦)波を一つだけ表示する
異なる周波数の波を表示する
-
Signal Source
ブロックを追加し、ブロックのプロパティを表示する。[Output Type]をFloat
、[Frequency]の値を150
に設定する。 -
Throttle
ブロックを追加する。ブロックのプロパティを表示する。[Output Type]をFloat
に設定する。 -
既存の
QT GUI Time Sink
ブロックのプロパティを表示する。[Number of Inputs]の値を2
に設定します。
参考情報
- GNU Radio Tutorials, https://wiki.gnuradio.org/index.php/Tutorials
- Software Defined Radio with HackRF, https://greatscottgadgets.com/sdr/
- トランジスタ技術編集部「RFワールド No.44 GRCで広がるSDRの世界」
- コロラド大学ボールダー校「ECEN 4652/5002 - Communications Lab」, http://ecee.colorado.edu/~mathys/ecen4652/labs.html
- GNURadioサテライト入門, http://www.asahi-net.or.jp/~ei7m-wkt/numb1044.htm
- katagaitai CTF勉強会#11 - Misc(hw), https://www.slideshare.net/ysk256/katagaitaictf11-misc-ysk-90319192