Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

fix(cli): slice HT-LTF segment from merged-LTF raw CSI frames so calibrate/enroll/room-watch work on acquire-everything firmware (refs #1000)#1002

Open
schaferjart wants to merge 1 commit into
ruvnet:main from
schaferjart:fix/cli-merged-ltf-csi-frames
Open

fix(cli): slice HT-LTF segment from merged-LTF raw CSI frames so calibrate/enroll/room-watch work on acquire-everything firmware (refs #1000) #1002
schaferjart wants to merge 1 commit into
ruvnet:main from
schaferjart:fix/cli-merged-ltf-csi-frames

Conversation

@schaferjart

@schaferjart schaferjart commented Jun 10, 2026

Copy link
Copy Markdown

Summary

Fixes the CLI half of #1000: calibrate / enroll / room-watch rejected every raw CSI frame from firmware built with the current acquire-everything CSI config, making the ADR-151 per-room calibration pipeline unusable on such nodes.

Root cause

csi_collector.c (S3 branch) enables lltf_en + htltf_en + stbc_htltf2_en, so the 0xC5110001 raw frames carry 192 complex values (L-LTF + HT-LTF + STBC HT-LTF, 64 each — CSI cb: len=384 in the boot log). parse_csi_packet passed the frame through whole, and the HT20 tier geometry check rejected it:

[calibrate] WARN frame skipped: subcarrier count mismatch: expected 52, got 192
Error: calibration failed: insufficient frames: have 0, need 600

Fix

When a frame reports 192 subcarriers, slice the HT-LTF segment ([64..128)) before building the CsiFrame, so the 64-FFT HT20 tier config (52 active) lines up. Frames with other geometries are untouched.

Validation

Notes

  • CHANGELOG entry added under [Unreleased].
  • An alternative (or complement) is trimming in firmware before UDP send — the 192-value frames triple the raw-CSI payload. This PR keeps host-side compatibility with already-flashed nodes either way.

Refs #1000.

🤖 Generated with claude-flow

...bcarriers)
Firmware built with acquire-everything CSI (L-LTF + HT-LTF + STBC HT-LTF,
per csi_collector.c) streams 0xC5110001 frames with 192 complex values.
parse_csi_packet passed them through whole, so every frame failed the HT20
tier geometry check ('expected 52, got 192') and calibrate/enroll/room-watch
could never capture a baseline on such nodes (refs ruvnet#1000).
Slice the HT-LTF segment [64..128) out of 192-subcarrier frames so the
64-FFT HT20 tier configs line up. Hardware-validated on a bare
ESP32-S3-N16R8 (display-less build from main): full ADR-151
baseline -> enroll -> train-room -> room-watch pipeline ran end-to-end.
Co-Authored-By: claude-flow <ruv@ruv.net>
Entire-Checkpoint: da71680bb8f5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

1 participant

AltStyle によって変換されたページ (->オリジナル) /