Skip to main content

picsi

Nexmon CSI utilities for Raspberry Pi

In development • Not ready for testing yet.

Features

  • ⚡ Superfast installs with pre-compiled binaries
  • ⌛ Compiles from source when binaries are not available
  • 🚀 Easy Start/Stop CSI collection with picsi up or picsi down
  • ✨ Restore original firmware and connect to WiFi with picsi disable
  • 💾 Saves CSI to .pcap files
  • 📡 Forward CSI packets to other devices for faster collection
  • 📁 Manage your CSI collection configuration with Profiles

Install

On a Raspberry Pi 3B+ or 4B, run:

sudo apt install python3-pip  # install pip for python3
pip3 install picsi            # install picsi 
source ~/.profile             # update $PATH

picsi install                 # install nexmon_csi

picsi will download the appropriate firmware and binaries for your system and install them, or compile from source if they are not available pre-compiled.

Usage

picsi enable                  # enable nexmon_csi
picsi up                      # Collect CSI on 36/80

This enables Nexmon_csi, and starts CSI collection on channel 36 with bandwidth 80 MHz. You can see the traffic with tcpdump -i wlan0 dst port 5500.

More examples:

picsi up 149/80               # Collect CSI on 149/80

picsi down                    # Stop CSI collection
picsi disable                 # Restore original WiFi

picsi status                  # See status

picsi --help                  # See the help page

Docs

Picsi (pronounced pixie?) is a Python tool to install Nexmon CSI on Raspberry Pis. It needs Python version >= 3.7, although using the latest version is recommended.

The best features of picsi, in my opinion, are:

Installing Nexmon CSI from pre-compiled binaries.

Compiling Nexmon_CSI on the Pi takes about an hour, and downloads about 1.5 GB of data. And it needs your attention for the entire duration because you need to reboot the Pi multiple times, and keep a look out for errors.

Picsi downloads appropriate pre-compiled nexmon_csi firmware and binaries (nexutil, makecsiparams) for your kernel from https://github.com/nexmonster/nexcsi-bin.git (repository not available yet), and installs them. If binaries are not available, it installs from source, including automatic unattended reboots, and logs errors and progress.

Forwards CSI packets to an IP

Picsi can forward CSI packets to a different computer on your network, which is potentially faster than the Pi, and can collect more packets than tcpdump on the Pi can.

But additionally, an app on your phone/laptop can listen to the packets, and plot the CSI in realtime or process it.

Profiles!

Manage your csi collection configuration in profiles!

write

[profiles.CustomProfileName]
    channel = 36
    bandwidth = 80

    coremask = 1
    ssmask = 1

    forward = false
    forward_ip = '192.168.1.25'

    duration = 30

    macids = ['ab:cd:ef:12:34']

in profiles.toml, and you can start csi collection with

picsi up CustomProfileName.

This collects CSI on channel 36, bandwidth 80 from macids for 30 seconds, and forwards that CSI to 192.168.1.25. After 30 seconds, CSI collection is stopped and original wifi firmware is restored.

You can also create a set of profiles, and make picsi loop CSI collection over them.

Only basic CSI collection via profiles will be added first, and other profile features will be added later.

Metadata

Release files for picsi 0.0.13

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for picsi 0.0.13
File Size Uploaded
picsi-0.0.13.tar.gz 13.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for picsi 0.0.13
File Interpreter ABI Platform
picsi-0.0.13-py3-none-any.whl Python 3 none any Details

Total release size: 32.0 kB

Release files / picsi-0.0.13.tar.gz

Download URL picsi-0.0.13.tar.gz
Size 13.4 kB
Tags Source
SHA-256 checksum
How to use checksums
76c72e368266b69da2025b66305ba1a2a024da02a8081cf2f7093fc2c170b6df
BLAKE2b-256 checksum
How to use checksums
e9073b39b2897fb52176f66a5dbe7f0b7b22da3d30808cfa496d4b9d98a38930
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.12 CPython/3.10.4 Linux/5.16.16-arch1-1

Release files / picsi-0.0.13-py3-none-any.whl

Download URL picsi-0.0.13-py3-none-any.whl
Size 18.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dfc12e8831508ba7bdf106e9d0a6c4eb5d6274c57512854952a8361f65713317
BLAKE2b-256 checksum
How to use checksums
fb9eb97555145eb8a3f791a514dd9e27ac6520b6b7aa4f47e400e895d2c01e79
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.12 CPython/3.10.4 Linux/5.16.16-arch1-1

Release history Release notifications | RSS feed

This release

0.0.13 This release

2 release files

0.0.12

2 release files

0.0.11

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page