Commit Graph
912 Commits
Author SHA1 Message Date
mikecarper 023daebc5b Add standalone raw TCP CLI fallback for OTA scripts 2026-09-08 10:03:43 -07:00
mikecarper 35e9184c8a Add opt-in NimBLE Full Companion trials for V4 and XIAO S3 2026-09-08 09:30:31 -07:00
mikecarper db143c5ed4 Point Wireless Paper release catalogs to the 350-contact update 2026-09-08 08:17:28 -07:00
mikecarper 00015b8333 Restore Wireless Paper Full capacity with shared mOTA queue storage 2026-09-08 08:09:42 -07:00
mikecarper 9841e8440f Publish memory-corrected 1.17.1.5 catalogs and picker directions 2026-09-08 02:53:48 -07:00
mikecarper 0d7ca2d343 Gate every firmware build on runtime RAM and share nRF52 mOTA storage 2026-09-08 02:09:26 -07:00
mikecarper 2ea493994e Share T096 Full mOTA memory with the offline queue 2026-09-08 01:15:19 -07:00
mikecarper d28535f503 Add independent Companion Bluetooth stealth flag
Keep stealth separate from custom, saved-random and rotating MAC policies without migrating the development MAC mode. Persist authenticated peer state, guard advertising transitions and recovery, and expose the setting through the CLI and WebConfig.

Add regression and CI checks and record exact XIAO BLE pairing, reconnect, reboot and address-rotation hardware results.
2026-09-07 23:46:55 -07:00
mikecarper 8d72c3e3da Add configurable Companion Bluetooth addresses 2026-09-07 18:29:00 -07:00
mikecarper c7a249376e Document and test 1.17.1.5 USB logging sleep workaround 2026-09-07 16:55:28 -07:00
mikecarper 09639d7e02 Fix G3 USB sleep and two-minute button wake 2026-09-07 16:28:02 -07:00
mikecarper de97b7a413 Report nRF52 LoRa mOTA capabilities and storage requirements 2026-09-06 23:50:24 -07:00
mikecarper 8afa4fb8af Restore and share firmware picker selections through URLs 2026-09-06 21:43:13 -07:00
mikecarper 2398004e67 Clarify RAK firmware picker storage choices 2026-09-06 21:31:44 -07:00
mikecarper d17241ec66 Add common search terms to command and feature documentation 2026-09-06 21:25:17 -07:00
mikecarper a41a3ee1e3 Clarify direct retry count and text-message exception 2026-09-06 20:56:57 -07:00
mikecarper 3d40a59fba Add optional chip-family filter to firmware picker 2026-09-06 11:38:13 -07:00
mikecarper b301d751fd Show role-specific feature commands in firmware picker 2026-09-06 04:52:02 -07:00
mikecarper e4b4eed066 docs: document role feature switches and audit 1.17.1.5 guidance 2026-09-05 23:01:58 -07:00
mikecarper d6e61e0f33 Stage 1.17.1.5 local release assets and document OTAFIX 2.4.6 2026-09-05 14:04:39 -07:00
mikecarper 2d50bad70a Add retained-RAM staging for nRF52 mOTA 2026-09-05 12:08:21 -07:00
mikecarper 9155ea58c9 Keep classic ESP32 release profiles within their measured RAM budgets 2026-09-05 10:27:07 -07:00
mikecarper 55f59e13c0 Match Halo Keymind Cascade dev release naming and include WM1110 DFU packages 2026-09-05 09:08:42 -07:00
mikecarper a2c3761700 Prepare 1.17.1.5 USA Cascade release and verify update capabilities 2026-09-05 08:59:50 -07:00
mikecarper 8995675e1c Enforce classic ESP32 memory budgets and safe image merging 2026-09-05 08:22:56 -07:00
Jarosław Domański 6bbd34a296 RXPS: use measured preamble-symbol capture model 2026-09-05 00:02:13 +02:00
agessaman a0188bd174 fix(network): harden Ethernet-preferred lifecycle 2026-09-04 08:42:46 -07:00
mikecarper 65a53285d9 Make uf2reset available across nRF52 CLI roles 2026-09-04 02:01:40 -07:00
mikecarper e36b092aa3 Fix USB radio stalls and add durable replay timestamp recovery 2026-09-03 23:58:32 -07:00
mikecarper b199ba27bf Qualify GAT562 bootloader updates 2026-09-03 15:48:35 -07:00
mikecarper 73f10f3fc3 Automatically recover internal Companion ExtraFS on boot 2026-09-03 15:15:23 -07:00
mikecarper 9d920c4061 Give Full builds exclusive USB mOTA ownership 2026-09-03 02:33:23 -07:00
mikecarper 8f8e8b411f Support 2 KiB DEFLATE OTA transport 2026-09-03 01:07:06 -07:00
mikecarper a9fae59840 Add compressed 171-byte OTA transport 2026-09-02 19:24:01 -07:00
mikecarper da774e9e75 Add observed login path commands 2026-09-02 19:23:56 -07:00
mikecarper 249c3680b3 Fix auto nRF52 Companion OTA builds 2026-09-02 12:02:41 -07:00
Robert Ekl 90a4f51f91 docs: update stale repo URLs and build recipe
The project moved to meshcore-dev/meshcore, but two links still pointed at
ripplebiz/MeshCore: the GitHub Issues link in README and the git clone in the
FAQ build instructions.

