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

Nexmonの環境構築 for RaspberryPi3/4B

Last updated at Posted at 2024-04-10

Nexmon環境構築手順 for RaspberryPi3/4B

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

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

参考にしたサイト

RaspberryPiの初期設定

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

Wi-Fi/SSHの設定
この記事では詳しく触れませんが,各自設定していただくことを強く推奨します.

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

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

Nexmonのインストール

  • Nexmon_csiのバイナリファイルからインストールスクリプトを実行(2分程度)
$ sudo curl -fsSL https://raw.githubusercontent.com/nexmonster/nexmon_csi_bin/main/install.sh | sudo bash
$ sudo reboot

これ以降,無線SSH接続ができなくなるため,有線SSH接続に切り替える(初めから有線SSH接続で行うこと推奨します)

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ファイルとしてローカルに保存されます.
今回は,そこから振幅成分(RSSI)を抽出して,CSVファイルとしてデコードするPythonコードを作成しましたので,ご紹介しておきます.(Gitリポジトリは以下です.)

使用方法

// GitHubリポジトリをクローン
$ git clone https://github.com/haradakaito/Nexmon_Setup.git

// 実行方法:srcフォルダに移動してmain.pyを実行
$ cd src
$ python main.py
  • 事前に,pcapfilesディレクトリ下に任意のpcapファイルを保存しておくこと
  • main.pyの実行パラメータを適切なパラメータに適宜変更すること(ファイル名,帯域幅,出力したい行数)

※出力したい行数については,"開始行-終了行"という形式で入力(例:0-10は0行目から10行目まで出力)

ポートフォリオ紹介

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