Commit Graph
166 Commits
Author SHA1 Message Date
mikecarper 85ff9e321e Reject unhonored ESP filesystem buffer sizes before I/O 2026-10-04 08:20:16 -07:00
mikecarper c1a80e95c7 Preserve ESP native USB bytes across short FIFO writes
Backport the pinned Arduino 2.0.17 HWCDC suffix and interrupt handling into a build-local source copy. Preserve unsent bytes, serialize ISR and producer rearm, and include FIFO, suffix and active writers in transport cleanup proofs without changing the loop stack allocation.

Validate zero and short writes, producer races, quarantine and stale cleanup with sanitizer-backed native tests and negative controls. Keep other frameworks and USB modes on their existing drivers; update the watchdog file mock for the existing buffer API.
2026-10-04 06:49:31 -07:00
mikecarper 8586ef5f51 Fix nRF52 loop stack allocation under LTO 2026-10-04 01:54:01 -07:00
mikecarper 63f4642252 Merge observer OTA channel switching into keymindCascade 2026-10-04 00:26:46 -07:00
mikecarper e368b52f7d Bind resumed firmware packages to their effective build recipe 2026-10-03 20:48:49 -07:00
mikecarper eab6676316 Use resolved PlatformIO directories for migration packaging 2026-10-03 20:35:27 -07:00
mikecarper f0828e025a Share lossless voice prefixes across companion announcements 2026-10-03 19:11:15 -07:00
mikecarper eeb25a8b5f Merge USB session safety and preserve GPS preference compatibility 2026-10-03 16:12:32 -07:00
agessaman baf01a5c16 Merge branch 'feat/ota-branch-switch' into merge/ota-branch-into-observer-firmware-dev
# Conflicts:
#	examples/simple_repeater/MyMesh.cpp
2026-10-03 15:47:01 -07:00
agessaman ed8af1b7ca fix(ota): refuse a channel switch to a build that cannot carry this node
A switch can land on an older build: e.g. prod cannot read dev's /mqtt.json,
and prod's M7 image has no Ethernet. Each image carries an ota-compat tag
(state generation + transports). A switch is flashed without rebooting, the
new image's tag is read (bounded by its length), and boot is pointed back at
the running image unless the target keeps this node's state and transports.
CI now requires the tag in every published binary.
2026-10-03 15:46:46 -07:00
mikecarper 65512661c3 Fix USB logging session safety and add hourly GPS sync interval 2026-10-03 15:43:35 -07:00
agessaman ee88192acb Merge branch 'feat/ota-branch-switch' into merge/ota-branch-into-observer-firmware-dev
# Conflicts:
#	.github/workflows/build-observer-firmwares.yml
#	examples/simple_repeater/MyMesh.cpp
#	examples/simple_room_server/MyMesh.cpp
#	src/helpers/ESP32Board.cpp
#	src/helpers/ESP32Board.h
#	test/test_config_serializer/test_config_serializer.cpp
2026-10-03 15:24:33 -07:00
agessaman 65d80bc908 ci(ota): verify each published binary's native channel by tag
Every observer build now carries both channel URLs, so checking for a URL's
presence or absence can no longer tell prod from beta (and the old checks would
reject every build). Read the ota-base-* tags from every .bin in out/ instead
of a single ELF, with URLs shared by build.sh and both workflows.
2026-10-03 15:24:11 -07:00
mikecarper b4c8c0ab23 Fix USB logging ownership, persistence, and reconnect safety 2026-10-03 14:45:57 -07:00
mikecarper bd55369aa9 Improve firmware tooling docs and OTA seeder startup checks 2026-10-03 03:12:24 -07:00
mikecarper c917158167 Add Zira spoken button confirmations and opt-in G726 speech tests 2026-10-03 03:03:02 -07:00
mikecarper f0199b3111 Add compressed self-serve OTA and resilient native USB sleep
Use a bounded uzlib-derived block encoder with the existing strict tinf decoder, qualify infrastructure roles, budget temporary RAM, and cache running-image metadata. Add self-serve CLI and policy, USB host-loss sleep grace, hardware test harnesses, regression tests, and CI coverage.
2026-10-03 01:14:23 -07:00
mikecarper 43f474a806 Integrate upstream fixes and paired nRF52 sensor OTA release profiles 2026-10-02 17:52:12 -07:00
mikecarper 42d6bfd560 Reduce nRF52 infrastructure flash usage without trimming sensors
Keep Companion and Terminal Chat profiles unchanged; retain full-sensor and reduced-sensor OTA builds. Add compact crypto and OTA names, qualified display asset compression, font license packaging, and scope regression tests.
2026-10-02 15:52:23 -07:00
mikecarper 7324bf06ef Support 2+ path-hash width filters 2026-10-02 10:21:17 -07:00
mikecarper d084f5b837 Add encoded path-hash width selectors to forwarding rules 2026-10-02 10:07:48 -07:00
mikecarper 65a8cfd721 Fix nRF52 Bluetooth DFU stack handoff 2026-10-01 16:15:59 -07:00
mikecarper 3e3c4bdd4e Point logging sleep contract at archived release notes 2026-10-01 12:01:25 -07:00
mikecarper d44910865c Publish 1.17.1.8 USA Cascade catalogs and firmware picker 2026-10-01 10:11:03 -07:00
mikecarper ec9da9f8f2 Verify picker disclosure of Indicator render memory tradeoffs 2026-10-01 07:54:34 -07:00
mikecarper e02b798296 Preserve Indicator PSRAM capacities with the proven compact canvas 2026-10-01 07:53:21 -07:00
mikecarper 9053038ffa Add opt-in nRF52 Bluetooth event diagnostics and USB capture 2026-10-01 02:19:45 -07:00
mikecarper cab781f9a4 Keep Companion get radio compatible with upstream CSV 2026-09-30 23:48:47 -07:00
mikecarper 31aa17b9e5 Distinguish BLE link loss from firmware watchdog evidence 2026-09-30 23:39:25 -07:00
mikecarper 51bc7f1e14 Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-09-30 23:38:05 -07:00
mikecarper 0f8f1fb9f3 Add legacy RAK3401 OTA route and relay reboot recovery 2026-09-30 23:30:08 -07:00
mikecarper 301ef3758d Persist Full Companion BLE subscriptions across reboot 2026-09-30 23:20:14 -07:00
mikecarper 91db37489a Preserve SoftDevice memory side effects under nRF52 LTO 2026-09-30 23:01:37 -07:00
mikecarper 6f6d1a2a7a Fix WebConfig bootstrap for legacy Android Chrome
Physical LG Android 5.1.1 testing found Chrome 43 could decode gzip but failed on the bootstrap's arrow syntax. Use ES5 functions and Promises while preserving retries, version refresh, and optional abort handling. Keep Google Zopfli gzip compression at 1,000 iterations.

