Commit Graph
5219 Commits
Author SHA1 Message Date
Scott Powell 3a5a6b90ab * sensor: CLI "sub" and "unsub" commands 2026-09-04 22:02:49 +10: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
Scott Powell 9bc6060831 * new: REQ_TYPE_SUBSCRIBE and REQ_TYPE_UNSUBSCRIBE 2026-09-04 15:13:17 +10:00
agessaman d9db3e8e6a fix(network): harden automatic link transitions 2026-09-03 20:47:11 -07:00
agessaman fc528ae640 fix(network): set ethernet hostname before startup 2026-09-03 20:47:00 -07:00
agessaman 0c65fc79db feat(network): implement hostname configuration for automatic interfaces 2026-09-03 17:16:30 -07:00
mikecarper b199ba27bf Qualify GAT562 bootloader updates 2026-09-03 15:48:35 -07:00
agessaman 88b57db2c6 feat(mqtt): initialize shared network event runtime for Ethernet 2026-09-03 15:38:13 -07:00
mikecarper 73f10f3fc3 Automatically recover internal Companion ExtraFS on boot 2026-09-03 15:15:23 -07:00
mikecarper 1c91f82ec0 Embed fixed ESP32 firmware identity 2026-09-03 12:16:40 -07:00
mikecarper 3443fc88ef Hide message footer on compact displays 2026-09-03 09:12:06 -07:00
Kevin Le 1ce07cd80c Added sensor env 2026-09-03 22:54:35 +07:00
Kevin Le e125d375ff Added PowerSaving for sensor firmware 2026-09-03 22:54:02 +07:00
Quency-D 7d501681bc fix-heltec_v4r8-lna 2026-09-03 17:57:09 +08:00
mikecarper 9d920c4061 Give Full builds exclusive USB mOTA ownership 2026-09-03 02:33:23 -07:00
mikecarper 5a96dc613b Avoid overflow in OTA self block count 2026-09-03 01:08:28 -07:00
mikecarper 8f8e8b411f Support 2 KiB DEFLATE OTA transport 2026-09-03 01:07:06 -07:00
mikecarper e2cd54b484 Limit OTA transport sizing to shortest route DAG 2026-09-02 23:05:07 -07:00
mikecarper bdefcb9995 Add exact LoRa OTA route cost objective 2026-09-02 22:49:16 -07:00
mikecarper 8ddeba6861 Normalize inflater backport assets 2026-09-02 22:48:22 -07:00
mikecarper b948729dd4 Build inflater-capable RAK3401 bridge inventory 2026-09-02 22:48:22 -07:00
agessaman 3e3eec8d5d feat(mqtt): add link diagnostics and improve network logging 2026-09-02 21:37:30 -07:00
Scott Powell b4e37044ed * default and reply scopes now applied 2026-09-03 14:09:15 +10: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 2ce59b58ed Harden nRF52 contact and settings persistence 2026-09-02 17:32:43 -07:00
mikecarper 249c3680b3 Fix auto nRF52 Companion OTA builds 2026-09-02 12:02:41 -07:00
mikecarper cb27fa8539 Fix nRF52 contact persistence and ExtraFS recovery 2026-09-02 11:41:38 -07:00
mikecarper 66ad8c52df Fix Windows Full firmware builds 2026-09-02 11:41:24 -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
Kevin Le af15c37d8b Added Tracker v2 and T-Deck 2026-09-02 18:00:18 +07:00
Kevin Le da1cc88fa0 Added support of button press for ESP32 repeaters with powersaving on 2026-09-02 17:47:46 +07:00
Kevin Le 374aba4fce Disabled button press which prevents TLoRa repeater to boot 2026-09-02 17:45:12 +07:00
mikecarper 4d89de8544 Improve companion setup and USB session recovery 2026-09-02 03:44:28 -07:00
Kevin Le e3d7feb51c Fixed crash if doing "gps" on ESP32 repeaters without GPS module 2026-09-02 17:39:22 +07:00
agessaman 366b086713 feat: add automatic network failover 2026-09-01 21:18:22 -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
agessaman 03c0ad81fe feat: abstract MQTT network transport 2026-09-01 16:31:28 -07:00
Liam Cottle 65aa1138ae Merge pull request #3319 from oltaco/w12_txpower
Fix Meshnology W12 TX power
2026-09-01 23:06:58 +12:00
Liam Cottle c57172687f Merge pull request #3329 from reinforce/tz_offset
companion: get/set timezone offset for clock
2026-09-01 22:56:19 +12:00
mikecarper 5de1820765 Unify companion BLE and WiFi setup flows 2026-09-01 01:25:00 -07:00
mikecarper 185b035d1f Fit setup IP beside compact WiFi QR 2026-09-01 00:23:07 -07:00
mikecarper 1264f62e9d Add WiFi setup QR to ESP32 displays 2026-08-31 21:49:12 -07:00
mikecarper 8ef309a299 Add WiFi password visibility control 2026-08-31 21:20:21 -07:00
mikecarper a5f3a5c5da Make Indicator WiFi setup state actionable 2026-08-31 20:54:56 -07:00