Also fixes the FAQ build recipe:
- `pio run -e RAK_4631_Repeater` does not exist; the env is spelled
  RAK_4631_repeater (variants/rak4631/platformio.ini:40).
- LORA_FREQ was given as 867.5; the default in [arduino_base] is 869.618
  (platformio.ini:29). Reworded to point at the flag rather than a value that
  drifts with the default preset.
- Renamed the venv so it no longer collides with the cloned directory name.

And one more env-name casing slip in the Raspberry Pi flashing instructions:
`Heltec_V3_companion_radio_ble` should be `Heltec_v3_...`. Release artifacts are
named directly from the env name (build.sh:147), and the two neighbouring
examples in the same block already use the lowercase spelling.
2026-09-02 11:38:06 -05:00
Robert Ekl fe5d4cc50d docs: remove non-existent set dutycycle from Terminal Chat CLI
f6338430 added get/set dutycycle to CommonCLI and updated both CLI docs, but
Terminal Chat does not use CommonCLI -- simple_secure_chat/main.cpp:479-507 has
its own `set` handler supporting only af, name, lat, lon, tx and freq. Typing
`set dutycycle` there returns "ERROR: unknown config".

Restores `set af` as the documented command, points readers at cli_commands.md
for the roles that do have dutycycle, and documents `help`
(simple_secure_chat/main.cpp:510), which the client implements but the doc
never listed.
2026-09-02 11:38:06 -05:00
Robert Ekl 208333d511 docs: correct pwrmgt CLI behaviour on unsupported boards
The doc claimed every pwrmgt command except `get pwrmgt.support` returns
"ERROR: Power management not supported" when NRF52_POWER_MANAGEMENT is not
defined. `get pwrmgt.bootreason` is not inside the #ifdef (CommonCLI.cpp:787)
and answers on all boards; only pwrmgt.source and pwrmgt.bootmv are gated.
2026-09-02 11:38:06 -05:00
Robert Ekl f5b6ff4c14 docs: fix channel index range, secret semantics and payload limit
Three factual errors in companion_protocol.md:

- The channel-datagram payload cap was given as 163 (MAX_FRAME_SIZE - 9 when
  MAX_FRAME_SIZE was still 172). It went 172 -> 176 in 62f1b11d, but simply
  updating the arithmetic to 167 would be worse than the stale value: 167 is
  only the host-frame bound (MyMesh.cpp:1265). The radio-side bound is
  MAX_GROUP_DATA_LENGTH = 184 - 16 - 3 = 165 (MeshCore.h:21, enforced at
  BaseChatMesh.cpp:544). A 166- or 167-byte payload passes the frame check,
  fails the radio check, and comes back as ERR_CODE_TABLE_FULL -- which this
  same doc describes as "retry later", so a conforming client would retry a
  permanently failing send forever. Documents 165 as the limit to enforce and
  calls out the 166-167 band explicitly.

