CSIKit icon indicating copy to clipboard operation
CSIKit copied to clipboard

Modifying `read_pcap.py` to interpret `Nexmonster's pi-5.4.51-plus`

Open CDeLeon94 opened this issue 3 years ago • 3 comments

CSIKit works as expected with captures generated from the nexmonster pi-5.4.51 However, I want to extract RSSI data so I am attempting to modify the read_pcap.py for Nexmonster's pi-5.4.51-plus

My changes thus far can be seen in my fork

  • Warning, I thought it was going to be simply replacing a few offsets, but then after that didn't work I started somewhat arbitrarily changing numbers to see what would happen.

One interesting thing to note is that I was expecting the Chip Version to be at position 41 into the payload, however instead it was at 42.

CDeLeon94 avatar Oct 11 '21 20:10 CDeLeon94

Thanks for bringing this up as I'd like to add support for the increasing nexmon format variants.

I'm away from my desk for a couple of days. Could you provide an example of the file you're trying to parse and I can take a look myself when I'm free. Very possible it can be fixed tweaking a few offsets, just some awkward behaviour on NEXBeamformReader's end.

Gi-z avatar Oct 12 '21 10:10 Gi-z

Here's the capture I'm working with

I'm a fan of this particular format since it reserves space for data to be extracted in the future, and in such a way that should be more backwards compatible.

I'll take a look at NEXBeamformReader and see if I can't make some sense of it and help out.

CDeLeon94 avatar Oct 12 '21 13:10 CDeLeon94

https://drive.google.com/file/d/12d1n4ALoPQkgeyxyvhwdcfm-eHj7KJ7I/view?usp=sharing

Apologies for the delay. Still away from home but I've thrown together a very quick temporary version which'll parse your files from nexmonster pi-5.4.51-plus. I'll be happy to go through your fork when I've got a bit more time, but there are 3 main points in adding support for this format. First, the BW_SIZES dict needed an additional payload length entry for 20/40MHz with this nexmon_csi version. Second, the payload header length passed to read_payloadHeader_nexmonster had to be increased for the nexmonster plus format. Third, the payload header format can then be laid out. Each field appears to be present and working. Let me know if you have any issues and I'll try and get them sorted asap. Once I've got some proper time I'll finish properly implementing support for this format so it can be automatically detected alongside the other potential variations. 👍

Gi-z avatar Oct 14 '21 10:10 Gi-z