From 46ef84a4130d722470340d8f60d5ee316f7728bf Mon Sep 17 00:00:00 2001 From: mikecarper Date: Mon, 31 Aug 2026 21:30:12 +0000 Subject: [PATCH] deploy: 1629725d7d4913f4763c0e79b7144e1c5fcffba7 --- WiFi/index.html | 59 ++++-- cli_command_availability/index.html | 4 + cli_commands/index.html | 49 +++-- companion_protocol/index.html | 44 ++++- companion_radio_full/index.html | 136 ++++++++++--- hardware_validation_checklist/index.html | 242 +++++++++++++++++++++-- host_cli_service/index.html | 198 ++++++++++++++++--- search/search_index.json | 2 +- 8 files changed, 624 insertions(+), 110 deletions(-) diff --git a/WiFi/index.html b/WiFi/index.html index 0f4259556..68037f99c 100644 --- a/WiFi/index.html +++ b/WiFi/index.html @@ -1785,11 +1785,15 @@ image over USB once when moving a device from the legacy partition layout.

A *_companion_radio_wifi build replaces the BLE or USB companion link with the MeshCore companion protocol over TCP port 5000. The phone or computer must be able to reach the device on the same LAN.

-

An ESP32 *_companion_radio_full target keeps all three Companion links at -once: USB, BLE, and TCP port 5000. It also provides a source-only LoRa mOTA -service on ports 5001 and 5002. See the -full Companion guide for its build, terminal mode, -and complete update-source workflow.

+

Most ESP32 *_companion_radio_full targets keep all three Companion links at +once: USB, BLE, and TCP port 5000. The two SenseCAP Indicator Full targets are +the exception: USB remains available, while a saved next-boot selector starts +exactly one secondary wireless Companion transport, either BLE or +infrastructure WiFi/TCP. On the ESP-NOW Indicator, this selector never stops the +primary ESP-NOW mesh radio. Full ESP32 images also provide a source-only LoRa +mOTA service on ports 5001 and 5002 whenever their WiFi transport is active. +See the full Companion guide for its build, +terminal mode, and complete update-source workflow.

The LilyGo T-Beam 1W Full Companion maps one press of the physical BOOT button (GPIO0) to a persistent WiFi on/off toggle. Turning WiFi off closes WebConfig, Companion TCP, mOTA, and MQTT network services while USB, BLE, the display, GPS, @@ -1814,6 +1818,17 @@ password as it is entered; get wifi.pwd is intentionally unavailabl standalone credential store accepts an empty password, ordinary passphrases up to 63 characters, or an exact 64-character hexadecimal WPA/WPA2 PSK. A non-hexadecimal 64-character value and every longer value are rejected.

+

After the saved station first connects following boot, every ESP32 WiFi +Companion requests a fresh UTC time from NTP. A verified reply updates both the +MeshCore clock and any detected hardware RTC; the next explicit refresh is due +24 hours after that success. A failed request times out without blocking the +radio loop and retries after five minutes. While WiFi is disconnected or only +the setup AP is available, the request waits for a station connection. Builds +with a configured MQTT bridge use its boot-and-daily NTP owner instead, so two +firmware services never reconfigure the ESP32 SNTP client at the same time. A +later WiFi reconnect does not add another successful-sync request; it preserves +the existing 24-hour deadline. Until a fresh internet reply succeeds, LoRa +clock consensus remains available as the fallback.

On Full Companion targets whose primary mesh radio is ESP-NOW, ESP-NOW, the setup AP, and the infrastructure-WiFi station must share one 2.4 GHz channel. The persisted channel defaults to 1 and can be inspected or changed from the @@ -1873,16 +1888,19 @@ setting and is independent of the Companion device powersaving sett WiFi card in Companion WebConfig exposes none, min, and max. Fresh Cascade-profile builds select min; target-default builds select none. A saved setting takes precedence after an upgrade.

-

WiFi-only Companions can use all three modes. Full Companion also runs BLE, so -ESP32 WiFi/Bluetooth coexistence requires at least minimum modem sleep. It -reports min when an old or target-default none value is found and rejects a -new none selection while Bluetooth is compiled in. When ESP-NOW is also the -Full Companion's primary mesh radio, max is unavailable: the access point does -not buffer ESP-NOW broadcasts for a sleeping station, so maximum modem sleep can -lose them. Firmware caps a previously saved max value to and reports it as -min, and rejects a new max selection. Thus a WiFi/BLE/primary-ESP-NOW Full -Companion uses min. Device power saving can still be turned on or off without -changing the selected WiFi modem policy.

+

WiFi-only Companions can use all three modes. A Full Companion that runs WiFi +and BLE simultaneously requires at least minimum modem sleep. It reports min +when an old or target-default none value is found and rejects a new none +selection. When ESP-NOW is also the primary mesh radio, max is unavailable: +the access point does not buffer ESP-NOW broadcasts for a sleeping station, so +maximum modem sleep can lose them. Firmware caps a previously saved max value +to and reports it as min, and rejects a new max selection.

+

The SenseCAP Indicator Full targets select BLE or infrastructure WiFi instead +of running both. On a WiFi-selected boot, the LoRa layout accepts +none|min|max, while the ESP-NOW layout accepts none|min and still rejects +max. On a BLE-selected boot infrastructure WiFi is off; the LoRa layout +accepts min|max for the saved WiFi setting, while ESP-NOW + BLE requires +min. Device power saving remains independent of this modem policy.

WiFi companions do not have the repeater/room-server admin CLI password model, so their LAN WebConfig page is intentionally unauthenticated. Use them only on a trusted LAN.