- Channel index was documented as 0-7 throughout. The bound is
  MAX_GROUP_CHANNELS (BaseChatMesh.cpp:927,936), which is 40 on most current
  variants, 8 on some and 1 on others. Clients should read max_channels from
  byte 3 of PACKET_DEVICE_INFO instead. Index 0 is pre-populated with the
  built-in Public channel but is not reserved.

- The secret field was documented as "all zeros" for public channels. The
  firmware always hashes a real 16-byte key; the public channel ships with
  izOH6cXN6mrJ5e26oRXNcg== (companion_radio/MyMesh.cpp:111,1040). An all-zero
  secret is not a private channel and not an inert one: SHA256 over 16 zero
  bytes is a fixed global constant, giving a well-known channel with an
  all-zero AES key. searchChannelsByHash skips unnamed slots for exactly this
  reason (BaseChatMesh.cpp:392-401), but a named slot with a zero secret is
  not skipped and will absorb null-key group traffic from any node. Now
  documented as something not to do.
2026-09-02 11:38:06 -05:00
Robert Ekl f66ff1d13f docs: correct stale CLI default values
Five "Default:" values in cli_commands.md no longer matched the firmware:

- radio / freq: the default preset moved to EU/UK (Narrow) in b777a7c6,
  changing LORA_FREQ/BW/SF from 869.525/250/11 to 869.618/62.5/8
  (platformio.ini:29-31). No variant overrides these, and LORA_CR is 5
  on every path, so the full preset is 869.618,62.5,8,5.
- flood.advert.interval: raised to 47 hours in 40180b8f for both repeater
  and room server; sensor leaves it disabled.
- advert.interval: prefs store minutes/2 and the getter doubles on read, so a
  factory-fresh node reports 2, not 0. But savePrefs() zeroes any interval
  below the 60 minute minimum (CommonCLI.cpp:162-165), and it is called from
  every `set` handler -- so the value becomes 0 as soon as the node is
  configured. Documented both states, since neither alone is the whole story.
- direct.txdelay: repeater defaults to 0.3, room server and sensor to 0.2.

Sources: platformio.ini:29-31, simple_repeater/MyMesh.cpp:893,903-904,
simple_room_server/MyMesh.cpp:650,661-662, simple_sensor/SensorMesh.cpp:716,
726-727, CommonCLI.cpp:162-165,680-681.
2026-09-02 11:31:24 -05:00
mikecarper 4d89de8544 Improve companion setup and USB session recovery 2026-09-02 03:44:28 -07:00
mikecarper 9816e21834 Harden nRF52 OTA, USB sessions, and T096 controls
Bind Companion replies to request transports, make dual-CDC USB sessions nonblocking and reconnect-safe, and harden nRF52 watchdog/OTA storage paths. Fix T096 button debounce, display wake, sleep races, and the compact message layout; add exact WisBlock OTA profiles plus expanded native/static/HIL documentation.
2026-09-01 20:51:43 -07:00
mikecarper 5af7b73ff9 Add safe ESP32 transports and Indicator UI
Reserve board-specific GPIOs, make ESP-NOW channel/format handling configurable, and coordinate WiFi, BLE, NTP, MQTT, and host actions safely.

Add the Indicator message page, exclusive transport selector, dynamic 480/320 rendering, larger transport typography, pairing cleanup, and corresponding tests and documentation.
2026-08-31 14:29:42 -07:00
mikecarper 2a82472853 Remove redundant MQTT picker mode 2026-08-31 13:24:52 -07:00
mikecarper a61ef06d3e Show narrowed firmware picker candidates 2026-08-31 13:11:03 -07:00
mikecarper 8920c35da5 Harden marathon-tested OTA and hardware paths
Add durable TempRadio, ACL, clock, bridge, GPS/I2C, USB logging, and Indicator recovery safeguards together with expanded automation, build/profile contracts, release metadata, and the hardware validation ledger.
2026-08-30 19:26:15 -07:00
mikecarper fdf528bb27 Fix Full Companion terminal diagnostics 2026-08-29 16:57:44 -07:00
mikecarper 19c9faab9c Clarify Companion WiFi CLI availability 2026-08-29 16:21:49 -07:00
mikecarper e7962f9598 Fix release matrix gaps and add background builds 2026-08-29 14:55:07 -07:00