Commit Graph
944 Commits
Author SHA1 Message Date
mikecarper f88b9e65ed Expose broker acknowledgment diagnostics on Full Companion 2026-10-17 23:54:15 -07:00
mikecarper a4a0b97c3f Expand post-merge regressions and document qualification gaps 2026-10-17 21:41:47 -07:00
mikecarper ce35e21480 Document transient guest login and post replay limits 2026-10-17 21:19:04 -07:00
nullrouten0andClaude Opus 5.5 09435b049d Use the node's admin password for the migration bridge AP
The Wi-Fi, LoRa first-stage and Partition Expander bridges serve an
unauthenticated /update behind an AP whose password was fixed and published,
so anyone in range during a migration could upload firmware while the private
key is staged. Use the old node's saved admin password as the WPA2
passphrase, read from /com_prefs or /node_prefs at offset 56 as the firmware
loads it. The operator already used that password to start the old updater.

Fall back to the published password, with a serial warning, when the saved
admin password is missing, unreadable, shorter than 8 characters or not
printable ASCII, so no node becomes unreachable. The legacy filesystem is
mounted without formatting and the password is never printed. Migration
admission, flash sequencing, /update gating and the USB bridge are unchanged.
Update both guides and the package README.

Add a sanitizer-backed host test that compiles the bridge's actual Wi-Fi
block against fake SPIFFS and WiFi: both boots, file precedence, WPA2 length
and terminator bounds, printable characters, stock 1.10/1.11 file sizes,
truncated fields, and mount, seek and partial-read failures. It fails 8 of 8
on the previous code and catches 27 of 27 code mutations. Verified 13 related
host test files and the esp32_s3_4mb_partition_migrator build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 03:57:09 +00:00
mikecarper 55f67f9062 Fit Mini Repeater with approved optional service cuts 2026-10-17 19:35:05 -07:00
mikecarper 7a9d099039 Record Mini Repeater approved feature-cut experiments 2026-10-17 19:23:26 -07:00
mikecarper 5c364b8f04 Record Mini Repeater GCC 15 size and emulation results 2026-10-17 18:42:08 -07:00
mikecarper 4575da82fe Record 1.18.0.1 risk matrix passes and remaining Mini limit 2026-10-17 18:07:13 -07:00
mikecarper 3d04bb3048 Sleep unused onboard SX1262 in RAK13302 builds
Adapt the optional onboard-radio probe for RAK3401 and RAK4631 cores using the external RAK13302 image. Preserve SPI1 radio ownership, external FEM startup, and ordinary RAK4631 primary-radio operation.

Probe before boot voltage protection, bound missing-chip waits, release temporary pads, and confirm cold sleep without waking the chip. Add sanitizer-backed host regression tests and CI coverage.
2026-10-17 17:02:54 -07:00
mikecarper cdfd1ad691 Retain USB packet logging in canonical nRF sensor OTA pairs 2026-10-17 15:50:19 -07:00
mikecarper 97be2b9b21 Delay displayed radio preamble advice for two minutes 2026-10-17 14:45:33 -07:00
mikecarper 264fc2bccb Fix hosted links for new power-saving documentation 2026-10-17 13:44:40 -07:00
mikecarper 8874cf62ca Fix W12 TX prearming without standby PA drain 2026-10-17 13:36:38 -07:00
mikecarper f1d281a766 Allow safe nRF52 MCU idle between radio2 scan deadlines 2026-10-17 13:21:05 -07:00
mikecarper 53835c0793 Avoid flash load image for the empty contact-path cache 2026-10-17 11:57:05 -07:00
mikecarper dcabcb8cb2 Initialize DC/DC on nine circuit-verified nRF52 boards 2026-10-17 11:42:21 -07:00
mikecarper 364e3cabd5 Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-17 11:37:01 -07:00
mikecarper 86984e8e22 Enable RAK4631 Companion DC/DC in all transports 2026-10-17 11:35:50 -07:00
mikecarper 80f7b17d89 Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-17 11:22:33 -07:00
mikecarper 4805b5cdbb Fix T096 Companion runtime RAM with RGB332 framebuffer 2026-10-17 11:22:15 -07:00
mikecarper 2fb4d2e793 Preserve millisecond power-saving deadlines across roles 2026-10-17 11:21:48 -07:00
mikecarper eb4f837969 Retain valid noise floors during adaptive AGC maintenance 2026-10-17 11:06:10 -07:00
mikecarper dd7a10f9aa Sleep between noise-floor samples and reduce idle refreshes 2026-10-17 10:18:14 -07:00
mikecarper 50428f0fb7 Enable contact caching for high-capacity nRF52 companions 2026-10-17 10:14:17 -07:00
mikecarper 8a5f735bba Reuse active Sensor tracker wake deadlines 2026-10-17 02:25:37 -07:00
mikecarper 629557fcfe Fix nRF52 idle sleep event and CryptoCell handling 2026-10-17 02:22:26 -07:00
mikecarper 756d887bad Add on-demand power-saving diagnostics 2026-10-17 01:15:54 -07:00
mikecarper 04c3d1118d Preserve current Room downloads during QSPI rollout 2026-10-16 23:46:21 -07:00
mikecarper ce53567a4c Consolidate onboard QSPI infrastructure build profiles 2026-10-16 23:42:10 -07:00
mikecarper d5d84d325b Retire internal-only SolarXiao Room release variants 2026-10-16 23:24:36 -07:00
mikecarper 866f9d682f Preserve armed OTA handoffs when debug resume is requested 2026-10-16 15:43:32 -07:00
mikecarper e5706bafa1 Restart contact streams after storage recovery
Release cached path snapshots before resetting contacts while retaining the requesting transport and table revision for a complete stream restart. Keep explicit session cancellation unchanged and avoid copying uncached contact buffers.

Cover cached and uncached recovery, transport isolation, empty reloads, backpressure, and the former cancellation as a negative control.
2026-10-16 09:11:19 -07:00
mikecarper 587700a36a Preserve accepted contacts after transient path read errors
Recheck cached immutable paths before resetting the live table after raw I/O failure. Keep accepted RAM mutations, current jobs and save deadlines when reads recover; stronger source or publication uncertainty still forces full recovery. Use the existing recovery byte and a fixed scratch buffer, with no cache allocation or eviction.

Cover full-cache transient recovery, persistent I/O and checksum failures, nRF unread-scope restoration, active ESP jobs, real uncertain publication and unchanged lazy deadlines with sanitizer tests and restored-reset negative controls.
2026-10-16 08:54:12 -07:00
mikecarper b393737593 Preserve contacts when source discovery is unknown
Do not classify legacy or page-name stat errors as unread payloads. Keep candidate contact files unchanged, retry source selection, and use bounded volatile operation if authority remains unknown. Cover legacy absence, downgrade leftovers, cleanup-time metadata recovery and persistent faults with actual-source sanitizer tests and restored-bug negative controls.
2026-10-16 08:38:26 -07:00
mikecarper 54a5137032 Recover unreadable contacts without stranding Companions
Verify fallback namespace moves before accepting publication or rollback. Reload readable contact images at a safe host boundary, discard only unreadable contact data after bounded retries, and permit volatile operation when storage cannot recover. Preserve unrelated stores and fail explicit durability requests truthfully.

Keep existing flash, RAM, OTA and capability limits by streaming nRF52 preferences through the validated wire table and sharing identical contact deadline resets. Add fault-injection, sanitizer, legacy-image parity and CLI lifecycle regressions.
2026-10-16 08:28:45 -07:00
mikecarper c7d377a7cb Hold fleet authority after uncertain settings publication 2026-10-16 06:53:19 -07:00
mikecarper 9df586df7e Preserve radio2 ACK ownership without extending expired leases
Keep tracked reply generations stable in feature-off builds as well as optional transport builds. After ACK copies drain, let expired temporary profiles restore saved settings while failed permanent commits stay staged and retry.

Cover packet generations, rollover, persistent commit faults, cancellation and eventual commit across feature-off, Meshtext and Ethernet configurations. Document ACK ownership and post-reply storage retry behavior.
2026-10-16 06:02:01 -07:00
mikecarper 114a0d98c5 Keep RAK Companion Ethernet waits off the mesh loop
Run DHCP and renewal in a cooperative worker, bound socket commands, and retain SPI ownership until cleanup is safe. Preserve framing deadlines, response ownership and whole-frame replay, including pending-ACK queue pinning.

Budget the worker additively and retain all OTA names with an exact-checked Full-only compact index. Add full-driver, sanitizer, queue, shutdown, storage and memory regression coverage.
2026-10-16 02:23:03 -07:00
mikecarper b11cb44e06 Restore RX power saving after deferred calibration cleanup 2026-10-16 01:42:37 -07:00
mikecarper 41405ee01b Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-16 01:27:24 -07:00
mikecarper 339079c439 Bound failed RX retries without blocking power-saving sleep 2026-10-16 01:27:24 -07:00
mikecarper e8ac3ddc6b Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-16 01:18:26 -07:00
mikecarper 774c2adc80 Add adaptive RAK4631 SD storage to full firmware profiles 2026-10-16 01:18:26 -07:00
mikecarper d5cc73c43d Validate beacon power without stranding saved settings 2026-10-16 00:39:07 -07:00
mikecarper 7df52f5260 Add opt-in decoded-channel Meshtext rebroadcasting 2026-10-15 23:39:05 -07:00
mikecarper 9947c40686 Keep local onboarding notices behind real Companion traffic 2026-10-15 23:37:17 -07:00
mikecarper 36ec9b8bd3 Seed a quiet local emergency-channel notice on Companion joins 2026-10-15 23:16:27 -07:00
mikecarper 3a625b03fe Fix missing Waveshare LR1121 observer migration metadata 2026-10-15 22:51:36 -07:00
mikecarper 7a2bc9b8fa Publish one auto-slot Station G3 firmware choice per profile 2026-10-15 22:30:37 -07:00
mikecarper 8eced48d34 Fix peripheral power shutdown and auto-detect Station G3 radio slots 2026-10-15 22:30:37 -07:00