Commit Graph
887 Commits
Author SHA1 Message Date
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
mikecarper a86028ebc7 Separate picker hardware from firmware profiles 2026-08-23 08:51:49 -07:00
mikecarper b302dbf7fc Merge Heltec V4 firmware picker aliases 2026-08-23 08:33:16 -07:00
mikecarper b75441c819 Group firmware picker hardware variants 2026-08-23 02:03:01 -07:00
mikecarper 63ab4a1690 Make firmware picker order independent 2026-08-23 01:45:55 -07:00
mikecarper c22da32964 Generalize firmware picker across hardware roles 2026-08-23 01:21:00 -07:00
mikecarper ae1b928e81 Add GitHub Pages firmware picker 2026-08-23 00:29:00 -07:00
mikecarper 7d2f69e34f Retain GPS in RAK nRF52 OTA repeaters 2026-08-22 13:27:01 -07:00
mikecarper f11e160b73 Harden signed SD and bootloader OTA 2026-08-21 12:15:54 -07:00
mikecarper 30989a0133 Add MeshTower SD bootloader updates over LoRa 2026-08-21 09:55:15 -07:00
mikecarper 3de5fddf47 Add shared-slot nRF52 bootloader updates 2026-08-21 00:55:01 -07:00
mikecarper b7c9e37d09 Add signed XIAO bootloader updates over LoRa 2026-08-20 22:05:11 -07:00
mikecarper fb78e0f55a Wake QSPI flash before controller activation 2026-08-20 19:17:10 -07:00
mikecarper 32a83464b3 Correct QSPI CLI availability matrix 2026-08-20 18:49:45 -07:00
mikecarper 8eef42c937 Wait for QSPI flash operations to complete 2026-08-20 18:48:03 -07:00
mikecarper e287a1ffa2 Add external QSPI staging for nRF52 OTA 2026-08-20 17:51:52 -07:00
mikecarper 671dd30769 Expand companion offline queues 2026-08-19 17:32:05 -07:00
mikecarper 3c6fee3277 Ensure full repeater packet logging 2026-08-19 16:20:24 -07:00
mikecarper 4ebbdc3d9b Merge remote-tracking branch 'review/observer-firmware' into keymindCascade
# Conflicts:
#	MQTT_IMPLEMENTATION.md
#	examples/simple_repeater/MyMesh.cpp
#	examples/simple_room_server/MyMesh.cpp
#	examples/simple_sensor/SensorMesh.cpp
#	src/helpers/CommonCLI.h
#	src/helpers/MQTTPresets.h
#	src/helpers/bridges/MQTTBridge.cpp
#	src/helpers/bridges/MQTTBridge.h
#	src/helpers/radiolib/CustomLLCC68Wrapper.h
#	src/helpers/ui/SH1106Display.cpp
2026-08-19 13:45:47 -07:00
mikecarper a39bbbd467 Add normalradio to common CLI 2026-08-19 12:44:49 -07:00
mikecarper 5ba511cfb7 Restore OTA deployment tuning 2026-08-19 12:37:23 -07:00
mikecarper e797c8aa46 Document legacy OTA airtime tuning 2026-08-19 11:54:19 -07:00
mikecarper 610eef7529 Avoid legacy OTA proof collisions 2026-08-19 11:43:25 -07:00
mikecarper dc4a8808c0 Harden and qualify compact RAK3401 OTA updates 2026-08-19 11:17:22 -07:00
mikecarper 47993d178e Update MeshCore features and OTA layout handling 2026-08-18 23:17:42 -07:00
mikecarper 0c4619bcc3 Expose Companion WiFi and radio power controls 2026-08-18 16:51:59 -07:00
mikecarper 818f610ba3 Fix Cascade power saving, USB Companion, and mOTA flows 2026-08-18 14:02:10 -07:00
mikecarper 32a681a59b Merge IoTThinks PowerSaving-v17
Port current-compatible power-saving updates while retaining newer local implementations.
2026-08-17 23:45:06 -07:00
mikecarper ba14fa1c32 Enable Companion power saving by default 2026-08-16 21:06:23 -07:00
mikecarper e2afc1bc5a Stabilize T-Beam full companion startup 2026-08-16 11:00:55 -07:00
mikecarper bd2e668961 Add T-Beam WiFi button toggle 2026-08-15 18:12:09 -07:00
mikecarper 843d309e2b Fix Companion device power saving 2026-08-15 17:58:37 -07:00
mikecarper b8d274c90e Expose RX power saving in WebConfig 2026-08-15 09:07:41 -07:00
IoTThinks ca85060c42 Merge pull request #13 from Dom4n/feature/rxps-v1.17.1-clean
RX power saving using rx duty cycle
2026-08-15 17:12:54 +07:00
agessaman b9a354b965 build(mqtt): make the reduced-TLS mbedTLS archives shippable, opt-in and verified
The reduced-TLS work was validated on hardware but only reachable through
PLATFORMIO_BUILD_FLAGS pointing at an absolute path in a developer's home
directory, so nothing outside that machine could reproduce it.

