mirror of
https://github.com/mikecarper/MeshCore.git
synced 2026-10-31 07:42:26 +00:00
3366 lines
83 KiB
HTML
3366 lines
83 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/firmware_picker/">
|
|
|
|
|
|
<link rel="prev" href="..">
|
|
|
|
|
|
<link rel="next" href="../notifications/">
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="icon" href="../assets/images/favicon.png">
|
|
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.7">
|
|
|
|
|
|
|
|
<title>Firmware picker - 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/notification_builder.css?v=20261006-channel9">
|
|
|
|
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css">
|
|
|
|
<link rel="stylesheet" href="../_stylesheets/extra.css">
|
|
|
|
<link rel="stylesheet" href="../_stylesheets/firmware_picker.css?v=20261013-pick-first-1">
|
|
|
|
<link rel="stylesheet" href="../_stylesheets/telemetry_decoder.css">
|
|
|
|
<link rel="stylesheet" href="../_stylesheets/management_decoder.css">
|
|
|
|
<link rel="stylesheet" href="../_stylesheets/filter_tool.css">
|
|
|
|
<link rel="stylesheet" href="../_stylesheets/preset_test.css?v=20260923-2">
|
|
|
|
<link rel="stylesheet" href="../_stylesheets/esp32_partition_catalog.css?v=20261001-1">
|
|
|
|
<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="#firmware-picker" 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">
|
|
|
|
Firmware picker
|
|
|
|
</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">
|
|
|
|
|
|
Home
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked>
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Firmware and tools
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="true">
|
|
<label class="md-nav__title" for="__nav_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
|
|
|
|
Firmware and tools
|
|
|
|
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<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">
|
|
|
|
|
|
Firmware picker
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<a href="./" class="md-nav__link md-nav__link--active">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Firmware picker
|
|
|
|
|
|
|
|
</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="#what-the-choices-mean" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
What the choices mean
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#share-a-selection" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Share a selection
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#full-versus-standard" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
FULL versus standard
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#companion-usb-terminal-on-linux" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Companion USB terminal on Linux
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#companion-tempradio2-transmit-settings" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Companion tempradio2 transmit settings
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#installation-methods" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Installation methods
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#lora-ota-and-otafix" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
LoRa OTA and OTAFIX
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#hardware-and-variant-names" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Hardware and variant names
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#maintaining-the-runtime-directions" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Maintaining the runtime directions
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#memory-corrected-11715-downloads" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Memory-corrected 1.17.1.5 downloads
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../notifications/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Notifications
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../preset_test/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Preset test
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../filter_tool/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Filter tool
|
|
|
|
|
|
|
|
</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="../management_decoder/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Management decoder
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Documentation
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
|
|
|
|
Documentation
|
|
|
|
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_3_1" id="__nav_3_1_label" tabindex="0">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Getting started and features
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_1_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_3_1">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
|
|
|
|
Getting started and features
|
|
|
|
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../faq/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Faq
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../full_profiles/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Full profiles
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../role_feature_switches/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Role feature switches
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../full_companion_features/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Full companion features
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../companion_radio_full/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Companion radio full
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../full_companion_usb_switcher/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Full companion usb switcher
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../companion_offline_queue/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Companion offline queue
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../halo_keymind_settings/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Halo keymind settings
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Firmware updates and partitions
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_2_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_3_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
|
|
|
|
Firmware updates and partitions
|
|
|
|
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../upgrading_1.17.1.8_to_1.17.1.9/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Upgrading 1.17.1.8 to 1.17.1.9
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../ota_user_guide/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Ota user guide
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../ota_easy/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Ota easy
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../lora_ota_automation/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Lora ota automation
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../ota_nrf52_bootloader_update/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Ota nrf52 bootloader update
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../ota_nrf52_qspi/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Ota nrf52 qspi
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../ota_meshtower_v2_sdcard/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Ota meshtower v2 sdcard
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../esp32_partition_catalog/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Esp32 partition catalog
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../esp32_wifi_partition_migration/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Esp32 wifi partition migration
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../heltec_v4_wifi_partition_migration/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Heltec v4 wifi partition migration
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../host_cli_service/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Host cli service
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_3_3" id="__nav_3_3_label" tabindex="0">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Radio, networking, and power
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_3_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_3_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
|
|
|
|
Radio, networking, and power
|
|
|
|
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../radio_profiles/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Radio profiles
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../fleet_management/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Private fleet management
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../room_services/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Room services
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../carrier_wave/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Carrier wave
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../espnow_bridge_setup/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Espnow bridge setup
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../rs232_bridge_setup/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Rs232 bridge setup
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../udp_bridge_setup/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Udp bridge setup
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../WiFi/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
WiFi
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../flood_filtering/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Flood filtering
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</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="../companion_lost_reply/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Companion lost reply
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../sensor_tracker/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Sensor tracker
|
|
|
|
|
|
|
|
</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>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_3_4" id="__nav_3_4_label" tabindex="0">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
CLI and protocol reference
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_4_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_3_4">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
|
|
|
|
CLI and protocol reference
|
|
|
|
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<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_build_matrix/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Cli build matrix
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../cli_command_availability/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Cli command availability
|
|
|
|
|
|
|
|
</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="../companion_protocol/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Companion protocol
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../kiss_modem_protocol/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Kiss modem protocol
|
|
|
|
|
|
|
|
</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="../payloads/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Payloads
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../ota_protocol/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Ota protocol
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../management_reports/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Management reports
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../stats_binary_frames/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Stats binary frames
|
|
|
|
|
|
|
|
</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="../qr_codes/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Qr codes
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../docs/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Docs
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../research/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Research
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_5" id="__nav_5_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_5_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_5">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
|
|
|
|
Releases
|
|
|
|
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_1" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_5_1" id="__nav_5_1_label" tabindex="0">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Current release
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_1_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_5_1">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
|
|
|
|
Current release
|
|
|
|
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../releases/1.17.1.9/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
1.17.1.9 USA Cascade
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../releases/1.17.1.8/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
1.17.1.8 USA Cascade
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../test-results/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Test Results
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../old-releases/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Old Releases
|
|
|
|
|
|
|
|
</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="#what-the-choices-mean" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
What the choices mean
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#share-a-selection" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Share a selection
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#full-versus-standard" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
FULL versus standard
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#companion-usb-terminal-on-linux" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Companion USB terminal on Linux
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#companion-tempradio2-transmit-settings" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Companion tempradio2 transmit settings
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#installation-methods" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Installation methods
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#lora-ota-and-otafix" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
LoRa OTA and OTAFIX
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#hardware-and-variant-names" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Hardware and variant names
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#maintaining-the-runtime-directions" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Maintaining the runtime directions
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#memory-corrected-11715-downloads" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Memory-corrected 1.17.1.5 downloads
|
|
|
|
</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/firmware_picker.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>
|
|
|
|
|
|
|
|
|
|
<!-- meshcore-hosted-doc-link:start -->
|
|
<p class="meshcore-hosted-doc-link"><a href="https://mikecarper.github.io/MeshCore/firmware_picker/">View this page on MeshCore Docs</a>.</p>
|
|
<!-- meshcore-hosted-doc-link:end -->
|
|
|
|
<h1 id="firmware-picker">Firmware picker</h1>
|
|
<div class="firmware-picker" data-firmware-picker data-release-repo="mikecarper/MeshCore" data-controls-url="../_data/firmware_controls.json?v=t114-autodisplay-794f5f7b" data-bootloaders-url="../_data/bootloader_manifest.json?v=20261002-1" data-share-url="https://mikecarper.github.io/MeshCore/p/">
|
|
<form class="firmware-picker-form" data-role="form">
|
|
<div class="firmware-picker-feedback firmware-picker-wide" data-role="filter-feedback" hidden>
|
|
<div aria-live="polite" aria-atomic="true">
|
|
<strong data-role="filter-count"></strong>
|
|
<p data-role="filter-note"></p>
|
|
</div>
|
|
<a data-role="view-results" hidden>View files</a>
|
|
</div>
|
|
|
|
<div class="firmware-picker-control firmware-picker-select-control">
|
|
<label for="firmware-picker-hardware-family">Hardware</label>
|
|
<select id="firmware-picker-hardware-family" data-field="hardwareFamily" disabled>
|
|
<option value="">Loading hardware...</option>
|
|
</select>
|
|
</div>
|
|
|
|
<fieldset class="firmware-picker-control firmware-picker-radio-control" data-radio-field="role" disabled>
|
|
<legend>Firmware role</legend>
|
|
<div class="firmware-picker-radio-options" data-field="role">
|
|
Loading roles...
|
|
</div>
|
|
</fieldset>
|
|
|
|
<fieldset class="firmware-picker-control firmware-picker-radio-control firmware-picker-wide" data-radio-field="hardware" data-role="hardware-variant-control" disabled hidden>
|
|
<legend>Hardware variant</legend>
|
|
<div class="firmware-picker-radio-options" data-field="hardware">
|
|
Choose hardware first
|
|
</div>
|
|
</fieldset>
|
|
|
|
<details class="firmware-picker-chip-family firmware-picker-wide">
|
|
<summary data-role="chip-family-summary">Optional: chip family</summary>
|
|
<p id="firmware-picker-chip-help">Skip this if you know your board. Picking hardware selects its chip family automatically. Choose Any to clear this filter.</p>
|
|
<div class="firmware-picker-control firmware-picker-select-control">
|
|
<label for="firmware-picker-chip-family">Chip family</label>
|
|
<select id="firmware-picker-chip-family" data-field="chipFamily" aria-describedby="firmware-picker-chip-help" disabled>
|
|
<option value="">Any chip family - skip this filter</option>
|
|
</select>
|
|
</div>
|
|
</details>
|
|
|
|
<fieldset class="firmware-picker-control firmware-picker-radio-control firmware-picker-wide" data-radio-field="install" disabled>
|
|
<legend>Install operation</legend>
|
|
<div class="firmware-picker-radio-options" data-field="install">
|
|
Loading install choices...
|
|
</div>
|
|
</fieldset>
|
|
|
|
<fieldset class="firmware-picker-control firmware-picker-radio-control" data-radio-field="logging" disabled>
|
|
<legend>Logging / MQTT</legend>
|
|
<div class="firmware-picker-radio-options" data-field="logging">
|
|
Loading logging choices...
|
|
</div>
|
|
</fieldset>
|
|
|
|
<fieldset class="firmware-picker-control firmware-picker-radio-control firmware-picker-wide" data-radio-field="firmwareProfile" aria-describedby="firmware-picker-profile-help" disabled>
|
|
<legend>Firmware profile</legend>
|
|
<p id="firmware-picker-profile-help" class="firmware-picker-control-help">Each button combines OTA support with the feature, sensor, and storage choices for that image. Reduced optional sensors means fewer environmental/ranging drivers; I2C and supported board peripherals remain available.</p>
|
|
<div class="firmware-picker-radio-options" data-field="firmwareProfile">
|
|
Loading firmware profiles...
|
|
</div>
|
|
</fieldset>
|
|
|
|
<fieldset class="firmware-picker-control firmware-picker-radio-control firmware-picker-wide" data-radio-field="mode" disabled>
|
|
<legend>Connection / bridge mode</legend>
|
|
<div class="firmware-picker-radio-options" data-field="mode">
|
|
Loading modes...
|
|
</div>
|
|
</fieldset>
|
|
|
|
<div class="firmware-picker-form-actions firmware-picker-wide">
|
|
<button type="reset" data-action="clear" disabled>Clear all choices</button>
|
|
<button type="button" data-action="copy-link" disabled>Copy link to settings</button>
|
|
<a data-role="share-link" hidden>Short link to these settings</a>
|
|
<p data-role="link-status" aria-live="polite"></p>
|
|
</div>
|
|
</form>
|
|
|
|
<div class="firmware-picker-intro" role="note">
|
|
<strong>Current release set</strong>
|
|
<p data-role="release-set">Loading release information...</p>
|
|
</div>
|
|
|
|
<section class="firmware-picker-result" data-role="bootloader" aria-live="polite" hidden>
|
|
<h2 data-role="bootloader-title">nRF52 bootloader</h2>
|
|
<div data-role="bootloader-content"></div>
|
|
</section>
|
|
|
|
<div class="firmware-picker-status" data-role="status" aria-live="polite">
|
|
Loading the current firmware catalog...
|
|
</div>
|
|
|
|
<section class="firmware-picker-result" data-role="result" aria-live="polite" hidden>
|
|
<p class="firmware-picker-eyebrow" data-role="result-eyebrow">Exact firmware match</p>
|
|
<h2 data-role="result-title">Recommended download</h2>
|
|
<p data-role="result-note" hidden></p>
|
|
<div data-role="result-list"></div>
|
|
</section>
|
|
|
|
<section class="firmware-picker-missing" data-role="missing" aria-live="polite" hidden>
|
|
<h2>No exact firmware matched</h2>
|
|
<p data-role="missing-text"></p>
|
|
<a href="https://github.com/mikecarper/MeshCore/releases">Browse all firmware releases</a>
|
|
</section>
|
|
|
|
<details class="firmware-picker-help">
|
|
<summary>Picker help</summary>
|
|
<p>
|
|
Pick in any order. Use <strong>Any</strong> to clear one choice, or
|
|
<strong>Clear all choices</strong> to start over. Use
|
|
<strong>Copy link to settings</strong> to share your selection.
|
|
</p>
|
|
<p>
|
|
Choices stay limited to compatible builds. Picking hardware selects its
|
|
chip family automatically. Filters disappear when they select the same
|
|
file; runtime options appear under
|
|
<strong>Restore your settings after flashing</strong> instead.
|
|
Installation instructions and board-specific guidance follow your download.
|
|
</p>
|
|
<p>
|
|
The picker reads public release metadata from GitHub. It does not upload
|
|
device information. Hardware names, targets, and download links come from
|
|
the published firmware assets.
|
|
</p>
|
|
</details>
|
|
|
|
<details class="firmware-asset-browser">
|
|
<summary>Advanced: search current release filenames</summary>
|
|
<p>
|
|
Use this for uncommon board suffixes or expert recovery. A filename match
|
|
is not a board-identity check.
|
|
</p>
|
|
<label>
|
|
Filename contains
|
|
<input data-field="asset-search" placeholder="Station_G2, heltec_v4, RAK_4631, ...">
|
|
</label>
|
|
<div data-role="asset-results"></div>
|
|
</details>
|
|
</div>
|
|
|
|
<h2 id="what-the-choices-mean">What the choices mean</h2>
|
|
<p>New <strong>Heltec T114</strong> images detect the optional screen automatically, so the
|
|
same firmware works with or without it. Choose the board and firmware role;
|
|
there is no screen option for an automatic-detection image. See the
|
|
<a href="../heltec_t114/">T114 update guide</a> when moving from an older screenless target.</p>
|
|
<p>Pick the choices in any order. The controls stay limited to compatible
|
|
firmware combinations that were actually built in the current release set.
|
|
The result count stays visible while you scroll through the filters on a phone.
|
|
Once the exact board and role are selected, the picker skips logging,
|
|
connection, and profile choices that all select the same firmware. Logging
|
|
settings move into <strong>Restore your settings after flashing</strong> beneath the files.
|
|
Choices that select different images remain visible.
|
|
For qualified nRF52 sensor pairs, Full is the normal recommendation. Open
|
|
<strong>Advanced: sensor compatibility → Show Reduced sensor images</strong> to select a Reduced image for
|
|
an existing update route or its smaller optional-driver set. Shared links
|
|
that explicitly select Reduced retain that selection. Both downloads remain
|
|
available; this changes the recommendation, not their OTA identities.
|
|
The optional chip-family filter (ESP32, nRF52, RP2040, or STM32) can narrow the
|
|
hardware list first. You can skip it: picking hardware fills it in automatically.
|
|
Chip family and hardware are the only dropdowns. All remaining choices use
|
|
buttons. <strong>Firmware profile</strong> combines OTA support, Full/standard, and sensor
|
|
or storage differences when a choice between different images is needed.</p>
|
|
<p>Use <strong>Any</strong> to clear one choice, or <strong>Clear all choices</strong> to start over.
|
|
The address bar updates with your choices; use <strong>Copy link to settings</strong> for a
|
|
shorter link to the same selection.</p>
|
|
<p>Each result includes <strong>Restore your settings after flashing</strong>. Its commands
|
|
follow the selected logging mode and the exact image's verified role/hardware
|
|
controls. Click On, Off, or Check to view and copy the commands; Companion
|
|
MQTT and GPS show their app/WebConfig steps instead. See
|
|
<a href="../role_feature_switches/">feature switches by role</a> for the full reference.
|
|
The <a href="https://flasher.meshcore.io/console">USB web console</a> works with the
|
|
default ASCII terminal on USB Companion and infrastructure roles.</p>
|
|
<p>The picker reads public release metadata from GitHub. It does not upload device
|
|
information. Hardware names, target names, and download links come directly
|
|
from the published firmware assets.</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Choice</th>
|
|
<th>Use</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>Companion</td>
|
|
<td>A phone, computer, or host application controls the radio</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Repeater</td>
|
|
<td>Standalone mesh relay</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Room Server</td>
|
|
<td>Hosts room conversations and history</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Sensor / telemetry</td>
|
|
<td>Publishes supported sensor data</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Terminal Chat</td>
|
|
<td>Standalone serial-terminal interface</td>
|
|
</tr>
|
|
<tr>
|
|
<td>USB logging / USB-connected MQTT</td>
|
|
<td>Node remains attached to a computer over a data-capable USB cable</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Wi-Fi MQTT observer</td>
|
|
<td>Firmware connects directly to MQTT over Wi-Fi; this is not USB logging</td>
|
|
</tr>
|
|
<tr>
|
|
<td>USB logging + Wi-Fi MQTT</td>
|
|
<td>Unified FULL image sends to both paths; avoid two publishers aimed at the same broker unless messages are deduplicated</td>
|
|
</tr>
|
|
<tr>
|
|
<td>No logging</td>
|
|
<td>Normal standalone operation with external logging output disabled</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Receives LoRa OTA</td>
|
|
<td>Repeater, room server, or sensor image that can stage an exact matching update received over LoRa; any sensor/storage tradeoff appears on the same Firmware profile button</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Receives LoRa OTA - Reduced optional sensors</td>
|
|
<td>Compact OTA image that omits selected optional environmental/ranging drivers while retaining generic I2C and supported board peripherals</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Reduced sensors + LoRa OTA</td>
|
|
<td>Qualified nRF52 repeater, room server, or sensor build with the reduced optional sensor recipe and LoRa OTA retained</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Full supported sensors + LoRa OTA</td>
|
|
<td>Qualified nRF52 build with all sensor drivers supported by that board's full recipe and LoRa OTA retained; does not add support for every possible attached sensor</td>
|
|
</tr>
|
|
<tr>
|
|
<td>LoRa OTA source only</td>
|
|
<td>Full Companion serving a host-supplied update to another node without self-installing it</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>Connection and bridge choices depend on the selected role. Companion firmware
|
|
may offer Full, combined USB + Bluetooth, Bluetooth, USB, Wi-Fi, serial, or
|
|
Ethernet transports.
|
|
Normal repeater firmware includes runtime-controlled RS-232 support where the
|
|
board has room; use the selected image's runtime directions to configure it.
|
|
Choose Wi-Fi MQTT in the result's saved logging settings when
|
|
it shares the Full image; separate MQTT images retain a <strong>Logging / MQTT</strong>
|
|
filter. Full ESP32 LoRa repeaters include runtime
|
|
ESP-NOW when capacity permits; dedicated ESP-NOW images remain for measured
|
|
capacity exceptions. Ethernet still needs its exact hardware recipe.</p>
|
|
<p>For commands and option explanations, follow the
|
|
<a href="../espnow_bridge_setup/">ESP-NOW bridge setup guide</a>.</p>
|
|
<p>An ESP-NOW bridge target keeps LoRa as its primary mesh radio. Expanded ESP32
|
|
Full LoRa repeaters include ESP-NOW, including boards without an MQTT
|
|
recipe. Existing MQTT-backed Full repeater and room-server images combine
|
|
both transports. Use <code>set espnow.enabled on|off</code> for ESP-NOW and, where
|
|
supported, <code>set mqtt.enabled on|off</code> for MQTT. Newly combined ordinary
|
|
repeaters start with ESP-NOW off until explicitly enabled, including the first
|
|
upgrade from unmarked legacy preferences. Later reboots preserve that setting.
|
|
On combined RS-232 boards without MQTT, <code>bridge.enabled</code> controls the UART.
|
|
Use the selected download's board notes and runtime controls for images with
|
|
independent UART, MQTT, and ESP-NOW services.
|
|
MQTT and ESP-NOW use one 2.4 GHz radio, so when both are enabled the ESP-NOW bridge channel must
|
|
match the connected WiFi access point's fixed channel. ESP-NOW-only mode does
|
|
not require WiFi credentials. Its runtime
|
|
<code>bridge.format</code> setting chooses the peer protocol: <code>wrapped</code> (the
|
|
backward-compatible bridge-to-bridge default using <code>bridge.secret</code>) or <code>raw</code>
|
|
(direct MeshCore ESP-NOW LR frames for <code>Generic_ESPNOW</code>,
|
|
<code>SenseCapIndicator-ESPNow</code>, and other primary-ESP-NOW nodes). This is one
|
|
firmware choice, not two board images. Match <code>bridge.channel</code> to the primary
|
|
nodes' <code>espnow.channel</code> before selecting <code>set bridge.format raw</code>.</p>
|
|
<h2 id="share-a-selection">Share a selection</h2>
|
|
<p>Select any combination of choices, then use <strong>Copy link to settings</strong> for a
|
|
short URL under <code>https://mikecarper.github.io/MeshCore/p/</code>. Opening the link
|
|
restores those choices after the release
|
|
catalog loads. Partial selections work too, so you can share a board and role
|
|
while leaving other choices open. <strong>Clear all choices</strong> removes the picker
|
|
parameters from the URL. Changes update the current browser-history entry
|
|
without reloading the page or adding a Back-button entry for every click.</p>
|
|
<p>For example, <a href="https://mikecarper.github.io/MeshCore/p/?s=1.hRAK_3401.rrepeater.olora-receiver.ffull.vdefault">RAK3401 unified Full repeater</a>
|
|
preselects that board, role, OTA capability, and Full sensor policy. Supported
|
|
internal or external storage is detected by the unified image.</p>
|
|
<p>Short links encode only the selected choices in a versioned <code>s</code> parameter.
|
|
Hardware identifiers stay readable, and the link omits redundant hardware-family
|
|
and automatically selected chip-family values. It keeps profile and install
|
|
choices explicitly rather than relying on the current catalog's defaults.
|
|
The address bar also uses the compact selection format; copying it works too.</p>
|
|
<p>Existing long links still work. Their query parameters are <code>chipFamily</code>, <code>hardwareFamily</code>, <code>hardware</code>, <code>role</code>,
|
|
<code>logging</code>, <code>ota</code>, <code>mode</code>, <code>feature</code>, <code>variant</code>, and <code>install</code>. Values use the
|
|
picker's internal identifiers rather than the displayed labels. One Firmware
|
|
profile button sets <code>ota</code>, <code>feature</code>, and <code>variant</code> together. Existing links
|
|
with only some of those choices still work and show their partial selection.
|
|
The selection also records when chip-family filtering was chosen manually so
|
|
automatic chip-family selection or an explicit
|
|
<strong>Any</strong> choice behaves the same after reopening. Existing section anchors and
|
|
unrelated query parameters are preserved.</p>
|
|
<p>Links use the current release catalog. If a linked choice is no longer available
|
|
or conflicts with another choice, the picker identifies it and asks you to
|
|
review the remaining selections. The downloadable HTML's <strong>Copy link to
|
|
settings</strong> button creates a short public website link that other people can open.</p>
|
|
<h2 id="full-versus-standard">FULL versus standard</h2>
|
|
<p>Current ESP32 ordinary releases use one Full / complete image per exact board
|
|
and role. Full keeps the supported feature set and CLI; runtime switches select
|
|
USB, Bluetooth, Wi-Fi, logging, and other qualified features. Separate portable,
|
|
minimal, and single-transport ESP32 images are installation/recovery recipes,
|
|
not additional ordinary release choices. Board-specific capacity exceptions
|
|
are shown with the selected download. Other chip families retain their qualified
|
|
capacity and sensor-profile choices.</p>
|
|
<p>Moving an older ESP32 installation to an expanded Full layout requires a
|
|
partition migration.
|
|
Use the exact-board merged image over USB, or a supported exact board and role
|
|
staged migration ZIP from the <a href="https://github.com/mikecarper/MeshCore/releases/tag/utility-v1.17.1.9-halo-keymind-cascade-dev-88c85108">utility release</a>.
|
|
Read that ZIP's README before choosing the Wi-Fi or LoRa route. Do not send a
|
|
loose app-only Full <code>.bin</code> directly to an older layout: the running application
|
|
cannot move its own active and inactive partitions. Run
|
|
<a href="../cli_commands/#show-the-storage-layout"><code>get storage.layout</code></a> on the installed
|
|
firmware if available. It reports the live partition table; a version-based
|
|
guess cannot confirm the installed layout. See the
|
|
<a href="../esp32_partition_catalog/">partition lookup guide</a> when the old firmware lacks
|
|
that command.</p>
|
|
<p>Current <code>full-usb-wifi</code> profiles use one binary for no external output, USB
|
|
packet logging/USB-connected MQTT, direct WiFi MQTT, or both. The picker skips
|
|
the logging filter when these modes use the same file; select the saved
|
|
runtime mode with <code>set logging.output off|usb|wifi|both</code>. A FULL logging-fallback
|
|
profile is listed only when no WiFi MQTT sibling exists; it supports both
|
|
the no-output and USB settings because <code>set usb.logging off|on</code> is persistent.
|
|
On a fresh unified FULL install with no saved SSID, the setup AP and WiFi radio
|
|
remain available for 30 minutes per boot, then turn off automatically until the
|
|
next reboot or power cycle. An explicit administrator <code>start webconfig</code> remains
|
|
available as an override. A saved SSID switches to the normal indefinite
|
|
reconnect behavior instead.</p>
|
|
<p>Fresh ESP32 Full infrastructure defaults to USB logging off. Existing saved
|
|
logging and device power-saving settings survive an update. Automatic
|
|
unconfigured boot setup also pauses network-bridge retries until an explicit
|
|
bridge start, allowing its radio to turn off when the AP closes. Manual
|
|
WebConfig/WiFi starts preserve an explicitly enabled ESP-NOW bridge, including
|
|
when the master radio switch restores the selected services. Compact OTA
|
|
images scan before raising a new AP and verify live driver readiness before
|
|
reporting the update URL.</p>
|
|
<p>Full Companion profiles use one binary for USB, BLE, ordinary Wi-Fi on ESP32,
|
|
source-only LoRa OTA, Terminal Chat, optional USB packet logging, and any
|
|
board-qualified serial or Ethernet Companion transport. Bulk builds therefore
|
|
omit separate attached-transport, Terminal Chat, and USB-logging artifacts
|
|
whenever the exact Full recipe exists. RAK4631 repeater and room-server
|
|
Ethernet images remain separate roles. Fresh installs default to logging off.
|
|
Heltec V3 and base OLED V4 Full images also contain the former direct Wi-Fi
|
|
MQTT Companion capability, configured at runtime through WebConfig, so their
|
|
separate <code>companion_radio_wifi_mqtt</code> artifacts are omitted from canonical
|
|
builds as well.</p>
|
|
<p>When Full Companion does not fit but a matching USB Companion does, that USB
|
|
artifact also supplies Terminal Chat and replaces its standalone release image.
|
|
Heltec E290 and T190 now publish one Full USB + BLE + WiFi Companion; their old
|
|
combined and single-transport names are explicit-build compatibility aliases.
|
|
SSD1306 Full Companion builds use <code>set display.rotation 90|180|270</code>; <code>0</code>
|
|
restores the board default, so a separate rotated release image is not
|
|
recommended.</p>
|
|
<p>New display-capable RAK4631 and RAK3401 images with OLED controller detection
|
|
also offer saved <code>display.controller</code> choices: <code>auto</code>, <code>ssd1306</code> or <code>sh1106</code>.
|
|
This applies after restart and avoids a custom image when a panel needs an
|
|
explicit controller. See <a href="../cli_commands/#select-rak-oled-controller">controller selection</a>.</p>
|
|
<p>New Heltec V4 R8 TFT images also support saved rotation in Companion,
|
|
Repeater, Room Server and Sensor roles. The observer dashboard follows the
|
|
selected portrait or landscape orientation. Once the canonical image proves
|
|
this capability, the picker replaces separate portrait recommendations with
|
|
runtime rotation controls. The stock R8 kit has no accelerometer, so automatic
|
|
orientation is not offered. See <a href="../cli_commands/#set-display-rotation">display rotation</a>.</p>
|
|
<p>Other new canonical images can replace redundant hardware or transport choices:
|
|
the Heltec V4 OLED covers its matching OLED expansion kit, Pico W Companion
|
|
combines USB/Bluetooth/WiFi, and RC32 detects its optional T108 display. The
|
|
picker requires verified capabilities from the actual downloadable application
|
|
before replacing an older recommendation. Existing downloads remain available
|
|
through the advanced filename search; changing target names still requires
|
|
the matching local migration rather than a cross-target LoRa update.</p>
|
|
<p>Muzi Base Companion also includes the optional SuperIO accessory for its exact
|
|
Uno or Duo radio, and T-Echo Lite Companion detects its e-paper panel. A new
|
|
verified canonical image can therefore replace the matching SuperIO or
|
|
non-shell recommendation. These accessory choices do not change the radio
|
|
hardware selection. See <a href="../optional_screens/">optional screens</a>.</p>
|
|
<p>The <a href="../test-results/firmware_variant_consolidation/">variant consolidation validation</a>
|
|
records the qualified package hashes, controls checks and pending hardware tests.</p>
|
|
<p>Ordinary non-OTA roles also use one artifact for normal operation and USB
|
|
logging. On ESP32 1.17.1.5, run <code>set powersaving off</code> before <code>set usb.logging on</code>.
|
|
Select the saved mode with <code>set usb.logging off|on</code>; no <code>-logging-</code>
|
|
artifact is emitted. KISS, BLE-only Companion, and constrained LoRa OTA
|
|
repeater images retain their protocol/partition contracts and do not inherit
|
|
plaintext USB logging.</p>
|
|
<p>nRF52 Full Companion keeps the multi-role primary interface on <code>00</code>; it starts
|
|
as an ASCII terminal and automatically hands a complete <code><</code> frame to Binary
|
|
Companion. <code>set usb.logging on reboot</code> adds its plaintext interface <code>02</code>.</p>
|
|
<p>Every ESP32 Full Companion instead exposes one USB TTY. Logging is off by
|
|
default, so the TTY serves the ASCII/Binary Companion switcher. On 1.17.1.5,
|
|
run these two text commands to enable USB logging:</p>
|
|
<pre><code class="language-text">set powersaving off
|
|
set usb.logging on
|
|
</code></pre>
|
|
<p>The second command turns that same TTY into an input-capable plaintext
|
|
CLI/logging stream; framed Binary Companion is unavailable on USB while
|
|
logging owns it. <code>set usb.logging off</code> stops the logs and leaves the TTY in
|
|
the normal ASCII terminal, matching a fresh Full installation. Send
|
|
<code>+++MESHCORE-TERM-STOP</code>, or let a Companion app send a valid framed probe, to
|
|
switch from there to Binary Companion. BLE and Wi-Fi Companion remain usable
|
|
while the USB TTY is logging. ESP32 Full builds use the repository's
|
|
Arduino-ESP32 2.x base where the board supports it; RC32 and ESP32-C6 retain
|
|
their board-required Arduino 3.x platform but still expose only one USB TTY.
|
|
A second ESP32 CDC interface is not part of the release profile.</p>
|
|
<p>The picker includes the power-saving workaround when selecting <strong>USB</strong> or
|
|
<strong>USB + WiFi</strong> logging on ESP32 1.17.1.5. WiFi/MQTT-only logging does not need
|
|
it while the Repeater/Room Server bridge is running; check <code>get mqtt.running</code>.
|
|
The workaround is not added to nRF52 directions. See <a href="../role_feature_switches/">logging by role</a>
|
|
for the saved settings and the original firmware's USB sleep issue.</p>
|
|
<h2 id="companion-usb-terminal-on-linux">Companion USB terminal on Linux</h2>
|
|
<p>Full, USB and USB + Bluetooth Companion results include <strong>Companion USB terminal
|
|
(Linux / Bash)</strong> under <strong>Restore your settings after flashing</strong>, with copyable
|
|
connection and recovery commands.</p>
|
|
<p>Updated 1.17.1.6 USB Companions default to ASCII at boot and after an observable
|
|
USB session reset. <code>picocom -b 115200 /dev/ttyACM0</code> is sufficient for a fresh
|
|
session. A valid framed app command automatically selects Binary Companion.
|
|
The command below also works with older firmware or a port left in Binary mode.</p>
|
|
<p>Run this in Bash on the Linux computer connected to your radio:</p>
|
|
<pre><code class="language-bash">picocom -b 115200 --imap spchex \
|
|
--initstring $'\r+++MESHCORE-TERM-START\r' \
|
|
/dev/ttyACM0
|
|
</code></pre>
|
|
<p>Replace <code>/dev/ttyACM0</code> with your radio's port, such as <code>/dev/ttyACM1</code> or
|
|
<code>/dev/ttyUSB0</code>. Use the primary USB data interface (<code>00</code> when multiple interfaces
|
|
appear), and close other apps using it. The init string requests the ASCII CLI;
|
|
its leading carriage return clears an unfinished input line. <code>--imap spchex</code>
|
|
displays binary control bytes safely during the transition.</p>
|
|
<p>If the terminal display is scrambled, exit picocom with <strong>Ctrl+A, then Ctrl+X</strong>,
|
|
run <code>reset</code> in your Linux shell, then reconnect with the command above. At the
|
|
radio prompt, run <code>version</code> and <code>board</code> to identify the node. See the
|
|
<a href="../terminal_chat_cli/#companion-usb-mode">Companion USB mode guide</a>.</p>
|
|
<h2 id="companion-tempradio2-transmit-settings">Companion tempradio2 transmit settings</h2>
|
|
<p>LoRa Companion results for 1.17.1.6 and newer include <strong>Companion tempradio2:
|
|
transmit on both</strong> under <strong>Restore your settings after flashing</strong>. After
|
|
configuring <code>tempradio2</code> in <code>rxtx</code> mode, choose <strong>Transmit on both</strong> to copy:</p>
|
|
<pre><code class="language-text">set radio2.cross on
|
|
</code></pre>
|
|
<p>This copies new messages to both <code>radio</code> and <code>tempradio2</code>. The setting is saved,
|
|
outlasts the temporary session and reboot, and also allows OTA traffic to cross
|
|
profiles. <strong>Default isolation</strong> copies <code>set radio2.cross off</code>; <strong>Check</strong> shows
|
|
the temporary profile, crossing policy and per-profile transmit counters.
|
|
See the <a href="../radio_profiles/#companion-messages-on-both-profiles">two-profile setup guide</a>.</p>
|
|
<h2 id="installation-methods">Installation methods</h2>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>File</th>
|
|
<th>Use</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><code>-merged.bin</code></td>
|
|
<td>Erase/fresh install, recovery, role migration, or partition-profile change on ESP32 over USB</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Non-merged <code>.bin</code></td>
|
|
<td>Update an existing same-board, same-role, same-partition installation</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>*-migration.zip</code></td>
|
|
<td>Exact ESP32 board and role staged partition migration; follow its included README for Wi-Fi or LoRa steps</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Other <code>.zip</code> firmware shown by the picker</td>
|
|
<td>Native nRF52 Serial DFU update package; it is not an extra archive</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>.uf2</code></td>
|
|
<td>UF2 bootloader drag-and-drop install or update</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>.hex</code></td>
|
|
<td>Erase/recovery flash with a supported wired programmer</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>Never send a merged ESP32 image through browser OTA or LoRa OTA. Back up the
|
|
node identity, configuration, keys, and radio settings, and verify every
|
|
filename suffix before flashing. A staged migration writes the partition table;
|
|
power loss during that write can require cable recovery. The package README
|
|
states what each route preserves and which older layouts it accepts.</p>
|
|
<h2 id="lora-ota-and-otafix">LoRa OTA and OTAFIX</h2>
|
|
<p>A LoRa OTA capable build can receive and stage updates for its role. A later
|
|
LoRa update still needs an exact target identity,
|
|
compatible partition signature, matching radio settings, and the correct
|
|
update package.</p>
|
|
<p>Selecting an nRF52 board shows its direct <strong>Bootloader UF2</strong>, <strong>Bootloader DFU
|
|
ZIP</strong>, and <strong>Bootloader HEX (SWD)</strong> downloads, when an exact published profile
|
|
is available. ESP32 and other chip families do not show this section. The web
|
|
picker checks the latest stable OTAFIX release; the downloadable picker
|
|
includes the bootloader release named in its saved catalog. If a board has no
|
|
verified mapping or a file is missing, the picker explains that instead of
|
|
offering another board's bootloader. OTAFIX 2.4.11 publishes a combined
|
|
MeshTower V2 SD/internal image, mapped only to <code>Heltec_tower_v2_sdcard</code>.
|
|
The historical <code>Heltec_tower_v2</code> internal-only profile is explicitly retired:
|
|
move to the normal combined image with a one-time local USB/BLE DFU or SWD
|
|
installation, not a cross-profile LoRa bootloader update. The picker does not
|
|
silently substitute its bootloader. RAK3401 and RAK4631 each use their
|
|
board-specific adaptive storage bootloader.
|
|
Ikoka Stick, Nano and Handheld plus SolarXiao use the XIAO bootloader;
|
|
Wio Tracker L1 1W and E-Ink use the L1 bootloader. See the
|
|
<a href="https://github.com/mikecarper/Adafruit_nRF52_Bootloader_OTAFIX/blob/feature/ota-delta-apply/docs/meshcore-hardware-coverage.md">board coverage audit</a>
|
|
for the source checks and boards still awaiting a dedicated, tested release.</p>
|
|
<p>Board mappings and file names, URLs, sizes and SHA-256 hashes come from
|
|
<code>bootloader-manifest.json</code> in the
|
|
<a href="https://github.com/mikecarper/Adafruit_nRF52_Bootloader_OTAFIX/releases/latest">OTAFIX release</a>.
|
|
Application UF2 and DFU files do not install a bootloader. Follow the bootloader
|
|
release's migration instructions if the installed version needs a recovery bridge.</p>
|
|
<p>nRF52 LoRa OTA requires an OTAFIX bootloader built for the exact board and
|
|
storage layout. Select the hardware-matched HEX, Serial DFU ZIP, or
|
|
bootloader-update UF2 for the application image being installed.</p>
|
|
<h2 id="hardware-and-variant-names">Hardware and variant names</h2>
|
|
<p>Hardware families with multiple released targets get <strong>Hardware variant</strong>
|
|
buttons. They separate revisions, display type, expansion kit, radio/PA layout,
|
|
pin map, and other physical differences without crowding the Hardware dropdown.
|
|
<strong>Firmware profile</strong> buttons combine OTA support, Full/standard, and choices
|
|
that need a different image or wiring, such as serial port or external storage.
|
|
The picker skips this step when all available profile choices lead to the
|
|
same firmware file.
|
|
The 1.17.1.9 nRF52 repeater, room-server and sensor releases publish two separately
|
|
qualified choices: <strong>Reduced sensors + LoRa OTA</strong> and
|
|
<strong>Full supported sensors + LoRa OTA</strong>, with <code>-reduced-ota</code> and <code>-full-ota</code> artifact suffixes. Each keeps
|
|
its exact board/role OTA identity and storage layout; the suffix is not a new
|
|
radio or partition identity. Labels come from the release's qualified
|
|
<code>sensor.profile.reduced</code> / <code>sensor.profile.full</code> metadata and verified LoRa
|
|
receiver, not from the filename alone. Both profiles remain separate in local
|
|
and published releases, including boards whose optional sensor set is small
|
|
enough that the images have little or no size difference. Packaging requires
|
|
both profiles with matching packaged OTA identity and flash geometry, even
|
|
when a matrix is resumed or partial publication is requested. A failed build
|
|
is reported, never presented as a supported download. Companion is unchanged.</p>
|
|
<p>Normal SolarXiao, XIAO nRF52, Ikoka Nano/Stick/Handheld, T-Echo, T-Echo Lite,
|
|
ThinkNode M1/M6, Wio Tracker L1 and SenseCAP Solar Room Server builds use
|
|
onboard QSPI storage through their exact <code>*_room_server_lora_ota</code> targets,
|
|
with both sensor profiles retained. T-Echo Lite Repeater similarly uses its
|
|
exact <code>LilyGo_T-Echo-Lite_repeater_lora_ota</code> target. Each requires the
|
|
board-matched QSPI-capable OTAFIX bootloader; a shared board-family name is
|
|
not enough to choose a bootloader.
|
|
Internal-only Room recipes remain available by exact name for explicit
|
|
compatibility/recovery builds, but are excluded from ordinary build menus
|
|
and future releases. For newly converted boards, the picker keeps an existing
|
|
release's internal Room choice until that same release provides its qualified,
|
|
source-matched QSPI Full/Reduced pair. This preserves working Room links during
|
|
rollout; SolarXiao's already-retired internal choices stay hidden. Existing
|
|
downloads remain available through exact filename searches. The legacy and
|
|
QSPI images have
|
|
different OTA identities and layouts: a QSPI package is not a cross-target
|
|
LoRa update for an internal-only installation. Use the matching bootloader
|
|
and documented local migration path when changing layouts.</p>
|
|
<p>T-Echo, SenseCAP Solar, ThinkNode M1/M6 and Wio Tracker L1 already use QSPI
|
|
in their ordinary Repeater targets. Their older
|
|
<code>*_repeater_lora_ota_no_external_sensors</code> identities remain explicit
|
|
compatibility builds, not extra normal Full/Reduced choices. The picker hides
|
|
these aliases only when a source-matched, qualified ordinary QSPI pair exists.
|
|
XIAO nRF52 Repeater now also includes its runtime RS232 bridge, disabled by
|
|
default (<code>set rs232.enabled on|off</code>). The separate bridge recommendation is
|
|
hidden only after both ordinary sensor profiles prove the linked driver and
|
|
packaged runtime controls. Existing bridge OTA identities remain unchanged.</p>
|
|
<p>Muzi Base Uno/Duo, T-Echo Card and Nano G2 Ultra have explicit
|
|
<code>*_repeater_lora_ota</code> and <code>*_room_server_lora_ota</code> qualification recipes.
|
|
Their dedicated bootloader ports still require physical qualification and
|
|
publication. These experimental recipes reserve raw QSPI for OTA (no shared
|
|
QSPI filesystem), are excluded from ordinary menus and bulk builds, and carry
|
|
<code>hardware.qualification.pending</code> in their capability manifests so release
|
|
packaging refuses them. Their current normal builds and picker choices remain
|
|
available; do not install another board's bootloader to bypass this gate.</p>
|
|
<p>The legacy <code>no_external_sensors</code> profile is labeled <strong>Receives LoRa OTA -
|
|
Reduced optional sensors</strong> on the same button. On RAK3401 and RAK4631 this
|
|
compact profile uses internal storage without an external storage board. The
|
|
reduction does not disable generic I2C or unrelated board-integrated peripherals.
|
|
Reduced RAK3401 and RAK4631 targets retain INA219/INA226/INA260/INA3221 as
|
|
voltage/current entries in the optional sensor table. They are not the only I2C
|
|
users: the SSD1306 OLED, supported autodiscovered RTCs, and RAK12500 GPS remain
|
|
separate I2C peripherals in compatible recipes. RAK12501/L76K GPS uses Serial1
|
|
instead. The explicit RAK4631 Serial1 bridge omits the combined GPS provider
|
|
because its bridge owns the RAK12501 UART, so that legacy image does not expose
|
|
RAK12500 either. The firmware-configured INA3221 and RAK12500 addresses are both
|
|
<code>0x42</code>; to install both, keep RAK12500 at <code>0x42</code>, strap INA3221 A0 to SCL for
|
|
<code>0x43</code>, and use a build with <code>-DTELEM_INA3221_ADDRESS=0x43</code>. Companion power saving,
|
|
controllable FEM receive gain, and radio-chip receive gain are saved settings
|
|
rather than separate recommended firmware files. Do not substitute a similarly
|
|
named physical target.</p>
|
|
<p>The header-wired RAK19007 W25Q16 LoRa-OTA recipes are also exact hardware
|
|
variants, labeled <strong>External storage board (W25Q16)</strong> in the picker. W25Q16 is
|
|
the flash-memory part on the added storage board; RAK13302 identifies the radio
|
|
module, not the storage board. Choose this variant for RAK4631 or for RAK3401 + RAK13302 only
|
|
when that core/radio combination, the <code>EF4015</code> flash wiring, and its matching
|
|
OTAFIX bootloader are all present. The common base-board wiring does not make
|
|
the two firmware or bootloader identities interchangeable.</p>
|
|
<p>The picker recommends one Full Companion image instead of separate USB, BLE,
|
|
ordinary WiFi, and USB-logging images. On ESP32, logging is off by default so
|
|
the one USB TTY starts in ASCII and automatically changes to framed Companion
|
|
when a complete <code><</code> frame arrives. Enabling logging gives that TTY to the
|
|
plaintext CLI/logger and disables framed USB Companion until logging is turned
|
|
off and the normal ASCII-to-binary mode switch occurs. nRF52 Full Companion
|
|
retains its optional dedicated interface <code>02</code>.
|
|
Exact filename search finds compatibility images included in the selected
|
|
release family. For older releases, open their GitHub release pages.</p>
|
|
<p>The current public matrix keeps one ESP32 Full image per board and role.
|
|
Some richer images, including Station G2 Full, retain an observer-named OTA
|
|
identity. Exact older identities needed by a partition migration are packaged
|
|
inside that board and role's migration ZIP instead of adding a second ordinary
|
|
Full download. A deliberate target-ID override does not make a different
|
|
partition layout or physical board compatible.</p>
|
|
<p>Some normal ESP32 roles begin in the legacy 1.25 MiB dual-OTA layout but have
|
|
a Full image with larger slots. The utility release lists the exact
|
|
board and role migration ZIPs available for that release. Each package checks its source layout and target
|
|
identity, contains the bridge and Full application files for its supported
|
|
routes, and documents what saved data it preserves. Use the package's own Full
|
|
application after the bridge; do not substitute a loose Full image with a
|
|
different target ID. If no exact package exists, use the matching merged USB
|
|
image. Once migrated, routine app-only updates still need the same target and
|
|
partition signature.</p>
|
|
<h2 id="maintaining-the-runtime-directions">Maintaining the runtime directions</h2>
|
|
<p>See <a href="../optional_screens/">optional screens</a> for manufacturer-confirmed screen
|
|
options, automatic detection support, and integral-screen exclusions.</p>
|
|
<p>The online picker and downloadable HTML use the same command renderer.
|
|
Hardware-specific controls are enabled only when <code>_data/firmware_controls.json</code>
|
|
matches the selected release family and exact target. If that metadata is
|
|
missing or belongs to another release, the picker retains basic role/logging
|
|
directions and links the complete guide without inventing hardware support.
|
|
For 1.17.1.6, that JSON also records the verified LoRa OTA role of each image
|
|
and USB logging modes where the packaged application was checked. Logging
|
|
metadata is tied to the source hash of its firmware file. The normal iKoka
|
|
30 dBm repeater has USB logging and LoRa OTA; its compact no-external-sensors
|
|
image has LoRa OTA without logging.
|
|
Capacity directions come from each qualified profile's recorded reductions and
|
|
are tied to the source hash of the selected download. The older 1.17.1.5 USB
|
|
sleep workaround stays limited to that release.</p>
|
|
<p>After qualifying a new release, resolve its PlatformIO configuration with no
|
|
other PlatformIO process running, then generate the controls from that source
|
|
revision and its staged manifests:</p>
|
|
<pre><code class="language-bash">pio project config --json-output > /tmp/meshcore-picker-pio-config.json
|
|
python3 scripts/generate_picker_controls.py \
|
|
--stage /path/to/staged-release \
|
|
--pio-config /tmp/meshcore-picker-pio-config.json
|
|
</code></pre>
|
|
<p>Refresh the <code>data-controls-url</code> version query when publishing the generated
|
|
metadata so browsers fetch the new release's controls.</p>
|
|
<p>The generated <code>partitionMigrations</code> lookup comes from <code>BOARDS</code> in
|
|
<code>scripts/package_esp32_partition_migration.py</code>, the same exact board/role table
|
|
used to build the migration packages. Expanded ESP32 Full results use this
|
|
lookup (including canonical board/role recipes for Observer profiles), then
|
|
require one matching published ZIP in the same release family's utility page.
|
|
Hardware variants and roles remain distinct. Unlisted targets, missing or
|
|
ambiguous assets, and stale metadata never produce a guessed download link.</p>
|
|
<p>For the downloadable version, save the release family's public GitHub release
|
|
objects as a JSON array, then package the same picker UI and controls:</p>
|
|
<pre><code class="language-bash">python3 scripts/package_firmware_picker.py \
|
|
--releases-json /path/to/releases.json \
|
|
--output /path/to/FIRMWARE-PICKER.html
|
|
</code></pre>
|
|
<p>This HTML embeds its catalog and directions, so selections work without an
|
|
internet connection. Firmware downloads and the USB web console still need
|
|
network access. When replacing the downloadable picker on release pages,
|
|
update its entry in each page's <code>SHA256SUMS.txt</code> as well.</p>
|
|
<h2 id="memory-corrected-11715-downloads">Memory-corrected 1.17.1.5 downloads</h2>
|
|
<p>Corrected downloads retain the 1.17.1.5 release page and use source suffix
|
|
<code>aa20e927</code>, with <code>1e4d1e16</code> for Wireless Paper Full's 350-contact follow-up.
|
|
The picker accepts replacement source hashes within that exact
|
|
release version. Its installation directions identify the nRF52 queue-sharing
|
|
behavior, Wireless Paper Full's 350 contacts with a shared 256/128-slot queue,
|
|
and the 150-contact limit on the other six affected ESP32 Full profiles.
|
|
Those notices apply only to the corrected files. See the
|
|
<a href="../old-releases/1.17.1.5/#memory-corrections-in-aa20e927">memory correction details</a>
|
|
and each replacement's <code>.memory.json</code> report before updating.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</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/hosted_doc_links.js?v=20261007-1"></script>
|
|
|
|
<script src="../_javascript/notification_builder.js?v=20261006-channel9"></script>
|
|
|
|
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
|
|
|
|
<script src="../_javascript/firmware_picker.js?v=20261018-variant-consolidation-1"></script>
|
|
|
|
<script src="../_javascript/telemetry_decoder.js?v=20261007-hosted-form"></script>
|
|
|
|
<script src="../_javascript/management_decoder.js"></script>
|
|
|
|
<script src="../_javascript/filter_tool.js?v=20261002-hashbytes-2plus"></script>
|
|
|
|
<script src="../_javascript/preset_test.js?v=20260923-2"></script>
|
|
|
|
<script src="../_javascript/esp32_partition_catalog.js?v=20261001-1"></script>
|
|
|
|
|
|
</body>
|
|
</html> |