ruvnet/RuView · error · CSIExtractionError
Atheros CSI format parsing is not yet implemented. The Ather
Error message
Atheros CSI format parsing is not yet implemented. The Atheros CSI Tool outputs a binary format that requires a dedicated parser. To collect real CSI data from Atheros-based routers, you must implement the binary format parser following the Atheros CSI Tool specification. See docs/hardware-setup.md for supported hardware and data formats.
What it means
_parse_atheros_format raises CSIExtractionError unconditionally: even valid 'ATHEROS_CSI:' input cannot be parsed, because the Atheros CSI Tool binary format parser was never implemented in the Python reference pipeline. The class docstring states it refuses to return placeholder data by design, and the message directs to docs/hardware-setup.md for supported formats.
Source
Thrown at archive/v1/src/hardware/csi_extractor.py:412
# Handle different router formats
data_str = raw_data.decode('utf-8')
if data_str.startswith('ATHEROS_CSI:'):
return self._parse_atheros_format(raw_data)
else:
raise CSIParseError("Unknown router CSI format")
def _parse_atheros_format(self, raw_data: bytes) -> CSIData:
"""Parse Atheros CSI format.
Raises:
CSIExtractionError: Always, because Atheros CSI parsing requires
the Atheros CSI Tool binary format parser which has not been
implemented yet. Use the ESP32 parser or contribute an
Atheros implementation.
"""
raise CSIExtractionError(
"Atheros CSI format parsing is not yet implemented. "
"The Atheros CSI Tool outputs a binary format that requires a dedicated parser. "
"To collect real CSI data from Atheros-based routers, you must implement "
"the binary format parser following the Atheros CSI Tool specification. "
"See docs/hardware-setup.md for supported hardware and data formats."
)
class CSIExtractor:
"""Main CSI data extractor supporting multiple hardware types."""
def __init__(self, config: Dict[str, Any], logger: Optional[logging.Logger] = None):
"""Initialize CSI extractor.
Args:
config: Configuration dictionary
logger: Optional logger instance
View on GitHub (pinned to 4685618388)
Solutions
- Use the ESP32 path (hardware_type='esp32') — the supported collection route in archive/v1
- If Atheros hardware is mandatory, implement the binary format parser per the Atheros CSI Tool specification (the docstring invites contributions)
- Check docs/hardware-setup.md for supported hardware and data formats before choosing capture hardware
Defensive patterns
Strategy: fallback
Validate before calling
# Route around the unimplemented path before parsing:
if hardware_type == 'router':
logger.error('Atheros CSI parsing is not implemented in archive/v1; '
'use hardware_type="esp32" — see docs/hardware-setup.md')
raise CSIExtractionError('Atheros CSI format parsing is not yet implemented') Try / catch
try:
data = router_parser.parse(raw)
except CSIExtractionError as e:
if 'Atheros' in str(e):
logger.error('Atheros capture unsupported; falling back to ESP32 source')
switch_to_esp32_source() # requires ESP32 nodes provisioned
else:
raise Prevention
- Check docs/hardware-setup.md for the supported-hardware matrix before provisioning capture devices
- Treat 'ATHEROS_CSI:' input as unsupported by design: no retry or data tweak will make it parse
- Plan an ESP32-based capture path as the supported fallback when router hardware is Atheros
When it happens
Trigger: Any RouterCSIParser.parse call whose input starts with 'ATHEROS_CSI:' — i.e. every attempt to use Atheros hardware with archive/v1. The error is deterministic, not data-dependent.
Common situations: Teams provisioning Atheros routers before checking the supported-hardware matrix; integrations assuming hardware_type='router' works for any Wi-Fi router; porting an older Atheros-based setup to this pipeline.
Related errors
- Unknown router CSI format
- Router {router_id} not found
- Pose estimation requires real CSI data input. No CSI data wa
- MCP specification rejected by ${kernel.resolvedBackend} kern
- Empty data received
AI-assisted analysis of ruvnet/RuView@4685618388 (2026-08-16).
Data as JSON: /api/errors/badb676cfe086237.
Report an issue: GitHub.