Distribute the archives as a release asset instead of committing them: ~6 MB
per architecture, and they must be rebuilt for every espressif32 bump, so
committing would grow history permanently and go stale without any signal.

  scripts/mbedtls_4k_manifest.txt  per-arch sha256 of each archive
  scripts/fetch_mbedtls_4k.sh      fetch into .mbedtls-4k/<arch>/, verify
  scripts/mbedtls_4k.py            pre-build wiring and post-link proof

Off by default. The script is attached to esp32_base but returns immediately
unless MESHCORE_REDUCED_TLS=1, so ordinary builds need no artifact and are
byte-for-byte unaffected — confirmed by building with it absent.

Both ways this can fail silently produce a firmware that looks fine and lacks
the change, so the opt-in path refuses to guess:

  - a -L at a missing or partial directory: the linker ignores an unusable
    search path and resolves mbedTLS from the framework. Now a hard error.
  - archives left over from an earlier platform version: now a sha256
    mismatch against the manifest, naming both hashes.
  - a -L that is present but outranked, leaving the flag inert: after the
    link, firmware.map must resolve every libmbed*.a into .mbedtls-4k/, or
    the build fails and prints the offending paths.

That last check earned its place immediately — it caught its own first
implementation comparing a relative map path against an absolute one, and an
earlier build flag in this investigation was accepted by the compiler while
no source read it. A flag reaching the compiler proves nothing about the link.

Verified all four paths on Heltec_v3_repeater_observer_mqtt: default build
unaffected; opted in with archives present links all four from .mbedtls-4k/
and says so; archives absent fails with a fetch hint; a single appended byte
fails on sha256.

Also removes platformio.local.ini.hold, which held the superseded approach of
pointing platform_packages at a whole custom framework. That installs over the
shared framework package and changes mbedTLS for every other ESP32 project on
the machine; the -L path keeps the change scoped to one env.

Note the inbound record buffer stays at 16 KiB, so this lowers per-connection
footprint by ~12 KiB but does not move the contiguous allocation a handshake
needs. It buys headroom, not a lower floor.

(cherry picked from commit a87faff6ff170c328fdd0550f4b4dd9089aa2ea0)
2026-08-14 09:47:40 -07:00
Kevin Le 0024226990 PS: rxps, reboot.interval, outpath 2026-08-14 23:36:52 +07:00
mikecarper a04a284a3f Merge remote-tracking branch 'review/observer-firmware' into keymindCascade
# Conflicts:
#	.github/workflows/build-observer-firmwares.yml
#	.gitignore
#	MQTT_IMPLEMENTATION.md
#	MQTT_INTERNALS.md
#	README.md
#	STABILITY_TESTABILITY_HANDOFF.md
#	docs/cli_commands.md
#	examples/companion_radio/MyMesh.cpp
#	examples/simple_repeater/MyMesh.cpp
#	examples/simple_repeater/UITask.cpp
#	examples/simple_room_server/MyMesh.cpp
#	examples/simple_room_server/UITask.cpp
#	examples/simple_sensor/SensorMesh.cpp
#	platformio.ini
#	scripts/generate_webconfig_html.py
#	scripts/webconfig_mock_server.py
#	src/helpers/CommonCLI.cpp
#	src/helpers/CommonCLI.h
#	src/helpers/JWTHelper.cpp
#	src/helpers/MQTTDefaults.h
#	src/helpers/MQTTMessageBuilder.cpp
#	src/helpers/MQTTPayloadBuilder.h
#	src/helpers/MQTTPresets.h
#	src/helpers/bridges/MQTTBridge.h
#	src/helpers/esp32/WebConfigServer.cpp
#	src/helpers/esp32/WebConfigServer.h
#	src/helpers/ui/SH1106Display.cpp
#	variants/lilygo_tbeam_SX1262/platformio.ini
#	variants/lilygo_tbeam_SX1276/platformio.ini
#	variants/lilygo_tlora_v2_1/platformio.ini
#	variants/thinknode_m7/platformio.ini
#	webui/index.html
2026-08-14 08:53:02 -07:00
mikecarper f0fe67df30 Merge remote-tracking branch 'review/PowerSaving-v16' into keymindCascade
# Conflicts:
#	build-iotthinks.sh
#	examples/simple_repeater/MyMesh.cpp
#	examples/simple_room_server/MyMesh.cpp
#	examples/simple_sensor/SensorMesh.cpp
#	src/helpers/CommonCLI.cpp
#	src/helpers/radiolib/CustomSX1262.h
#	src/helpers/sensors/EnvironmentSensorManager.cpp
#	variants/heltec_v4/platformio.ini
#	variants/heltec_v4_r8/HeltecV4R8Board.cpp
#	variants/heltec_v4_r8/HeltecV4R8Board.h
#	variants/heltec_v4_r8/platformio.ini
2026-08-14 08:22:26 -07:00
Jarosław Domański 285cf10a7a RX power saving using rx duty cycle 2026-08-14 16:11:21 +02:00
mikecarper a09127fefb Publish accelerated RAK3401 mOTA chain 2026-08-14 04:25:44 -07:00