Csikit

Latest version: v2.5

Safety actively analyzes 622918 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

2.5

It's been a little while...

What's Changed
* Add support for FeitCSI by KuskoSoft in https://github.com/Gi-z/CSIKit/pull/49
* Bugfix: Removed invalid "graphtype" error message when using the `--graph` option.

New Contributors
* KuskoSoft made their first contribution in https://github.com/Gi-z/CSIKit/pull/49

**Full Changelog**: https://github.com/Gi-z/CSIKit/compare/v2.4...v2.5

2.4

Feature release.

- **Added support for PicoScenes AX200/AX210 format**.
- Additional example `.csi` files have been provided in `data/pico`.
- Timestamps are pulled from the `muClock` onboard as opposed to those generated by PicoScenes.
- Various performance improvements.
- Changed average RSSI readout for CSIMetadata to handle multiple antennas where one of them may be null.

Contributions:
- dingyiyi0226 has implemented a string-based print output for CSIMetadata.
- An example use case can be found in 23.

2.3

Major feature release.

- **Added initial support for PicoScenes RxS format**.
- [PicoScenes](https://ps.zpj.io/) provides a modern platform for collecting, parsing and processing CSI from IWL5300 and QCA93XX devices, as well as USRP-based software defined radios.
- Support is initial, as PicoScenes formats contain significantly more data than other CSI formats. The priority for CSIKit is ensuring CSI matrices can be parsed from all available formats.
- All current PicoScenes devices and formats are supported, and additional future support is planned.
- Example `.csi` files have been provided in `data/pico`.
- Added `backend` reporting to CSIData.
- This indicates the platform used to produce the generated CSI (e.g. Linux 802.11n CSI Tool/PicoScenes).

Contributions:
- FredeJ has implemented stream-based parsing for Nexmon CSI data via `NEXBeamformReader.read_stream`.
- An example use case can be found in 16.
- Additional functionality and improvements for real-time parsing are planned.

7be20a1
Minor feature release.

- **Added support for BCM4339**
- All nexmon file formats should be supported automatically, with no extra configuration on the user's end.
- If you have a Nexmon pcap file which doesn't parse correctly, let me know!
- Resolved incorrect parsing of Nexmon core and spatial stream values.
- Added extra handling for incomplete pcap payloads which may occur when forcefully terminating captures.

Known Issues:

- Multiple cores/spatial streams are incorrectly referred to as multiple Rx/Tx antennas.
- This will be resolved in the next update.

Current goals are to add more visualisation, processing, and capturing functionality in the near future, if spare time allows. Additionally, I'd like to reduce the number of dependencies being used where possible.

ff8234f
Minor feature release.

**Nexmon Spatial Stream support**
CSI captured across multiple spatial streams is now parsed as Tx * Rx matrices, similar to the implementation seen with IWL5300 or Atheros CSI data. An example file ([example_4366c0_4x4mimo.pcap](https://github.com/Gi-z/CSIKit/blob/master/CSIKit/data/nexmon/example_4366c0_4x4mimo.pcap)) has been provided by yujianyuanhaha, thank you!

![image](https://user-images.githubusercontent.com/1211702/126877637-ef2c2671-903b-44ef-b617-75271af1c667.png)

**Performance Improvements**
While this library has never been the most performant option available, I felt performance when parsing some file formats was too poor. After switching some applicable code over to numba's JIT implementation, performance has improved in these areas to an acceptable level.
While I hope to continue improving both usability and performance of CSIKit I suggest looking into citysu's [csiread](https://github.com/citysu/csiread/) if you're looking for high performance CSI payload parsing.




4bce011
Minor update to resolve a bug which may have occurred when parsing bcm43455c0 files. Incomplete payloads will now be acknowledged and will not cause the parser to fail.

5aea4be
Minor release with improvements and a new feature.

**Features**:
A new denoising filter has been added. Discrete Wavelet Transform-based denoising (using soft thresholding) is available in `CSIKit.filters.wavelets.dwt`, based on [FallDeFi](https://github.com/dmsp123/FallDeFi) and [WDen](https://github.com/matthewddavis/lombardi/blob/master/processing/NPS-1.3.2/WDen.py). `dwt.denoise` applies this filtering technique to CSI matrices. The results can be quite surprising with minimal distortion to the original signal, as opposed to passband-based filtering techniques. Comparisons of these techniques will be added to documentation soon.

**Improvements**:
The ESP32 CSIFrame format has been updated to more accurately reflect the original contents of the packets. Field names have not changed, but their types and included data have correctly assigned to match the specification provided by ESP-IDF. This should provide better insight into the contents of ESP32 CSI data.

An average RSSI value is calculated for CSIMetadata and rendered in the `get_info` function. This is reflected in the standard CSIKit output (e.g. `csikit example.dat`).

**Compatibility Changes**:
While no compatibility changes should occur as a result of this update, filters will slowly be moved from their location in `CSIKit.util.filters` to `CSIKit.filters` in the next major update.

Readme to be updated shortly.

868f34a
Major update.

**Support for extracting CSI for multiple antenna streams**.

This changes the default `get_CSI` behaviour, as well as adding additional options to more finely tweak functionality. By default, CSI extraction for any given chipset will work the same way as their MATLAB implementations.
Additional parameters:
- `extract_as_dBm` (bool, default=True): When extracting CSI amplitude, this option controls whether the amplitude is converted to dBm.
- `squeeze_output` (bool, default=False): By default, the returned CSI shape will always be (frames, subcarriers, rx, tx). This option will remove singular dimensions, for instance, from CSI captures on devices with one antenna stream.

**Support for ESP32**.

ESP32 CSI CSVs as generated by StevenMHernandez's [ESP32-CSI-Tool](https://github.com/StevenMHernandez/ESP32-CSI-Tool) are now supported by default, and will be automatically detected. This lays groundwork for allowing custom CSV formats to be imported into CSIKit, which I hope to finish soon.

**Visualization module**

Initial support for more complex visualizations is now available through `CSIKit.visualization`, implemented by tweigel-dev. A tutorial and various examples for usage are included in `docs/scenario_plot.ipynb`! Currently only support for Intel .dat-style CSI files is implemented, however the system is very extensible and should see future improvements.

**Bugfixes for Atheros format**

Resolved issues which occurred when reading CSI files generated by the more common versions of the Atheros CSI Tool. If any additional issues occur, please make an issue and provide an example file. These fixes usually don't take long at all, but I don't have examples of all formats.

**PyTests**

Rewrote the Intel/Nexmon MATLAB comparisons into rough PyTests, mainly for CI/CD. This hopefully should reduce major issues from reaching main releases. These can be run by running `pytest` in the project root. Instructions for generating .mat files and performing additional testing are included in `tests/x/README.md`.

**Various Bugfixes**

Links

Releases

Has known vulnerabilities

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.