CSI collection not working correctly · Issue #292 · seemoo-lab/nexmon_csi
ASUS RT AC86U crash at high transmission rate · Issue #213 · seemoo-lab/nexmon_csi
phase difference for AoA, ToF and Doppler profile · Issue #222 · seemoo-lab/nexmon_csi
Asus RT-AC86U: Building Nexmon_CSI · nexmonster/nexmon_csi · Discussion #7
For RT-AC86U:
eth0 - WAN
eth1 - LAN 4
eth2 - LAN 3
eth3 - LAN 2
eth4 - LAN 1
eth5 - WLAN 2.4 GHz
eth6 - WLAN 5 GHz
my macbook pro:
5C:E9:1E:8E:56:13
TP link:
2.4Ghz: 78:8C:B5:42:E9:95
5 Ghz: 78:8C:B5:42:E9:94
Collect CSI tcpdump
-vv verbose
-c <N> tcpdump end after N packets received
-i <interface> specify an interface to listen on
Specify parameters mcp or makcsiparams
-c channel/bandwidth
-C core
-N stream
-m mac address
Configure extractor nexutil
-I
-s
-b
-l
-v parameters generated from previous stage mcp or makecsiparams
What is core -C?
Core means receive units here. If you have a device with four antennas, there should also be four cores. If your device has only one antenna then there is most likely only one core.
RT-AC86U (or any other nexmon supported devices ) contains core for each antenna. there are four cores in RT-AC86U and hence supporting four antennas, 3 external and one internal. Indexing starts at core 0. With the mask you can select from what cores you want to extract CSI, of course you are limited to the cores available on your device. ref
What is spatial stream -N?
Nss is the spatial streams received on each antenna. The spatial stream number is always smaller than or equal to the number of antenna at transmitter/injector.
Raspberry Pi 4B+ has 1 antenna, and the Alfa sniffer has 2 antennas. And ac86u has 4 rx chains. So, you should get CSI with MIMO size of 1x4 or 2x4 (Ntx x Nrx) in your described setup. Hope this answer helps you:)
How is NEXMON CSI extract CSI from multiple antennas?
Unlike Atheros_CSI tool that extracts CSI in parallel at all antenna for each packet, Nexmon CSI is extracting it sequentially. for instance, by selecting core=3 and rsxx=0 (i.e. one stream), it will receive first packet on antenna 1, second on antenna 2 and 3rd on antenna 3 and will loop again for the subsequent packets.
Setting up Rx and Tx · Issue #30 · nexmonster/nexmon_csi
How is the Core mask and spatial stream mask works in Nexmon?
In Nexmon, the bit mask was used to set receiver antenna or spatial stream on (1) and off (0).
Core masking
In the four antenna system (ASUS router), the four bit binary number corresponding to each antenna → 0b(ant4)(ant3)(ant2)(ant1) .
For example, -c 0b0001 set ant1 on and rest off. -c 0b1000 set ant4 on and rest off.
0b0001 → 0x1 |
0b0010 → 0x2 |
0b0100 → 0x4 |
0b1000 → 0x8 |
0b0101 → 0x5 |
|
|---|---|---|---|---|---|
| Antenna 1 | on | off | off | off | on |
| Antenna 2 | off | on | off | off | off |
| Antenna 3 | off | off | on | off | on |
| Antenna 4 | off | off | off | on | off |
Spatial masking
Nexmon support up to 4 transmit antenna, for the transmitter with 4 antenna, it can be set to 0b1111 or 0xF .
For two antennas system, it can be set up to 0b0011 or 0x3 . If we set the value greater than 0b0011 or 0x3, e.g., 0b0101 or 0x5, then one antenna would be valid as there is no third antenna. This means only the two right most bit is valid for antenna masking.
The final obtained stream will be depended on both core and spatial masking.
This section describes the installation and usage of Nexmon CSI on an Asus AC86U router, including the required set-up, command instructions, and documentation. It includes information on the router interface, mac addresses, and command instruction parameters for collecting CSI. Additionally, it provides a bash script for automated CSI collection and information on reading captured PCAP files using Python and Matlab. The section also includes a summary of the required steps for pre-set-up and installation of Nexmon CSI on the router.
Before start the following steps SSH to connect the router:
Before install the Nexmon CSI to the router, there are things need to be set-up: