Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Nexmonの環境構築 for Raspberry Pi 3/4B

Avatar for 原田海斗 原田海斗
February 09, 2025
180

Nexmonの環境構築 for Raspberry Pi 3/4B

Raspberry Pi 3/4BにNexmonをインストールし,実際にCSIを取得するまでの一連の流れを説明します.

This article explains the process of installing Nexmon on a Raspberry Pi 3/4B and actually obtaining CSI.

Avatar for 原田海斗

原田海斗

February 09, 2025
Tweet

Transcript

  1. 2 Raspberry Piの初期設定 ◼ Raspberry Pi OSの書込 ◼ 任意のmicroSDカードにRaspberry Pi

    OSを書き込む ◼ Nexmonが対応しているRaspberry Pi OSのダウンロードURL: https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf- 2022-01-28/2022-01-28-raspios-bullseye-armhf-lite.zip バージョン アーキテクチャ タイプ リリース日 Bullseye armhf(ARM hard float) Lite版 2022年1月28日 Raspberry Pi OSの書込ツールのインストールは,後半の付録スライド(p.11)に記載 ! Wi-Fiの設定はしないことを推奨します(無線SSH接続は使用しません). ×
  2. 3 Raspberry Piの初期設定 ◼ SSH接続の設定 ◼ 起動したRaspberry PiとのSSH接続を設定 ◼ 実行コマンド

    $ cd ~ $ mkdir .ssh $ touch .ssh/authorized_keys $ sudo nano .ssh/authorized_keys // 自身の公開鍵(.pub)をコピペ $ sudo reboot Wi-Fiには接続せずに,有線SSH接続を行うことを強く推奨します × updateやupgradeは行わないことを推奨します(互換性が保証されません) ×
  3. 4 Nexmonの設定 ◼ Nexmonのインストール ◼ Nexmon_csiのバイナリファイルからインストールスクリプトを実行 ◼ 実行コマンド(2分程度) $ sudo

    curl -fsSL https://raw.githubusercontent.com/nexmonster/nexmon_csi_bin/main /install.sh | sudo bash $ sudo reboot これ以降,無線が使用できなくなります ! これでNexmonの環境構築自体は完了です ✓
  4. 5 Nexmonの実行 ◼ 通信環境の確認 ◼ 観測したいチャネルと帯域幅を確認 チャネル(Channel) 送信機と受信機の間で無線信号が伝播する経路であり,電波の減衰,遅延,マルチパス 干渉などの影響を受ける伝送媒体 帯域幅(Bandwidth)

    無線通信で使える周波数の範囲の広さを指し,この幅が広いほど一度に多くのデータを 送ることができ,通信速度が速くなる チャネルと帯域幅の確認ツールのインストールは,後半の付録スライド(p.12)に記載 !
  5. 6 Nexmonの実行 ◼ パラメータ文字列の生成 ◼ mcpを使用して,抽出器を構成するためのパラメータ文字列を生成 ◼ mcp … make

    csi paramsの略 ◼ 実行コマンド ◼ 例:チャネル36の帯域幅80MHzの通信を観測したい場合 ここで出力された文字列はコピーしておくことを推奨(後に使用します) ! $ sudo mcp -C 1 -N 1 -c {チャネル}/{帯域幅} $ sudo mcp -C 1 -N 1 -c 36/80 Raspberry PiにはWi-Fiチップのコアとアンテナが各1つしかないため -cと-Nオプションは1を指定する ✓
  6. 7 Nexmonの実行 ◼ Wi-Fiのモニターモードを設定 ◼ Wi-Fiのインターフェースを有効化し,モニターモードを設定 ◼ 実行コマンド // wlan0(Wi-Fiインターフェース)を有効にする

    $ sudo ifconfig wlan0 up // mcpで生成したパラメータをNexmonに適用 $ sudo nexutil -Iwlan0 -s500 -b -l34 -v{mcpで生成した文字列} // wlan0からmon0(仮想インターフェース)を作成・設定 $ sudo iw dev wlan0 interface add mon0 type monitor // mon0を有効にする $ sudo ip link set mon0 up デバイスの起動時の度に,このコマンドを実行する必要があります !
  7. 8 Nexmonの実行 ◼ CSIの収集を開始 ◼ tcpdumpコマンドでCSIの収集を実行 ◼ 実行コマンド ◼ 例:1000個のCSIサンプルをoutput.pcapとして保存

    $ sudo tcpdump -i wlan0 dst port 5500 $ sudo tcpdump -i wlan0 dst port 5500 -vv -c 1000 -w output.pcap ソケット5500でUDPパケットをリッスンするコマンド(Ctrl+Cで停止) ✓ -cオプションで観測パケット数,-wオプションで出力ファイルを指定可能 ✓
  8. 9 CSIの抽出 ◼ CSIデータから振幅・位相情報をCSVファイルに出力 ◼ 収集したCSIデータ(.pcap)をローカルデバイスにダウンロード ◼ 実行コマンド $ cd

    ~ $ git clone https://github.com/haradakaito/Nexmon_Setup.git // pcapfilesディレクトリ下にpcapファイルを配置 $ cd src $ python main.py // pcapfilesディレクトリ下の任意のファイル名を入力(例:output) Pythonの実行環境が整っていることが前提となります ! 問題なく実行できた場合,resultディレクトリ下に振幅データ(_amp.csv)・位相 データ(_phase.csv)が出力される ✓
  9. 10 参考サイト ◼ Nexmon公式 GitHubリポジトリ ◼ URL:https://github.com/seemoo-lab/nexmon ◼ Nexmonster GitHubリポジトリ

    ◼ URL:https://github.com/nexmonster/nexmon_csi/tree/pi-5.10.92 ◼ CSI抽出コード GitHubリポジトリ ◼ URL:https://github.com/haradakaito/Nexmon_Setup
  10. 11 付録 ◼ Raspberry Pi Imagerを用いたRaspberry Pi OSの書込 ◼ Raspberry

    Pi Imagerのダウンロードページ: https://www.raspberrypi.com/software/ ココから 適切なインストーラーをダウンロード・起動