Verified the flashed V4.3 through its WiFi link using the real Android browser: bootstrap and main page gzip responses completed, settings loaded at 910.525 MHz, and no JavaScript or transfer errors were reported. Add a loader syntax regression and document legacy browser support.
2026-09-30 19:20:12 -07:00
mikecarper 267773df7d Merge PR #13 with gzip-only WebConfig assets
Keep the graceful final-ACK TCP close and optional FEM control guards from
pixitha's browser compatibility fixes. Replace Brotli negotiation and duplicate
page assets with one gzip representation compressed by Google Zopfli 0.4.3
using 1,000 iterations. Compress the bootstrap, captive success, compact OTA,
and static WiFi setup pages with the same validated build cache.

Honor gzip quality values and wildcard precedence. Validate compressed OTA
page evidence in the firmware capability gate, and add native and Python
regressions plus CI coverage. Remove the unused Brotli build dependency.

Validation: 54 native tests, 56 Python/browser checks, full V4.3 build and
verified application flash. Actual V4 WiFi responses matched the generated
gzip assets; 30 repeat downloads completed without reboot. Chromium loaded
the setup and settings pages without script or transfer errors. Physical
Android testing is pending because the Pi detects no phone over USB or mDNS.
2026-09-30 18:55:17 -07:00
Kyle Duren 9525fb1415 Use gzip fallback for WebConfig clients 2026-09-30 17:07:59 -04:00
Kyle Duren 3613363674 Fix WebConfig browser compatibility 2026-09-30 16:58:36 -04:00
mikecarper aeccd3b692 Offer exact latest bootloader files only for selected nRF52 hardware 2026-09-29 17:00:19 -07:00
mikecarper 687896fa33 Link ESP32 picker to exact partition expansion packages 2026-09-27 21:13:25 -07:00
mikecarper bb24681188 Prepare 1.17.1.7 Cascade release catalogs and STM32WL USB images 2026-09-27 10:20:43 -07:00
mikecarper ee3010f496 Precompute ESP32 release partition lookup table 2026-09-26 19:58:28 -07:00
mikecarper df19760c85 Publish one ordinary ESP32 Full image per board role 2026-09-26 09:29:18 -07:00
mikecarper b0b9e53dd7 Keep G2 migration Full images out of ordinary release matrix 2026-09-26 08:59:29 -07:00
mikecarper ce46e60a86 Replay initial nRF52 USB READY after application handoff 2026-09-25 17:44:15 -07:00
mikecarper 36b8bf6c82 Correct merged RAK bootloader target to OTAFIX 2.4.8 2026-09-25 10:50:29 -07:00
mikecarper 7ee33c7149 Describe local adaptive OTAFIX requirement in release metadata 2026-09-25 10:37:10 -07:00
mikecarper 72afac9a40 Unify RAK repeater storage firmware and bootloader handoff 2026-09-25 10:35:04 -07:00
mikecarper 702ffdbbca Stabilize nRF52 Bluefruit startup for buttonless DFU 2026-09-25 08:33:54 -07:00
mikecarper aa4598f739 Bound nRF52 UF2 images and reduce repeater BLE DFU memory 2026-09-25 08:09:38 -07:00
mikecarper fc6efcca03 Align WSL3 migration identity with firmware hardware tag 2026-09-25 05:51:57 -07:00