Commit Graph
976 Commits
Author SHA1 Message Date
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
mikecarper 362e1005aa release: pin RAK3401 b40 mOTA chain 2026-08-29 09:10:24 -07:00
mikecarper 541980a82f fix: harden LoRa OTA chain and storage 2026-08-29 06:58:48 -07:00
mikecarper 11e70a5b32 fix: stabilize primary ESP-NOW WiFi coexistence 2026-08-28 21:01:17 -07:00
Adam Gessaman da6bab3e83 Merge upstream/dev into observer-firmware-dev 2026-08-28 19:45:59 -07:00
mikecarper da61c48e7b feat: integrate R8 observer and companion updates 2026-08-28 18:39:26 -07:00
mikecarper 89c12d416e refactor: use companion CLI for hardware settings 2026-08-28 17:37:39 -07:00
mikecarper c24bc82814 Merge upstream dev companion CLI updates 2026-08-28 17:31:28 -07:00
mikecarper 70a129a5bd fix: reserve controls and expose ESP-NOW channel 2026-08-28 16:55:40 -07:00
mikecarper 2b3b93ab2f fix: harden ESP-NOW and full companion networking
Add selectable shared ESP-NOW channels, raw/wrapped bridge compatibility, and bounded fragmentation for maximum-size packets.\n\nGive ESP32 Full profiles WiFi coexistence, stabilize WebConfig and USB terminal lifecycles, and keep disabled bridges stopped during observer updates.\n\nUpdate generated UI, firmware selection, documentation, and regression coverage.
2026-08-28 16:36:34 -07:00
agessaman 6b55ab0fde docs: document display.timeout and display.flip
Adds both settings to docs/cli_commands.md in the existing format, and records
the R8 dashboard, display controls and the two hardware fixes in the changelog.

The display.flip entry calls out that it is persisted config which survives a
firmware update, since a node still carrying flip=1 from testing looks exactly
like a firmware whose orientation was never fixed.
2026-08-28 16:06:16 -07:00
mikecarper c6476b8ba8 feat: consolidate full companion runtime profiles 2026-08-28 08:47:26 -07:00
Scott Powell 65650bb192 New TXT_TYPE_CLI_COMMAND (3) 2026-08-28 13:12:59 +10:00
mikecarper 7676e4b1c2 feat: unify companion builds and USB runtime modes 2026-08-27 15:06:26 -07:00
mikecarper e5fd77e53f feat: add Bluetooth-controlled LoRa OTA
Add the framed BLE mOTA transport and companion control path, complete the full-profile build and runtime fixes, and document and test the OTA workflow.
2026-08-27 01:22:18 -07:00
mikecarper 91870e4bb0 fix: harden firmware builds and runtime reliability 2026-08-26 15:42:12 -07:00
mikecarper 6510e00e39 Merge upstream main documentation through 0679dbef 2026-08-26 13:49:37 -07:00
mikecarper 83e402bd4d fix: preserve complete companion build profiles 2026-08-25 23:47:40 -07:00
mikecarper 9bc95a60fe fix: default advert location to stored preferences 2026-08-25 23:47:40 -07:00
mikecarper 131bbafc67 feat: retain multi-channel voltage telemetry 2026-08-25 22:51:22 -07:00
mikecarper ad1ff3f03e feat: order flood rules by channel specificity 2026-08-25 21:58:08 -07:00
mikecarper febbadbc32 docs: explain Public hash exemption ordering 2026-08-25 21:48:16 -07:00
mikecarper 605b245eb5 feat: add selective flood retry rules 2026-08-25 21:38:23 -07:00
mikecarper 65e40ff05f feat: add customizable companion Bluetooth names 2026-08-25 20:51:18 -07:00
mikecarper 42b6a0df60 feat: retain INA monitors in reduced RAK repeaters 2026-08-25 20:24:17 -07:00
mikecarper f01970058d feat: add capability-aware firmware build profiles 2026-08-25 20:07:09 -07:00
mikecarper 9d57a3a4f8 feat: complete Cascade Indicator companion support
Add native-resolution Indicator UI, touch navigation, SD-backed pixel and emoji fonts, LoRa radio support, dual-slot WiFi Companion provisioning, and mesh clock fallback. Harden radio recovery and build defaults, normalize ESP32 setup-AP protocols, and document/test the operator workflows.
2026-08-25 18:37:17 -07:00
mikecarper 1792acda6a Harden external radio recovery and power limits 2026-08-25 10:27:26 -07:00
mikecarper 7077283e95 Make RXPS preamble adaptive for fast radio settings 2026-08-24 20:42:54 -07:00
mikecarper 4a4a795f52 Harden recoverable external radio startup 2026-08-24 16:54:41 -07:00
mikecarper da74d7de22 Qualify optional 64-symbol fast preamble 2026-08-24 16:54:35 -07:00
mikecarper ba70c5b3c6 Harden fast RXPS timing and board behavior 2026-08-24 15:10:54 -07:00
mikecarper dc92ee61ef Expand and harden full companion profiles 2026-08-24 01:57:38 -07:00
mikecarper f2d4ffbb7e Unify full firmware profiles and add dual USB logging 2026-08-23 19:22:45 -07:00
mikecarper b699e552ec Add secure host CLI bridge and harden OTA workflows
Expose the Full Companion terminal over TCP and add an authenticated, replay-resistant host command service with documented CPU temperature, reboot, and allowlisted program examples.\n\nImprove LoRa OTA diagnostics and persistent CLI handling, reduce clock correction drift to ten minutes, and make mOTA stream flush behavior an explicit transport policy with regression coverage.
2026-08-23 15:29:30 -07:00
Rastislav Vysoky acac4af3ec FAQ: Fixed instructions on wiping and resetting nrf52 devices 2026-08-23 20:13:12 +02:00
mikecarper 83c1dd95fe Unify OTA picker capabilities 2026-08-23 09:00:37 -07:00