Files
HaloKeymind/full_usb_logging_validation/index.html
T
2026-09-15 05:34:40 +00:00

3007 lines
43 KiB
HTML

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Documentation for the open source MeshCore firmware">
<link rel="canonical" href="https://mikecarper.github.io/MeshCore/full_usb_logging_validation/">
<link rel="prev" href="../full_companion_usb_switcher/">
<link rel="next" href="../gps_tracking/">
<link rel="icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.7">
<title>Full USB logging repair — 1.17.1.6 - MeshCore Docs</title>
<link rel="stylesheet" href="../assets/stylesheets/main.ec1eaa64.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="../_stylesheets/extra.css">
<link rel="stylesheet" href="../_stylesheets/firmware_picker.css">
<link rel="stylesheet" href="../_stylesheets/telemetry_decoder.css">
<link rel="stylesheet" href="../_stylesheets/filter_tool.css">
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#full-usb-logging-repair-11716" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href=".." title="MeshCore Docs" class="md-header__button md-logo" aria-label="MeshCore Docs" data-md-component="logo">
<img src="../_assets/meshcore.svg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
MeshCore Docs
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Full USB logging repair — 1.17.1.6
</span>
</div>
</div>
</div>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/mikecarper/MeshCore/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
</div>
<div class="md-source__repository">
mikecarper/MeshCore
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href=".." title="MeshCore Docs" class="md-nav__button md-logo" aria-label="MeshCore Docs" data-md-component="logo">
<img src="../_assets/meshcore.svg" alt="logo">
</a>
MeshCore Docs
</label>
<div class="md-nav__source">
<a href="https://github.com/mikecarper/MeshCore/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
</div>
<div class="md-source__repository">
mikecarper/MeshCore
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href=".." class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../WiFi/" class="md-nav__link">
<span class="md-ellipsis">
WiFi and MQTT by Firmware Type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cad_scan_validation/" class="md-nav__link">
<span class="md-ellipsis">
SX1262 channel-scanning hardware results
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../carrier_wave/" class="md-nav__link">
<span class="md-ellipsis">
Carrier-wave RF checks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../carrier_wave_validation/" class="md-nav__link">
<span class="md-ellipsis">
CW and CW2 validation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cli_build_matrix/" class="md-nav__link">
<span class="md-ellipsis">
CLI Availability by Firmware Build
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cli_command_availability/" class="md-nav__link">
<span class="md-ellipsis">
CLI Command Availability Matrix
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cli_commands/" class="md-nav__link">
<span class="md-ellipsis">
CLI Commands
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../cli_settings_audit/" class="md-nav__link">
<span class="md-ellipsis">
CLI setting dispatch audit
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../companion_contact_cache/" class="md-nav__link">
<span class="md-ellipsis">
Full Companion contact caches
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../companion_contact_cache_results/" class="md-nav__link">
<span class="md-ellipsis">
Contact-cache and NimBLE RAM qualification
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../companion_offline_queue/" class="md-nav__link">
<span class="md-ellipsis">
Companion Offline Message Queue
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../companion_protocol/" class="md-nav__link">
<span class="md-ellipsis">
Companion Protocol
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../companion_radio_full/" class="md-nav__link">
<span class="md-ellipsis">
Full Companion
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../companion_usb_ascii_validation/" class="md-nav__link">
<span class="md-ellipsis">
USB Companion ASCII default validation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../companion_usb_client_validation/" class="md-nav__link">
<span class="md-ellipsis">
USB Companion client compatibility
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../docs/" class="md-nav__link">
<span class="md-ellipsis">
Local Documentation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../double_frequency_v4_validation/" class="md-nav__link">
<span class="md-ellipsis">
Double center-frequency write: V4 transmitter / XIAO receiver
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../esp32_memory_budget/" class="md-nav__link">
<span class="md-ellipsis">
Classic ESP32 image memory budget
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../espnow_bridge_setup/" class="md-nav__link">
<span class="md-ellipsis">
ESP-NOW bridge: simple setup
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../faq/" class="md-nav__link">
<span class="md-ellipsis">
Frequently Asked Questions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../filter_tool/" class="md-nav__link">
<span class="md-ellipsis">
Filter policy playground
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../firmware_memory_budget/" class="md-nav__link">
<span class="md-ellipsis">
Firmware memory checks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../firmware_picker/" class="md-nav__link">
<span class="md-ellipsis">
Firmware picker
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../flood_filtering/" class="md-nav__link">
<span class="md-ellipsis">
Flood Filtering and Moderation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../four_fixed_tx_dwell_validation/" class="md-nav__link">
<span class="md-ellipsis">
Four fixed transmitters: longer dwell repeats
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../four_fixed_tx_single_pass_validation/" class="md-nav__link">
<span class="md-ellipsis">
Four fixed transmitters / fast single-pass receiver
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../full_companion_features/" class="md-nav__link">
<span class="md-ellipsis">
Full Companion: turn features on and off
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../full_companion_usb_switcher/" class="md-nav__link">
<span class="md-ellipsis">
Companion USB CLI and binary switcher
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Full USB logging repair — 1.17.1.6
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Full USB logging repair — 1.17.1.6
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#published-image-audit" class="md-nav__link">
<span class="md-ellipsis">
Published-image audit
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#fix-and-regression-coverage" class="md-nav__link">
<span class="md-ellipsis">
Fix and regression coverage
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../gps_tracking/" class="md-nav__link">
<span class="md-ellipsis">
GPS Tracking
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../halo_keymind_settings/" class="md-nav__link">
<span class="md-ellipsis">
Halo and Keymind Branch Settings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware_validation_bluetooth_stealth_2026-09-07/" class="md-nav__link">
<span class="md-ellipsis">
XIAO Bluetooth stealth hardware validation - 2026-09-07
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../hardware_validation_checklist/" class="md-nav__link">
<span class="md-ellipsis">
Hardware validation checklist
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../home_text_spacing/" class="md-nav__link">
<span class="md-ellipsis">
Home-screen text spacing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../host_cli_service/" class="md-nav__link">
<span class="md-ellipsis">
LoRa CLI Host Service
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../kiss_modem_protocol/" class="md-nav__link">
<span class="md-ellipsis">
MeshCore KISS Modem Protocol
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../lora_ota_automation/" class="md-nav__link">
<span class="md-ellipsis">
Scripted LoRa OTA from start to finish
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../mbedtls-tls-footprint/" class="md-nav__link">
<span class="md-ellipsis">
Shrinking the per-connection TLS footprint on non-PSRAM observers
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../mixed_scan_validation/" class="md-nav__link">
<span class="md-ellipsis">
Mixed-bandwidth two-channel reception test
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../mixed_sf_bw_validation/" class="md-nav__link">
<span class="md-ellipsis">
Equal-symbol-time mixed SF/BW, four-channel test
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nimble_companion_trial/" class="md-nav__link">
<span class="md-ellipsis">
ESP32-S3 NimBLE Full Companion trial
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nimble_companion_trial_results/" class="md-nav__link">
<span class="md-ellipsis">
ESP32-S3 NimBLE trial results, 2026-09-08
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nrf52-usb-ready-fix/" class="md-nav__link">
<span class="md-ellipsis">
nRF52 USB READY hang
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nrf52_companion_storage_recovery/" class="md-nav__link">
<span class="md-ellipsis">
nRF52 Companion automatic ExtraFS recovery
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nrf52_power_management/" class="md-nav__link">
<span class="md-ellipsis">
nRF52 Power Management
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../number_allocations/" class="md-nav__link">
<span class="md-ellipsis">
Number Allocations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../ota_easy/" class="md-nav__link">
<span class="md-ellipsis">
Easy firmware updates over LoRa
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../ota_meshtower_v2_sdcard/" class="md-nav__link">
<span class="md-ellipsis">
MeshTower V2 microSD LoRa OTA
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../ota_nrf52_bootloader_update/" class="md-nav__link">
<span class="md-ellipsis">
nRF52 bootloader updates over LoRa
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../ota_nrf52_qspi/" class="md-nav__link">
<span class="md-ellipsis">
nRF52 repeater LoRa OTA with external QSPI
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../ota_protocol/" class="md-nav__link">
<span class="md-ellipsis">
MeshCore OTA - .mota container &amp; LoRa protocol
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../ota_user_guide/" class="md-nav__link">
<span class="md-ellipsis">
Updating your node over the air (OTA) - user guide
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../packet_format/" class="md-nav__link">
<span class="md-ellipsis">
Packet Format
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../pair_4p6_300us_validation/" class="md-nav__link">
<span class="md-ellipsis">
SF7/62.5 + SF8/500: 4.6 slow chirps, 0.3 ms reserve
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../pair_preamble32_validation/" class="md-nav__link">
<span class="md-ellipsis">
SF7/62.5 + SF8/500, fast switching and preamble 32
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../payloads/" class="md-nav__link">
<span class="md-ellipsis">
Payload Format
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../pr7_review_validation/" class="md-nav__link">
<span class="md-ellipsis">
PR #7 review and validation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../preamble_detection_investigation/" class="md-nav__link">
<span class="md-ellipsis">
Off-channel preamble investigation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../qr_codes/" class="md-nav__link">
<span class="md-ellipsis">
QR Codes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../radio_chirp_math_validation/" class="md-nav__link">
<span class="md-ellipsis">
Shared radio/radio2 chirp timing and preamble warnings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../radio_dwell_policy_validation/" class="md-nav__link">
<span class="md-ellipsis">
Automatic dwell policy: 4.6 chirps on both profiles
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../radio_profile_switch_validation/" class="md-nav__link">
<span class="md-ellipsis">
SX1262 profile-switch validation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../radio_profiles/" class="md-nav__link">
<span class="md-ellipsis">
Two LoRa profiles on one radio
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../radio_profiles_validation/" class="md-nav__link">
<span class="md-ellipsis">
Dual-profile receive validation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../radio_receive_calibration/" class="md-nav__link">
<span class="md-ellipsis">
Radio receive calibration and recovery
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rak3401_mota_chain/" class="md-nav__link">
<span class="md-ellipsis">
RAK3401 1W repeater compact LoRa update chain
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../role_feature_switches/" class="md-nav__link">
<span class="md-ellipsis">
Feature switches by role — 1.17.1.5 USA Cascade
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../s3_memory_soak_validation/" class="md-nav__link">
<span class="md-ellipsis">
ESP32-S3 OTA memory experiment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../separated_radio_modulation_cache_validation/" class="md-nav__link">
<span class="md-ellipsis">
Separated radios, normal XIAO RX gain, and unchanged-modulation timing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../sf10_10_vs_100hz_full_sample_validation/" class="md-nav__link">
<span class="md-ellipsis">
SF10/125 full samples: 10 Hz versus 100 Hz first-pass detour
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../sf10_10hz_cr_detour_validation/" class="md-nav__link">
<span class="md-ellipsis">
SF10/125: tiny first-pass frequency offset and coding-rate detour
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../sf10_full_retune_twice_validation/" class="md-nav__link">
<span class="md-ellipsis">
SF10/125: apply the full radio settings twice per hop
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../sf10_nrf52_double_write_settling_validation/" class="md-nav__link">
<span class="md-ellipsis">
SF10 / 125 kHz, XIAO nRF52 TX, double write, 1 ms delay grid
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../sf10_rollback_failure_validation/" class="md-nav__link">
<span class="md-ellipsis">
SF10/125 rollback and wider-spacing failure isolation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../sf125_settling_limits_validation/" class="md-nav__link">
<span class="md-ellipsis">
Descending SF10..SF5 / 125 kHz settling limits
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../sf5_250_dwell_validation/" class="md-nav__link">
<span class="md-ellipsis">
SF5 / 250 kHz: four-channel dwell sweep
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../sf6_125_settling_validation/" class="md-nav__link">
<span class="md-ellipsis">
SF6/125 four-channel post-switch settling sweep
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../sf6_5p1_trace_validation/" class="md-nav__link">
<span class="md-ellipsis">
SF6 / 125 kHz: four channels at 5.1 chirps
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../sf6_channel_scan_validation/" class="md-nav__link">
<span class="md-ellipsis">
SF6 / 125 kHz channel-count test
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../sf8_5p1_trace_validation/" class="md-nav__link">
<span class="md-ellipsis">
SF8 / 125 kHz: four-channel comparison at 5.1 chirps
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../spiffs_regular_file_reads/" class="md-nav__link">
<span class="md-ellipsis">
SPIFFS regular-file reads and login replay state
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../stats_binary_frames/" class="md-nav__link">
<span class="md-ellipsis">
Stats Binary Frame Structures
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../telemetry_decoder/" class="md-nav__link">
<span class="md-ellipsis">
Telemetry decoder
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../terminal_chat_cli/" class="md-nav__link">
<span class="md-ellipsis">
Terminal Chat CLI
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../usb_serial_backpressure/" class="md-nav__link">
<span class="md-ellipsis">
Native USB backpressure and radio liveness
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../v4_pixel5_font_trial/" class="md-nav__link">
<span class="md-ellipsis">
Small-screen message fonts
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_88" >
<label class="md-nav__link" for="__nav_88" id="__nav_88_label" tabindex="0">
<span class="md-ellipsis">
Releases
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_88_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_88">
<span class="md-nav__icon md-icon"></span>
Releases
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../releases/1.17.1.5-doc-audit/" class="md-nav__link">
<span class="md-ellipsis">
Markdown audit — 1.17.1.5 USA Cascade
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../releases/1.17.1.5/" class="md-nav__link">
<span class="md-ellipsis">
MeshCore 1.17.1.5 Dev - USA Cascade
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../releases/1.17.1.6/" class="md-nav__link">
<span class="md-ellipsis">
MeshCore 1.17.1.6 Dev - USA Cascade
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#published-image-audit" class="md-nav__link">
<span class="md-ellipsis">
Published-image audit
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#fix-and-regression-coverage" class="md-nav__link">
<span class="md-ellipsis">
Fix and regression coverage
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/mikecarper/MeshCore/edit/keymindCascade/docs/full_usb_logging_validation.md" title="Edit this page" class="md-content__button md-icon" rel="edit">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg>
</a>
<h1 id="full-usb-logging-repair-11716">Full USB logging repair — 1.17.1.6</h1>
<p>Audit date: 2026-09-13. Release firmware source: <code>306feebe6d648a247f925894f876be9d747fc8d2</code>.</p>
<p>The original Station G2 Full Repeater and Full Room Server images omitted USB
packet logging. Both inherited <code>-UMESH_PACKET_LOGGING</code> from their ordinary MQTT
observer recipes. Full added <code>-DMESH_PACKET_LOGGING=1</code>, but PlatformIO's
<code>ProcessFlags</code> moves undefines after defines in the compiler command. The
resulting image compiled successfully with its packet logger removed.</p>
<p>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 <code>--resume</code> without the new logging evidence.</p>
<h2 id="published-image-audit">Published-image audit</h2>
<p>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.</p>
<table>
<thead>
<tr>
<th>Release group</th>
<th style="text-align: right;">Application images</th>
<th style="text-align: right;">Missing USB packet logging</th>
</tr>
</thead>
<tbody>
<tr>
<td>ESP32 Full infrastructure/utility</td>
<td style="text-align: right;">157</td>
<td style="text-align: right;">2</td>
</tr>
<tr>
<td>ESP32 Full Companion</td>
<td style="text-align: right;">52</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td>nRF52 Full Companion</td>
<td style="text-align: right;">43</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td>Total</td>
<td style="text-align: right;">252</td>
<td style="text-align: right;">2</td>
</tr>
</tbody>
</table>
<p>Affected targets:</p>
<ul>
<li><code>Station_G2_repeater_observer_mqtt</code></li>
<li><code>Station_G2_room_server_observer_mqtt</code></li>
</ul>
<p>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.</p>
<h2 id="fix-and-regression-coverage">Fix and regression coverage</h2>
<ul>
<li>Full builds that require logging remove inherited disables of
<code>MESH_PACKET_LOGGING</code> before PlatformIO parses flags. Other macros and
explicit logging-off profiles retain their policy.</li>
<li>Full capability checks require the packet logger and USB controls in the
packaged application. Combined USB/WiFi profiles additionally require
the <code>logging.output</code> setter. ELF symbols or debug text cannot satisfy these
checks.</li>
<li>Resumed builds must have passing application evidence for the current
logging contract, along with the existing artifact hashes and RAM checks.</li>
<li>CI runs the flag, real PlatformIO/compiler, artifact, resume, and build-profile
regression suites.</li>
</ul>
<p>Focused verification (after installing PlatformIO and its tool-scons package):</p>
<pre><code class="language-sh">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
</code></pre>
<p>Both Station G2 profiles were rebuilt through <code>build.sh --full</code> 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.</p>
<p>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.</p>
<p>Corrected application SHA-256:</p>
<pre><code class="language-text">Repeater: 81a0a2926d4e567c069d0b10f316047881bcedce062afaa42119dddb2baadf23
Room Server: 7ee81f1cb65fc274bd363397c3c80ce9006d575efae50fe952c8ca246613a18c
</code></pre>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"annotate": null, "base": "..", "features": ["content.action.edit", "content.code.copy", "search.highlight", "search.suggest"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
<script src="../assets/javascripts/bundle.d7400e89.min.js"></script>
<script src="../_javascript/firmware_picker.js"></script>
<script src="../_javascript/telemetry_decoder.js"></script>
<script src="../_javascript/filter_tool.js"></script>
</body>
</html>