Experimental
RuView BFI research tools 0.1.0-rc.1: open capture and decoding for WiFi beamforming reports
RESEARCH PRE-RELEASE. Merged on September 30, RuView's BFI research tools add strict decoding, capture runners and bounded training for WiFi beamforming feedback. The decoder matched an independent oracle on every retained report, but the holdout set was never scored and no gait, identity or state-of-the-art claim is made.
GitHub activity: · Published:
What this is about
Research pre-release. This distributes research source only: no package, no production model and no published weights. The holdout set is unscored, and the release says the results do not demonstrate gait learning, identity recognition or state-of-the-art performance.
WiFi routers and phones exchange beamforming feedback information (BFI): compressed reports that describe how a signal reaches a device. Unlike CSI, BFI can be captured from ordinary traffic without special firmware on the device, which makes it interesting for sensing research. This release is the tooling to capture and decode it carefully.
What changed
- Strict BFI decoding with an independent comparison against tshark, coverage analysis and bounded Linux capture runners.
- Data preparation, bounded LSTM and GRU training with static and temporal controls, and frozen checkpoint evaluation.
- A pinned public BFI dataset manifest and downloader, and a separate decoder for one multi-user report format.
- A Wasmtime update addressing the RUSTSEC-2026-0316 advisory.
Measured evidence as reported, with its limits:
- All 162 retained reports from two captures matched the independent oracle, but gaps of about 8.4 and 6.4 seconds still fail the proposed continuity target.
- The public-sample decoder matched 13,104 angle integers across 14 report bodies; whole-packet admission and public-data training are incomplete.
- Sequence models and simple static controls both reached 56 of 56 recordings on the custom validation split. That the controls match the models is the important part: the split does not separate learning from shortcuts.
- The release reports 64 capture tests and 141 learning tests passing in Linux CI.
Get started
Prerequisites: a RuView checkout at the tag and Python. Live capture needs specific Linux hardware and is beyond a first run; the offline test suite needs neither. No MCP server, npm package or skills are part of this release.
python -m unittest discover -s tools/bfi_learning -p 'test_*.py' -v
Expected result: a list of passing tests ending in OK. Raw captures, subject data and weights are not included, so anything beyond the tests needs your own data or the public dataset downloader.
Commands here were read from the release notes and repository documentation at the pinned reference; they were not executed as part of writing this article.
Use it today
Practical case: you are evaluating whether BFI is a usable sensing signal in your lab. Input is your own capture. Workflow: decode it with the strict decoder, check the coverage report for gaps, then train with the static controls switched on. Output: a result you can compare against the controls rather than a single accuracy number.
Acceptance test: if a model does not beat the static control on a held-out split, treat it as not having learned anything new.
Push it further
Experimental commentary. Publishing the controls next to the models, and saying plainly that they tied, is unusually honest for sensing research and the most useful thing in the release.
Limitation: the holdout is unscored and the continuity target is unmet. Falsifiable test: score the frozen checkpoint on the holdout. A meaningful result has to beat the static control there; a tie means the 56 of 56 says nothing about learning.
Read the original on GitHub pre-release
Pre-release bfi-research-v0.1.0-rc.1 — merge of PR #2055, commit aac41555