mirror of
https://github.com/mikecarper/MeshCore.git
synced 2026-09-16 14:42:39 +00:00
deploy: 7f37bd72e4
This commit is contained in:
+700
-238
File diff suppressed because it is too large
Load Diff
@@ -25,6 +25,11 @@
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.firmware-picker-intro [data-role="release-set"] {
|
||||
margin-top: 0.25rem;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
.firmware-picker-form {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
|
||||
@@ -75,6 +80,21 @@
|
||||
margin-top: 0.2rem;
|
||||
}
|
||||
|
||||
.firmware-picker-card {
|
||||
padding: 0.75rem 0 0.25rem;
|
||||
}
|
||||
|
||||
.firmware-picker-card + .firmware-picker-card {
|
||||
border-top: 1px solid var(--picker-border);
|
||||
margin-top: 1rem;
|
||||
padding-top: 1.25rem;
|
||||
}
|
||||
|
||||
.firmware-picker-card h3 {
|
||||
margin: 0 0 0.7rem;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
.firmware-picker-facts {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(7rem, auto) 1fr;
|
||||
|
||||
+205
-108
@@ -589,10 +589,10 @@
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#what-full-means-for-a-usb-logger" class="md-nav__link">
|
||||
<a href="#what-the-choices-mean" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
What FULL means for a USB logger
|
||||
What the choices mean
|
||||
|
||||
</span>
|
||||
</a>
|
||||
@@ -600,10 +600,10 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#can-a-heltec-v4-partition-be-expanded-by-ota" class="md-nav__link">
|
||||
<a href="#full-versus-standard" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Can a Heltec V4 partition be expanded by OTA?
|
||||
FULL versus standard
|
||||
|
||||
</span>
|
||||
</a>
|
||||
@@ -611,10 +611,32 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#merged-versus-non-merged-files" class="md-nav__link">
|
||||
<a href="#installation-methods" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Merged versus non-merged files
|
||||
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>
|
||||
@@ -1223,10 +1245,10 @@
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#what-full-means-for-a-usb-logger" class="md-nav__link">
|
||||
<a href="#what-the-choices-mean" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
What FULL means for a USB logger
|
||||
What the choices mean
|
||||
|
||||
</span>
|
||||
</a>
|
||||
@@ -1234,10 +1256,10 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#can-a-heltec-v4-partition-be-expanded-by-ota" class="md-nav__link">
|
||||
<a href="#full-versus-standard" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Can a Heltec V4 partition be expanded by OTA?
|
||||
FULL versus standard
|
||||
|
||||
</span>
|
||||
</a>
|
||||
@@ -1245,10 +1267,32 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#merged-versus-non-merged-files" class="md-nav__link">
|
||||
<a href="#installation-methods" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Merged versus non-merged files
|
||||
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>
|
||||
@@ -1281,150 +1325,181 @@
|
||||
|
||||
|
||||
<h1 id="firmware-picker">Firmware picker</h1>
|
||||
<p>Choose what the board will do, then let the picker reduce the release assets
|
||||
to one recommended firmware. The first guided board is Station G2 because its
|
||||
standard, logging, FULL, LoRa-OTA, MQTT, bridge, room-server, and Companion
|
||||
profiles are easy to confuse.</p>
|
||||
<p>The picker reads public release metadata from GitHub. It does not upload any
|
||||
device information.</p>
|
||||
<p>Choose the exact hardware first. The remaining menus then show only firmware
|
||||
roles and features that were actually built for that hardware in the current
|
||||
release set.</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>
|
||||
<div class="firmware-picker" data-firmware-picker data-release-repo="mikecarper/MeshCore">
|
||||
<div class="firmware-picker-intro" role="note">
|
||||
<strong>Station G2 shortcut</strong>
|
||||
<strong>Current release set</strong>
|
||||
<p data-role="release-set">Loading release information...</p>
|
||||
<p>
|
||||
If the G2 normally stays connected to a computer and you want USB packet
|
||||
logs, choose <strong>USB logging repeater</strong>. The recommended image
|
||||
is the expanded <strong>FULL logging</strong> profile. The smaller legacy
|
||||
logging image is mainly a compatibility fallback, not the normal choice
|
||||
for a computer-powered logger.
|
||||
For a new installation, choose the exact board and role, prefer a
|
||||
<strong>FULL / complete profile</strong> when it is available, and select
|
||||
<strong>USB first install / recovery</strong>. Narrower profiles remain
|
||||
available when their reduced transport or feature set is intentional.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<form class="firmware-picker-form" data-role="form">
|
||||
<label>
|
||||
Release channel
|
||||
<select data-field="channel">
|
||||
<option value="development" selected>Current development and pre-releases</option>
|
||||
<option value="stable">Stable releases</option>
|
||||
1. Hardware
|
||||
<select data-field="hardware" disabled>
|
||||
<option value="">Loading hardware...</option>
|
||||
</select>
|
||||
</label>
|
||||
|
||||
<label>
|
||||
What should the Station G2 do?
|
||||
<select data-field="purpose">
|
||||
<option value="usb-logging">USB logging repeater - recommended when connected to a computer</option>
|
||||
<option value="field">Simple standalone repeater</option>
|
||||
<option value="field-ota">Standalone repeater with LoRa/WiFi OTA, no external sensors</option>
|
||||
<option value="mqtt">Full MQTT observer/repeater</option>
|
||||
<option value="espnow">ESP-NOW bridge repeater</option>
|
||||
<option value="room">Room server</option>
|
||||
<option value="room-mqtt">Full MQTT room observer</option>
|
||||
<option value="companion-usb">USB Companion</option>
|
||||
<option value="companion-ble">Bluetooth Companion</option>
|
||||
<option value="companion-wifi">WiFi Companion</option>
|
||||
<option value="companion-full">Full Companion and LoRa-OTA source</option>
|
||||
2. Firmware role
|
||||
<select data-field="role" disabled>
|
||||
<option value="">Choose hardware first</option>
|
||||
</select>
|
||||
</label>
|
||||
|
||||
<label>
|
||||
How will this firmware be installed?
|
||||
<select data-field="install">
|
||||
<option value="first">First install, recovery, or changing partition/profile - USB cable</option>
|
||||
<option value="wifi">Same profile and partition - browser/WiFi OTA</option>
|
||||
<option value="lora">Same profile and partition - LoRa OTA</option>
|
||||
3. Logging / MQTT
|
||||
<select data-field="logging" disabled>
|
||||
<option value="">Choose role first</option>
|
||||
</select>
|
||||
</label>
|
||||
|
||||
<label>
|
||||
4. OTA capability
|
||||
<select data-field="ota" disabled>
|
||||
<option value="">Choose earlier options first</option>
|
||||
</select>
|
||||
</label>
|
||||
|
||||
<label>
|
||||
5. Connection / bridge mode
|
||||
<select data-field="mode" disabled>
|
||||
<option value="">Choose earlier options first</option>
|
||||
</select>
|
||||
</label>
|
||||
|
||||
<label>
|
||||
6. Feature profile
|
||||
<select data-field="feature" disabled>
|
||||
<option value="">Choose earlier options first</option>
|
||||
</select>
|
||||
</label>
|
||||
|
||||
<label>
|
||||
7. Hardware/profile variant
|
||||
<select data-field="variant" disabled>
|
||||
<option value="">Choose earlier options first</option>
|
||||
</select>
|
||||
</label>
|
||||
|
||||
<label>
|
||||
8. Installation method
|
||||
<select data-field="install" disabled>
|
||||
<option value="">Choose firmware options first</option>
|
||||
</select>
|
||||
</label>
|
||||
</form>
|
||||
|
||||
<div class="firmware-picker-status" data-role="status" aria-live="polite">
|
||||
Loading release catalog...
|
||||
Loading the current firmware catalog...
|
||||
</div>
|
||||
|
||||
<section class="firmware-picker-result" data-role="result" aria-live="polite" hidden>
|
||||
<p class="firmware-picker-eyebrow">Recommended firmware</p>
|
||||
<h2 data-role="result-title"></h2>
|
||||
<p data-role="result-summary"></p>
|
||||
<dl class="firmware-picker-facts" data-role="result-facts"></dl>
|
||||
<div class="firmware-picker-actions">
|
||||
<a class="firmware-picker-primary" data-role="download" href="#">Download recommended file</a>
|
||||
<a data-role="release" href="#">Open its release</a>
|
||||
</div>
|
||||
<div class="firmware-picker-steps" data-role="steps"></div>
|
||||
<p class="firmware-picker-eyebrow">Exact firmware match</p>
|
||||
<h2>Recommended download</h2>
|
||||
<div data-role="result-list"></div>
|
||||
</section>
|
||||
|
||||
<section class="firmware-picker-missing" data-role="missing" aria-live="polite" hidden>
|
||||
<h2>The matching asset is not in this release channel yet</h2>
|
||||
<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-asset-browser">
|
||||
<summary>Advanced: search all recent release filenames</summary>
|
||||
<summary>Advanced: search current release filenames</summary>
|
||||
<p>
|
||||
This search is for uncommon hardware variants and expert recovery. A
|
||||
filename match is not a board-identity check.
|
||||
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, repeater, ...">
|
||||
<input data-field="asset-search" placeholder="Station_G2, heltec_v4, RAK_4631, ...">
|
||||
</label>
|
||||
<div data-role="asset-results"></div>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
<h2 id="what-full-means-for-a-usb-logger">What FULL means for a USB logger</h2>
|
||||
<p>A Station G2 that is powered from and monitored by a computer normally should
|
||||
use the FULL logging profile:</p>
|
||||
<ol>
|
||||
<li>Save its name, radio settings, keys, and other configuration.</li>
|
||||
<li>Download the exact Station G2 <code>full-logging-ota</code> merged image recommended
|
||||
above.</li>
|
||||
<li>Flash that <code>-merged.bin</code> over USB once. It installs the expanded partition
|
||||
table as well as the application.</li>
|
||||
<li>Reconnect the serial terminal at 115200 baud and restore any settings that
|
||||
were not retained.</li>
|
||||
<li>Leave the data-capable USB connection attached to collect logs. Use
|
||||
<code>set usb.logging off</code> temporarily if the runtime output needs to be quiet.</li>
|
||||
</ol>
|
||||
<p>Choose the standalone or lean OTA repeater instead when the board is normally
|
||||
battery/solar powered, has no computer collecting USB output, or must retain a
|
||||
known legacy partition layout.</p>
|
||||
<h2 id="can-a-heltec-v4-partition-be-expanded-by-ota">Can a Heltec V4 partition be expanded by OTA?</h2>
|
||||
<p>No. WiFi OTA and LoRa OTA write an application into the inactive application
|
||||
partition. They do not replace the partition table at flash offset <code>0x8000</code>.
|
||||
Allowing a running application to move its own active/inactive partitions
|
||||
would risk overwriting the running image, staged image, NVS, or filesystem.</p>
|
||||
<p>The current Heltec V4 definition already uses its 16 MiB flash efficiently:</p>
|
||||
<h2 id="what-the-choices-mean">What the choices mean</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Region</th>
|
||||
<th style="text-align: right;">Size</th>
|
||||
<th>Choice</th>
|
||||
<th>Use</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Application slot A</td>
|
||||
<td style="text-align: right;"><code>0x640000</code> (6.25 MiB)</td>
|
||||
<td>Companion</td>
|
||||
<td>A phone, computer, or host application controls the radio</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Application slot B</td>
|
||||
<td style="text-align: right;"><code>0x640000</code> (6.25 MiB)</td>
|
||||
<td>Repeater</td>
|
||||
<td>Standalone mesh relay</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>SPIFFS</td>
|
||||
<td style="text-align: right;"><code>0x360000</code> (3.375 MiB)</td>
|
||||
<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>No logging</td>
|
||||
<td>Normal standalone operation without the dedicated logging/MQTT profile</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>LoRa OTA receiver</td>
|
||||
<td>Repeater profile that can stage an exact matching update received over LoRa</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>LoRa OTA source</td>
|
||||
<td>Full Companion serving a host-supplied update to another node</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>OTA-enabled profile</td>
|
||||
<td>Build uses an OTA-capable application/partition profile, but is not necessarily an explicit LoRa receiver</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>That is much larger than current MeshCore V4 applications. A different layout
|
||||
is possible only as a custom build, and it requires a one-time exact-board
|
||||
merged-image flash over USB. Expanding the app slots further would shrink or
|
||||
remove SPIFFS, or remove the second slot and therefore remove safe OTA.</p>
|
||||
<p>After installing a new partition table over USB, later WiFi or LoRa updates
|
||||
must use a non-merged application built for the same board, role, and partition
|
||||
signature. Never use an app-only FULL image to try to migrate a device that is
|
||||
still running another partition layout.</p>
|
||||
<h2 id="merged-versus-non-merged-files">Merged versus non-merged files</h2>
|
||||
<p>Connection and bridge choices depend on the selected role. Companion firmware
|
||||
may offer Full, Bluetooth, USB, Wi-Fi, serial, or Ethernet transports.
|
||||
Repeaters may offer standard, ESP-NOW bridge, RS-232 bridge, Ethernet, or MQTT
|
||||
observer modes.</p>
|
||||
<h2 id="full-versus-standard">FULL versus standard</h2>
|
||||
<p>For a new installation, use the FULL / complete profile when it exists and the
|
||||
board has enough flash. FULL profiles keep the complete supported feature set
|
||||
and CLI. Standard profiles remain useful for boards without a FULL build, for
|
||||
an intentionally narrower transport, or when retaining an existing compatible
|
||||
partition layout.</p>
|
||||
<p>Changing between standard and FULL ESP32 layouts requires the exact-board
|
||||
merged image over USB. A running application cannot safely move its own active
|
||||
and inactive partitions.</p>
|
||||
<h2 id="installation-methods">Installation methods</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -1435,20 +1510,42 @@ still running another partition layout.</p>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>-merged.bin</code></td>
|
||||
<td>First install, recovery, role/profile migration, or partition-table change over USB</td>
|
||||
<td>ESP32 first install, recovery, role migration, or partition-profile change over USB</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>.bin</code> without <code>-merged</code></td>
|
||||
<td>Browser/WiFi application update when the installed partition layout already matches</td>
|
||||
<td>Non-merged <code>.bin</code></td>
|
||||
<td>Same-board, same-role, same-partition application update</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>.mota</code></td>
|
||||
<td>LoRa OTA package for the exact target identity and installed partition layout</td>
|
||||
<td><code>.zip</code></td>
|
||||
<td>Native nRF52 Serial DFU package; it is not an extra archive</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>.uf2</code></td>
|
||||
<td>UF2 bootloader drag-and-drop installation</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>.hex</code></td>
|
||||
<td>Full wired programmer or recovery flash</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>When uncertain, back up the configuration and use the exact-board merged image
|
||||
over USB. Do not send a merged image through browser OTA or LoRa OTA.</p>
|
||||
<p>Never send a merged ESP32 image through browser OTA or LoRa OTA. Back up the
|
||||
node configuration and verify every filename suffix before flashing.</p>
|
||||
<h2 id="lora-ota-and-otafix">LoRa OTA and OTAFIX</h2>
|
||||
<p>An OTA receiver build installs the receiving/staging firmware. A later LoRa
|
||||
update still needs an exact target identity, compatible partition signature,
|
||||
matching radio settings, and the correct update package.</p>
|
||||
<p>nRF52 LoRa OTA requires an OTAFIX bootloader built for the exact board. There
|
||||
is no universal bootloader file. Use the
|
||||
<a href="https://github.com/mikecarper/Adafruit_nRF52_Bootloader_OTAFIX/releases/latest">latest stable OTAFIX release</a>
|
||||
and select the hardware-matched HEX, Serial DFU ZIP, or bootloader-update UF2.</p>
|
||||
<h2 id="hardware-and-variant-names">Hardware and variant names</h2>
|
||||
<p>The hardware menu preserves meaningful board suffixes such as display type,
|
||||
radio chip, PA/FEM layout, pin map, and external-flash variant. Later menus
|
||||
expose build variants such as FEM on/off, power saving, serial port, or
|
||||
no-external-sensors when those choices exist. Do not substitute a similarly
|
||||
named target.</p>
|
||||
|
||||
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user