@@ -2099,13 +2117,14 @@ reliability on busy nodes. A saved operator setting takes precedence on an upgrade. ESP32 WiFi Companions expose the same values in their WebConfig WiFi card and USB text terminal. Full Companion also accepts the text commands from TCP port 5002. The normal binary Companion protocol can read or write the -setting over USB, BLE, or TCP port 5000 without entering terminal mode. Full -Companion rejects none because its simultaneous BLE transport requires WiFi -modem sleep. An ESP32 Full Companion whose primary mesh radio is ESP-NOW also -rejects max; maximum +setting over USB, BLE, or TCP port 5000 without entering terminal mode. A Full +Companion that runs BLE and infrastructure WiFi simultaneously rejects none +because coexistence requires WiFi modem sleep. An ESP32 Full Companion whose +primary mesh radio is ESP-NOW also rejects max; maximum modem sleep can cause the station to miss ESP-NOW broadcasts because the access point does not buffer them. A previously saved max value is capped to and -reported as min. Such a primary-ESP-NOW Full Companion therefore uses min. +reported as min. The SenseCAP Indicator exception uses the active-mode rules +above rather than assuming BLE and infrastructure WiFi are active together. ESP-NOW and infrastructure WiFi still must use the same fixed channel.

MQTT observer targets normally limit ESP32 WiFi transmit power to 11 dBm unless diff --git a/cli_command_availability/index.html b/cli_command_availability/index.html index b04bdd935..9ff020d9d 100644 --- a/cli_command_availability/index.html +++ b/cli_command_availability/index.html @@ -1725,6 +1725,10 @@ over the normal binary USB, BLE, or TCP connection:

Every Companion text terminal and command 0x42 +version +Every Companion text terminal and protocol-v14 command 0x42; returns the untruncated build identity + + memory ESP32 Full Companion text terminal and command 0x42 diff --git a/cli_commands/index.html b/cli_commands/index.html index cc1b595d0..ffe76c50a 100644 --- a/cli_commands/index.html +++ b/cli_commands/index.html @@ -5287,10 +5287,19 @@ proof. This avoids any dependency on repeater/Pi clock agreement. Every host.reply USB command must carry the matching request ID and nonce; it is not accepted from LoRa or the Ethernet CLI.

The included Raspberry Pi endpoint supports exact commands for help, -cpu-temp, hostname, uptime, load, memory, and disk-free. It also -provides reboot as an opt-in action example and run <alias> [arguments] for -locally allowlisted executables with typed arguments. Reboot is disabled by -default, arbitrary executables are never accepted, and no action uses a shell. +cpu-temp, hostname, uptime, load, memory, disk-free, and +clock status. It also provides strictly validated clock sync and +clock set <unix_epoch> recovery actions, opt-in network restart and +reboot actions, action status <operation_id>, and +run <alias> [arguments] for locally allowlisted executables with typed +arguments. Clock changes and host recovery actions are disabled by default, +arbitrary executables are never accepted, and no action uses a shell. Clock set +accepts only canonical unsigned decimal epochs from 2020 through 2099; a root-owned +Unix-socket service revalidates the request and authenticates the local service +account with SO_PEERCRED before changing system time. Network restart and +reboot use a separate root-owned Unix-socket broker with fixed systemd units; +installing clock control does not grant those actions. The endpoint never uses +sudo for privileged host actions. See LoRa CLI host service for the complete meshcoretomqtt setup and security model.


@@ -5407,17 +5416,21 @@ new address; USB password input is masked. Binary Companion clients can use USB, BLE, or TCP port 5000 without the terminal-start token: send command 0x42 (CMD_RUN_CLI_COMMAND) followed by the same CLI text, such as get wifi.powersave or set wifi.powersave min. WiFi-only Companions accept -all three modes. Full Companion rejects -none because its simultaneous BLE transport requires modem sleep. Companion -device powersaving and LoRa radio.rxps remain independent. On an ESP32 Full -Companion whose primary mesh radio is ESP-NOW, max is also unavailable: a -station using maximum modem sleep can miss ESP-NOW broadcasts, which the access -point does not buffer for it. A previously saved max value is capped to and -reported as min, and a new max selection is rejected. These -WiFi/BLE/primary-ESP-NOW builds therefore report min. The primary mesh radio -also holds the ESP-IDF WiFi wake reference continuously so unsolicited ESP-NOW -frames remain receivable; selecting min does not put that primary receiver to -sleep.

+all three modes. A Full Companion that runs BLE and infrastructure WiFi +simultaneously rejects none because coexistence requires modem sleep. +Companion device powersaving and LoRa radio.rxps remain independent. On an +ESP32 Full Companion whose primary mesh radio is ESP-NOW, max is also +unavailable: a station using maximum modem sleep can miss ESP-NOW broadcasts, +which the access point does not buffer for it. A previously saved conflicting +value is capped to and reported as min, and a new conflicting selection is +rejected. The primary mesh radio also holds the ESP-IDF WiFi wake reference +continuously so unsolicited ESP-NOW frames remain receivable; selecting min +does not put that primary receiver to sleep.

+

SenseCAP Indicator Full is the exclusive-secondary exception. On a +WiFi-selected boot, LoRa accepts none|min|max and ESP-NOW accepts none|min. +On a BLE-selected boot infrastructure WiFi is not started; LoRa accepts +min|max for the saved WiFi setting, while ESP-NOW + BLE requires min. USB +and the primary LoRa or ESP-NOW radio remain available in every mode.

View or change the primary ESP-NOW/WiFi channel

Usage: