Files
HaloKeymind/docs/full_usb_logging_validation.md
T

3.3 KiB

Full USB logging repair — 1.17.1.6

Audit date: 2026-09-13. Release firmware source: 306feebe6d648a247f925894f876be9d747fc8d2.

The original Station G2 Full Repeater and Full Room Server images omitted USB packet logging. Both inherited -UMESH_PACKET_LOGGING from their ordinary MQTT observer recipes. Full added -DMESH_PACKET_LOGGING=1, but PlatformIO's ProcessFlags moves undefines after defines in the compiler command. The resulting image compiled successfully with its packet logger removed.

The previous release gate checked OTA and other features without requiring USB logging in Full infrastructure. An old passing manifest could also be reused by --resume without the new logging evidence.

Published-image audit

Each downloaded/cached artifact was matched to GitHub's published SHA-256. The check inspected application bytes, including the application inside nRF52 DFU ZIPs. It required the packet-log formatter and USB logging controls.

Release group Application images Missing USB packet logging
ESP32 Full infrastructure/utility 157 2
ESP32 Full Companion 52 0
nRF52 Full Companion 43 0
Total 252 2

Affected targets:

  • Station_G2_repeater_observer_mqtt
  • Station_G2_room_server_observer_mqtt

V4/R8 Full builds and Station G2's Full ESP-NOW bridge passed. This audit does not count ordinary MQTT profiles that intentionally omit USB logging as broken. Artifact inspection proves compiled support, not hardware operation on every board.

Fix and regression coverage

  • Full builds that require logging remove inherited disables of MESH_PACKET_LOGGING before PlatformIO parses flags. Other macros and explicit logging-off profiles retain their policy.
  • Full capability checks require the packet logger and USB controls in the packaged application. Combined USB/WiFi profiles additionally require the logging.output setter. ELF symbols or debug text cannot satisfy these checks.
  • Resumed builds must have passing application evidence for the current logging contract, along with the existing artifact hashes and RAM checks.
  • CI runs the flag, real PlatformIO/compiler, artifact, resume, and build-profile regression suites.

Focused verification (after installing PlatformIO and its tool-scons package):

python3 -B test/test_full_build_flag_dedup.py
python3 -B test/test_full_logging_compile.py
python3 -B test/test_firmware_capabilities.py
python3 -B test/test_full_logging_resume.py
bash test/test_build_profiles.sh
python3 -B test/test_cascade_release_package.py

Both Station G2 profiles were rebuilt through build.sh --full with the original observer recipes, including their inherited logging undefines. They passed the new application checks, runtime RAM budgets, and both OTA slot size checks. The new checker rejects both original published images.

On the Bellevue Station G2, the corrected Full repeater implementation also passed serial CLI and passive traffic checks: four RX and two TX packet log lines were captured. Its active temporary profile retained preamble 120 and the original schedule end time; the Pi relay services were restored.

Corrected application SHA-256:

Repeater:    81a0a2926d4e567c069d0b10f316047881bcedce062afaa42119dddb2baadf23
Room Server: 7ee81f1cb65fc274bd363397c3c80ce9006d575efae50fe952c8ca246613a18c