Skip to content

feat(firmware): opt-in CSI census and AP survey diagnostics - #1830

Open
clonea1 wants to merge 1 commit into
ruvnet:mainfrom
clonea1:contrib/diagnostics-census
Open

feat(firmware): opt-in CSI census and AP survey diagnostics#1830
clonea1 wants to merge 1 commit into
ruvnet:mainfrom
clonea1:contrib/diagnostics-census

Conversation

@clonea1

@clonea1 clonea1 commented Sep 4, 2026

Copy link
Copy Markdown

Two questions come up whenever a node underperforms and neither can be
answered from the outside: what is this node actually hearing, and what does
the RF around it look like. Both are answerable on the node and were not.

The census counts frames per transmitter at three points -- as received, after
the rate gate, and as sent -- so the drop between stages is attributable. "The
node is only sending 6 fps" has very different causes depending on whether it
heard 6 or heard 400 and discarded the rest.

The AP survey performs one scan and logs every visible BSSID with its channel
and RSSI, which answers whether a weak node is weak because of distance or
because it associated with the wrong AP.

Both are behind compile flags (RUVIEW_DIAG_CENSUS, RUVIEW_DIAG_SCAN) and off
by default. Neither belongs in a soak or a production flash: the census logs
continuously, and the scan takes the radio off its operating channel, which is
a CSI outage and a chance to lose the association. The survey is additionally
delayed 10 s after boot so it measures steady state rather than competing with
connection setup.


Rebased onto current main. One conflict in main.c, additive on both sides and resolved by keeping both. Firmware builds clean for esp32c6 on ESP-IDF v5.4.

Two questions come up whenever a node underperforms and neither can be
answered from the outside: what is this node actually hearing, and what does
the RF around it look like. Both are answerable on the node and were not.

The census counts frames per transmitter at three points -- as received, after
the rate gate, and as sent -- so the drop between stages is attributable. "The
node is only sending 6 fps" has very different causes depending on whether it
heard 6 or heard 400 and discarded the rest.

The AP survey performs one scan and logs every visible BSSID with its channel
and RSSI, which answers whether a weak node is weak because of distance or
because it associated with the wrong AP.

Both are behind compile flags (RUVIEW_DIAG_CENSUS, RUVIEW_DIAG_SCAN) and off
by default. Neither belongs in a soak or a production flash: the census logs
continuously, and the scan takes the radio off its operating channel, which is
a CSI outage and a chance to lose the association. The survey is additionally
delayed 10 s after boot so it measures steady state rather than competing with
connection setup.

Co-Authored-By: claude-flow <ruv@ruv.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant