3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Raspberry Pi】Nexmon環境構築手順

Last updated at Posted at 2024-04-10

【Raspberry Pi】Nexmon環境構築手順

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

Nexmon
Cypress/Bloadcom製のWI-Fiチップ向けに開発された,オープンソースCSI収集用ファームウェアパッチです.

参考にしたサイト

Raspberry Piの初期設定

イメージファイルの書き込み

付録:公開鍵認証を使用したSSH接続

Wi-Fiに接続し,RaspberryPiと有線SSHで接続してください

$ cd ~
$ mkdir .ssh
$ touch .ssh/authorized_keys
$ nano .ssh/authorized_keys
// 自身の公開鍵(.pub)をコピペ
$ sudo reboot

Nexmonのインストール

  • Nexmon_csiのバイナリファイルからインストールスクリプトを実行(2分程度)
// (推奨)一度,再起動を行い,明示的に,キャッシュのフラッシュ,マウント状態やパーティション情報を更新する
$ sudo reboot

$ sudo curl -fsSL curl -fsSL https://raw.githubusercontent.com/nexmonster/nexmon_csi_bin/main/install.sh | sudo bash
$ sudo reboot

CSI収集テスト

通信環境の確認

  • Wi-Fiアナライザなどを使用して,観測したい無線通信チャネルと帯域幅を確認する

  • mcpコマンドで,base64でエンコードされたパラメータ文字列を作成する
$ sudo mcp -C 1 -N 1 -c {チャネル}/{帯域幅}

ここで生成された文字列をコピーしておくことを推奨

// mcpで指定できるオプションは-hで一覧表示可能
$ sudo mcp -h

CSI収集開始

  • パラメータ文字列を設定し,モニターモードインターフェース(mon0)を追加する
$ sudo ifconfig wlan0 up
$ sudo nexutil -Iwlan0 -s500 -b -l34 -v{mcpで生成した文字列}
$ sudo iw dev wlan0 interface add mon0 type monitor
$ sudo ip link set mon0 up
  • tcpdumpコマンドでCSIの収集を開始する
//基本的な実行コマンド
$ sudo tcpdump -i wlan0 dst port 5500

//書き込みファイルの指定
$ sudo tcpdump -i wlan0 dst port 5500 -vv -w {任意のファイル名}.pcap

//指定パケット数だけ書き込みファイルに出力
$ tcpdump -i wlan0 dst port 5500 -vv -w {任意のファイル名}.pcap -c {観測したいパケット数}

//例:1000パケットに達するまで観測し,output.pcapファイルとして出力する
$ sudo tcpdump -i wlan0 dst port 5500 -vv -w output.pcap -c 1000

mcpコマンドで更にオプションを追加することで特定MACアドレスでフィルタリングすることも可能です.

// MACアドレスでフィルタリングするオプション(-m)の使用方法
$ sudo mcp -C 1 -N 1 -c {チャネル}/{帯域幅} -m XX:XX:XX:XX:XX:XX
  • 以降は,mon0インターフェースを追加する部分からコマンドを打ち込みなおす

付録:CSIデータ(.pcap)をCSVファイルに出力する

Nexmonで収集されたCSIデータはpcapファイルとしてローカルに保存されます.
今回は,そこから振幅・位相情報を抽出して,CSVファイルとしてデコードするPythonコードを作成しましたので,ご紹介しておきます.(Gitリポジトリは以下です.)

使用方法

$ git clone https://github.com/haradakaito/Nexmon_Setup.git

// pcapfilesディレクトリ下にpcapファイルを配置

$ cd src
$ python main.py
// pcapfilesディレクトリ下の任意のファイル名を入力(例:output)

ポートフォリオ紹介

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?