Nexcsi
Nexcsi is a fast and simple CSI decoder for Nexmon_CSI files written in Python.
pip install nexcsi
Usage
from nexcsi import decoder
device = "raspberrypi" # nexus5, nexus6p, rtac86u
samples = decoder(device).read_pcap('pcap/output10k.pcap')
print(samples['rssi']) # [-75 -77 -77 ... -77 -76 -76]
print(samples['fctl']) # [128 148 148 ... 148 148 148]
print(samples['csi']) # [[ 19489 0 -19200 -96 -42 ...
# samples is a Numpy Structured Array
print(samples.dtype)
# [
# ('ts_sec', '<u4'), ('ts_usec', '<u4'), ('saddr', '>u4'),
# ('daddr', '>u4'), ('sport', '>u2'), ('dport', '>u2'),
# ('magic', '<u2'), ('rssi', 'i1'), ('fctl', 'u1'),
# ('mac', 'u1', (6,)), ('seq', '<u2'), ('css', '<u2'),
# ('csp', '<u2'), ('cvr', '<u2'), ('csi', '<i2', (512,))
# ]
# Accessing CSI as type complex64
csi = decoder(device).unpack(samples['csi'])
Null and Pilot subcarriers
CSI values of some subcarriers contain large and arbitrary values. Removing or zeroing them can make the changes in CSI better visible.
To zero the values of Null and Pilot subcarriers:
csi = decoder(device).unpack(samples['csi'], zero_nulls=True, zero_pilots=True)
Alternatively you can completely delete the columns of those subcarriers. Although I don't recommend this, because it changes the indexes of other subcarriers.
import numpy as np
csi = np.delete(csi, csi.dtype.metadata['nulls'], axis=1)
csi = np.delete(csi, csi.dtype.metadata['pilots'], axis=1)
Metadata
Release files for nexcsi 0.5.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| nexcsi-0.5.2.tar.gz | 6.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nexcsi-0.5.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 14.7 kB
Release files / nexcsi-0.5.2.tar.gz
| Download URL | nexcsi-0.5.2.tar.gz |
|---|---|
| Size | 6.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cba218e68a1eb1b92854bc5387903bafbb96b9e10ea8ff10f3a6e50dc87ad10c
|
|
BLAKE2b-256 checksum How to use checksums |
c67b09e8533b7b02e2676005e6cf4b1308efe6efea433eb9939d9dca1e7507a6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.2.2 CPython/3.10.6 Linux/6.0.6-76060006-generic
|
Release files / nexcsi-0.5.2-py3-none-any.whl
| Download URL | nexcsi-0.5.2-py3-none-any.whl |
|---|---|
| Size | 8.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0a7bc28da9b68b33e0ea3cfc8471f65f6534789bba77204d1c22fc36ad15a257
|
|
BLAKE2b-256 checksum How to use checksums |
36b21144d7b251c9a3dd3f6311b148d2dfd26eac7e0012babe69cd1617960f2a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.2.2 CPython/3.10.6 Linux/6.0.6-76060006-generic
|