Commit Graph
3914 Commits
Author SHA1 Message Date
mikecarper ae2af7ef4d Harden observer preferences and portable controls 2026-07-25 07:59:44 -07:00
mikecarper c1caa5ad81 Merge observer firmware and webconfig updates
# Conflicts:
#	MQTT_INTERNALS.md
#	build.sh
#	docs/cli_commands.md
#	examples/simple_repeater/MyMesh.cpp
#	examples/simple_repeater/MyMesh.h
#	examples/simple_repeater/UITask.cpp
#	examples/simple_room_server/MyMesh.cpp
#	examples/simple_room_server/MyMesh.h
#	examples/simple_room_server/UITask.cpp
#	examples/simple_sensor/SensorMesh.cpp
#	platformio.ini
#	scripts/generate_webconfig_html.py
#	src/MeshCore.h
#	src/helpers/CommonCLI.cpp
#	src/helpers/CommonCLI.h
#	src/helpers/CommonCLI_Observer.cpp
#	src/helpers/ESP32Board.h
#	src/helpers/MQTTMessageBuilder.cpp
#	src/helpers/MQTTPresets.h
#	src/helpers/NRF52Board.cpp
#	src/helpers/NRF52Board.h
#	src/helpers/bridges/MQTTBridge.cpp
#	src/helpers/bridges/MQTTBridge.h
#	src/helpers/esp32/WebConfigServer.cpp
#	src/helpers/esp32/WebConfigServer.h
#	src/helpers/radiolib/RadioLibWrappers.cpp
#	src/helpers/radiolib/RadioLibWrappers.h
#	variants/lilygo_tbeam_SX1262/platformio.ini
#	variants/lilygo_tbeam_SX1276/platformio.ini
#	variants/lilygo_tlora_v2_1/platformio.ini
#	webui/index.html
2026-07-24 02:16:47 -07:00
mikecarper 9a4834b192 Merge PowerSaving v16 updates 2026-07-24 01:34:35 -07:00
mikecarper 566ef08f25 Merge upstream dev into keymindCascade 2026-07-24 01:23:20 -07:00
mikecarper f1caf74d33 Keep certificate bundle in full ESP32 builds 2026-07-24 01:13:57 -07:00
mikecarper 455b3f97e0 Scale CAD scan timeouts to radio settings 2026-07-24 01:13:14 -07:00
mikecarper c1752f2db1 Defer remote commands outside receive stack 2026-07-24 00:18:35 -07:00
mikecarper 6cf0954463 Defer repeater adverts outside remote command stack 2026-07-23 23:50:22 -07:00
mikecarper e6c878a011 Recover SX1262 from stuck transmit busy 2026-07-23 23:01:17 -07:00
mikecarper 9051955c6c Service watchdog during bounded CAD 2026-07-23 22:42:50 -07:00
Liam Cottle e780cca237 Merge pull request #3033 from liamcottle/board/lilygo-tbeam-sx1276
Increase LilyGo T-Beam SX1276 channels from 8 to 40
2026-07-24 15:34:19 +12:00
liamcottle 520fa77f4f increase tbeam sx1276 max group channels from 8 to 40 2026-07-24 15:31:01 +12:00
mikecarper fc1cfe6952 Bound hardware CAD scans 2026-07-23 17:33:00 -07:00
Liam Cottle d531a98da1 Merge pull request #2819 from ViezeVingertjes/fix/kiss-modem-usb-backpressure
fix: prevent ESP32 KISS modem stalls under USB backpressure
2026-07-24 11:51:34 +12:00
mikecarper abd2d3b7a8 Evaluate mesh clock when quorum arrives 2026-07-23 11:20:07 -07:00
mikecarper 468e7846bd Collect edge clock samples with repeat off 2026-07-23 11:00:21 -07:00
mikecarper b56b350a5d Enable CAD in Cascade profile 2026-07-23 10:43:03 -07:00
mikecarper 6c99ae39a9 Add edge clock sync diagnostics 2026-07-23 10:40:45 -07:00
mikecarper 836af4b623 Fix onboard GPS in LoRa OTA builds 2026-07-23 09:57:01 -07:00
mikecarper 4d9bb06640 Fix SenseCAP Solar repeater GPS build 2026-07-23 09:26:58 -07:00
Kevin Le 0cc580afec GPS PowerSaving 1.4: Added GPS PowerSaving for Seeed T1000e, Heltec Mesh Solar and Heltec Tracker.
Not supported: Mesh Adventurer (unable to off GPS power) and ThinkNode M1 (manual GPS switch).
2026-07-23 23:21:41 +07:00
Kevin Le a2fe2ea642 Added T_Beam_S3_Supreme_SX1262_companion_radio_ble_ps 2026-07-23 12:35:43 +07:00
Kevin Le 0843c7c5ae Fix blank OLED on T-Beam Supreme V3 (I2C bus init + 0x3D address)
https://github.com/meshcore-dev/MeshCore/pull/2815
2026-07-23 12:26:31 +07:00
mikecarper 886a1a9c6f Add constrained companion OTA fallbacks 2026-07-22 18:09:05 -07:00
mikecarper 3a7101556f Enable LoRa OTA for full and companion builds 2026-07-22 16:41:50 -07:00
mikecarper c8052e90c2 Enable onboard GPS in LoRa OTA builds 2026-07-22 16:00:59 -07:00
mikecarper b98a7a7b54 Keep ESP32 OTA images within legacy slot 2026-07-22 15:04:40 -07:00
agessamanandClaude Opus 4.8 41cc36b773 build.sh: put the published build number in observer asset filenames
Stamp FIRMWARE_BUILD_NUMBER into FIRMWARE_VERSION_STRING (the output
filename), so dev assets become <env>-v1.16.0.N-dev-<hash>.bin and the web
flasher's Version dropdown (parsed from the asset name by the /releases
Worker) shows the true published build instead of the bare base version.

