Releases: Gi-z/CSIKit
v2.5
It's been a little while...
What's Changed
- Add support for FeitCSI by @KuskoSoft in #49
- Bugfix: Removed invalid "graphtype" error message when using the
--graph
option.
New Contributors
- @KuskoSoft made their first contribution in #49
Full Changelog: v2.4...v2.5
v2.4
Feature release.
- Added support for PicoScenes AX200/AX210 format.
- Additional example
.csi
files have been provided indata/pico
. - Timestamps are pulled from the
muClock
onboard as opposed to those generated by PicoScenes.
- Additional example
- 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.
v2.3
Major feature release.
- Added initial support for PicoScenes RxS format.
- PicoScenes 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 indata/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:
v2.2.1
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.
v2.2.0
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) has been provided by @yujianyuanhaha, thank you!
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 if you're looking for high performance CSI payload parsing.
v2.1.1
v2.1.0
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 and WDen. 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.
v2.0.0
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 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