The build-number suffix is computed once, up front, and now feeds BOTH the
filename and the embedded -DFIRMWARE_VERSION (byte-for-byte unchanged, it
already carried .N). Local builds without the counter still produce
3-segment names, so OTA and every filename parser stay backward-compatible.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 11:26:35 -07:00
mikecarper d26a45f15a Build all generated LoRa OTA targets 2026-07-22 10:11:45 -07:00
mikecarper 7abb5fb95b Add portable LoRa OTA repeater builds 2026-07-22 10:05:52 -07:00
Liam Cottle 8a69f34101 Merge pull request #3023 from agessaman/fix/rx-boosted-gain
fix(room_server): support RX boosted gain
2026-07-23 03:22:41 +12:00
Kevin Le d6c61af7c7 Added POWERSAVING_DEBUG=1 2026-07-22 16:19:54 +07:00
mikecarper 371d86c4b1 Normalize tracked text to ASCII 2026-07-22 00:43:38 -07:00
Kevin Le d16843d5ea GPS PowerSaving v1.3: Supported dynamic GPS_EN for RAK boards 2026-07-22 12:07:27 +07:00
agessaman 675bc6b55b feat(webconfig): manage the admin password from the portal
Adds an admin-password field to the setup wizard and the LAN editor, so a
node's password can be set during onboarding and rotated later without a
serial console.

The key maps to the top-level `password` CLI command rather than a `set`
handler, so it is classified separately from WC_ALLOWED_SET_KEYS. It is the
only key granted that treatment, which keeps the allowlist the sole route to
`set` and leaves no general path from a batch to arbitrary CLI commands.

Accepted in both modes: MODE_OFF is refused earlier in handleConfigPost, LAN
required a login to get that far, and the setup AP implies physical proximity.
Restricting rotation to the AP would have forced a bridge outage (`set bridge
off` + `start webconfig ap`) just to change a password.

First onboarding is gated server-side: while the setup AP is up and no WiFi is
configured, a batch that reboots or sets wifi.ssid must also carry a password,
so neither the Advanced editor nor a crafted request can save WiFi and strand
the node on the factory password. The flag is latched at AP start, so a save
that fails partway cannot drop the requirement on retry.

The CLI's `password` command echoes the new secret back in its reply, and
replies are served to the client over the open setup AP, so the reply is
overwritten with "OK" before it can be serialized.

UI: the field lives with the other NodePrefs settings (wizard step 2, and the
Node card on the Radio tab) rather than beside the WiFi password, which is a
different credential. Confirm fields mirror their password twin and are cleared
whenever it is, so a stale confirm value cannot fail a later save as a spurious
mismatch. Validation runs ahead of the WiFi-changed split so a password-only
save is still checked, and reveals the Radio tab before reporting, since the
save bar spans every tab.
2026-07-21 19:00:18 -07:00
mikecarper 3a6af3bf20 Clarify OTA companion source setup logging-v1.16.07-halo-keymind-cascade-dev-3a6af3bf v1.16.07-halo-keymind-cascade-dev-3a6af3bf lora-ota-v1.16.07-halo-keymind-cascade-dev-3a6af3bf 2026-07-21 18:27:19 -07:00
agessaman 36272384f3 fix(ota): require clean MQTT stop before flashing 2026-07-21 16:46:02 -07:00
agessaman 5bf6d3a0e3 fix(mqtt): make preference saves power-loss recoverable 2026-07-21 16:45:39 -07:00
mikecarper 3bb55562b2 Document high-traffic flood filters 2026-07-21 16:32:08 -07:00
mikecarper 9ed0c54820 Gate and label LoRa OTA builds 2026-07-21 13:51:48 -07:00
agessaman a71cc23854 fix(room_server): support RX boosted gain
The room server never supported RX boosted gain, while the repeater
does. Three consequences on SX1262/SX1268 boards:

- boosted gain was never applied to the radio at boot, so a room server
  ran in power-saving RX mode while an identical repeater ran boosted -
  a real receive-sensitivity difference with nothing pointing at it
- _prefs.rx_boosted_gain was never initialised (the prefs are memset to
  0 before defaults are set), so it defaulted to off
- 'set radio.rxgain on' replied "Error: unsupported" but CommonCLI had
  already written the value to prefs and saved them, so a stale setting
  survived reboot and was never applied

Mirror the repeater's implementation: initialise the pref default under
the same USE_SX1262/USE_SX1268 and SX126X_RX_BOOSTED_GAIN guards, apply
it during radio init, and override setRxBoostedGain() so the CLI reports
success and takes effect.

Built Heltec_v3_room_server (SX1262) and LilyGo_T3S3_sx1276_room_server
(guards compile out cleanly).
2026-07-21 12:23:20 -07:00
mikecarper d1242a65de Constrain G2 builds and LoRa OTA roles 2026-07-21 12:21:43 -07:00
agessaman 2a77bec570 chore(platformio): exclude MQTT-specific helper files from build 2026-07-21 12:21:15 -07:00
mikecarper 3897794416 Improve repeater LoRa clock synchronization 2026-07-21 11:41:45 -07:00
agessaman fbe608d6c0 feat(mqtt): add SNMP support for radio diagnostics and stats
Implement SNMP functionality in MyMesh to provide radio diagnostics
and statistics updates. This includes a new method for formatting
radio diagnostic replies and periodic updates to the SNMP agent
with radio stats, enhancing monitoring capabilities for users
with SNMP enabled.
2026-07-21 11:03:04 -07:00
agessaman bd58d8af5b feat(mqtt): implement deferred OTA update scheduling in MyMesh
Add functionality to schedule deferred OTA updates in the MyMesh class.
This includes a new member variable to track the update time and a method
to initiate the update process, allowing for a smoother OTA experience
by managing timing and state transitions effectively.

Cherry-picked from observer-firmware (76f44d7d). Resolved a conflict in
loop() where the WITH_WEBCONFIG block occupies the same anchor and shares
an identical closing tail; both blocks retained.
2026-07-21 10:32:56 -07:00
mikecarper 6562d15a90 Fix constrained release target builds 2026-07-21 08:58:32 -07:00
agessaman 8cec341d78 ci(mqtt): add preset name-parity check across channels
Keep observer-firmware and observer-firmware-dev from drifting on
built-in MQTT preset names while allowing config details to differ.
2026-07-21 08:54:02 -07:00
agessaman 0c43fd5895 feat(mqtt): add new MQTT preset for meshtexas connection
Introduce a new built-in MQTT preset for the meshtexas.org service,
increasing the total number of presets to 29. This addition enhances
connectivity options for users and supports broader integration
within the MQTT ecosystem.
2026-07-21 08:51:49 -07:00
agessaman 7daccd9efd feat(mqtt): include outbox drop statistics in MQTT stats reply
Enhance the MQTT stats reply to include outbox drop statistics,
providing users with better insight into message handling and
memory pressure. This change improves the clarity of the status
message and aids in diagnosing potential issues with message
delivery.
2026-07-21 08:42:25 -07:00