Commit Graph
6243 Commits
Author SHA1 Message Date
mikecarper 2fc2f409d4 Keep MQTT and WebConfig stable under internal memory pressure 2026-10-27 11:28:47 -07:00
mikecarper 2be068cafa Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-26 23:41:20 -07:00
mikecarper 7d413a6806 Fit direct OTA administration into RAK4631 Full 2026-10-26 23:41:20 -07:00
mikecarper 7321f858d8 Omit unused forwarding region automation from Full Companions 2026-10-26 22:21:35 -07:00
mikecarper cf0628d3db Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-26 22:15:37 -07:00
mikecarper 3dac9b3168 Refresh KISS ingress negative controls for guarded OTA reads 2026-10-26 22:15:37 -07:00
mikecarper 71e42b2e62 Manage MediaMesh forwarding region with saved radio2 profiles 2026-10-26 22:15:37 -07:00
mikecarper 9d2f7a3e27 Run RTC terminal input regressions in CI 2026-10-26 21:56:07 -07:00
mikecarper b0b18eaa22 Keep Wireless Paper terminal input in unused RTC memory 2026-10-26 21:55:27 -07:00
mikecarper a301820be3 Match Indicator memory test to its ESP-NOW-only transport 2026-10-26 21:45:18 -07:00
mikecarper d64a4ef234 Preserve unread messages when the OTA wizard borrows queue space 2026-10-26 21:45:18 -07:00
mikecarper 02d15876e6 Fix compatible release selection and automatic delta preparation 2026-10-26 21:36:06 -07:00
mikecarper bb7ebaa1d9 Finalize interrupted OTA downloads before restoring automatic updates 2026-10-26 21:36:06 -07:00
mikecarper dedae3d5ca Keep OTA replies separate from Companion messages and contacts 2026-10-26 21:36:06 -07:00
mikecarper 735ab4b9be Add menus for GitHub firmware and OTA preparation 2026-10-26 20:50:08 -07:00
mikecarper 67a291bbbd Preserve scheduled radio windows on older OTA destinations 2026-10-26 20:23:25 -07:00
mikecarper c8778bbc9c Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade
# Conflicts:
#	test/test_companion_fleet_control.py
2026-10-26 20:20:57 -07:00
mikecarper 0a3a72984a Keep direct OTA support within each Companion's flash budget 2026-10-26 20:17:54 -07:00
mikecarper 2536791f6c Update fleet rescue fixture for optional host KISS guards station-v1.18.0.2-alpha1 2026-10-26 20:03:51 -07:00
mikecarper c3a28e9ab8 Use the existing nRF52 layout for custom source builds 2026-10-26 19:59:56 -07:00
mikecarper d434a2b5ba Update fleet CLI tests for USB modem ownership 2026-10-26 19:59:56 -07:00
mikecarper 64251f9d9b Keep updater USB connections clear of boot and modem controls 2026-10-26 19:54:27 -07:00
mikecarper ebf2717171 Pause serial OTA reads while USB belongs to the modem 2026-10-26 19:50:44 -07:00
mikecarper bd8e6a73d4 Keep late OTA replies inside the shared USB source 2026-10-26 19:47:22 -07:00
mikecarper 4afad09048 Add a guided USB-to-LoRa updater for repeaters and companions 2026-10-26 19:46:05 -07:00
mikecarper c313658b88 Wait for the radio from the repeater's own loop 2026-10-26 19:46:05 -07:00
mikecarper 435c740e5a Let USB repeaters and Full Companions manage direct OTA updates 2026-10-26 19:46:05 -07:00
mikecarper 5741006b3e Fix RX activity test fixture after measurement module split 2026-10-26 19:43:23 -07:00
mikecarper f1feed086b Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-26 18:36:04 -07:00
mikecarper c392ca806f Preserve Nordic KISS transmit entry for executable capability checks 2026-10-26 18:36:04 -07:00
mikecarper b4bec19e88 Fit Nordic Full KISS with lossless assets and firmware lifetime trimming 2026-10-26 18:21:18 -07:00
mikecarper 2369a3d28c Keep native Espressif USB boot control lines released in host tests 2026-10-26 18:17:30 -07:00
mikecarper 195dca93e4 Add collapsible differential OTA example for Ikoka Stick 2026-10-26 18:16:15 -07:00
mikecarper ec4aba8a1c Reserve Full host KISS codec RAM without reducing existing budgets 2026-10-26 17:53:39 -07:00
mikecarper 6f5acf4fbd Document Pi-connected Station G2 OTA to an Ikoka Stick 2026-10-26 17:52:58 -07:00
mikecarper 1aef6de288 Reserve USB KISS framing before normal parsers consume it 2026-10-26 17:49:20 -07:00
mikecarper ff51126508 Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-26 17:42:58 -07:00
mikecarper 27adc606c8 Ignore unsupported RXPS when applying radio parameters 2026-10-26 17:26:53 -07:00
mikecarper 264a5a8b34 Preserve KISS ownership and wait for initial radio2 readiness 2026-10-26 17:23:38 -07:00
mikecarper 9abddea527 Initialize web login credentials before delayed LAN startup 2026-10-26 17:05:35 -07:00
mikecarper d836e661ba Fix Nordic KISS header and RX activity test fixture bindings 2026-10-26 17:04:47 -07:00
mikecarper cb3c92a8da Add saved raw radio2 KISS host sessions to Full firmware 2026-10-26 16:57:49 -07:00
mikecarper 8a8c80ee6a Unblock LR2021 retunes and add saved crystal calibration
Repeated preamble/header activity can keep a requested primary or TempRadio
change busy indefinitely. Bound unfinished-RX admission for accepted LR2021
changes while preserving completed packets, TX, BUSY and exclusive owners.
Ordinary scans and CAD keep their existing admission rules. Expose the failing
stage and native status through get radio.apply.

Add saved radio.xtrim capacitor calibration and measured radio.freqerror in
signed Hz from the last valid LoRa packet. Preserve native trim by default,
restore explicit calibration after resets/Morse, verify saves before applying,
wait two seconds for the acknowledgement, and roll back failed changes.

Calibration motivation and prior upstream work:
https://github.com/meshcore-dev/MeshCore/issues/3365
https://github.com/recrof/MeshCore/tree/lr2021-trim
Packet-status format follows Semtech's LR20xx driver and RadioLib staging.

Tests execute production activity/admission and transaction paths with noisy
RX, completion races, protected owners, failed setters, RX restart and save
rollback. Physical W12 retuning and RF calibration still require confirmation.
w12-v1.18.0.2-alpha2
2026-10-26 15:55:36 -07:00
mikecarper b00d346df7 Unify Heltec V4 OLED, TFT and headless display selection
Detect OLED or the original stock TFT touch assembly in ordinary V4.2/V4.3
images. Add saved live display.type auto/oled/tft/off selection and report
the active selection in board output. Keep sensors on primary I2C, preserve
shared power, and isolate TFT FSPI from radio HSPI through sleep and changes.

Consolidate future picker/build choices only with application capability
proof. Retain exact legacy OTA identities and separate R8 hardware images.
Document controls and physical qualification limits.

Validation: five serialized Full builds with capability/size/RAM checks;
focused host tests, existing R8/T-Deck/OLED regressions, build-profile suite,
and picker/provider tests. V4.3 OLED live changes and off/auto reboot
persistence passed on Mercerwood. Physical TFT qualification remains pending.
2026-10-26 15:19:17 -07:00
mikecarper 5b5708283d Record Tower 2.4.9 embedded updater and signed SD tests 2026-10-26 13:55:19 -07:00
mikecarper f36beae97a Document Tower 2.4.3 bootloader upgrade test 2026-10-26 13:30:39 -07:00
mikecarper a87b2a33a3 Fix LR2021 TempRadio with incompatible extra-SF detectors
Temporarily disable incompatible cached side detectors while applying a temporary primary tuple, preserving their saved configuration for normal restoration. Use primary-only CAD while those detectors are suspended. Keep compatible temporary detectors and real hardware errors intact.

Report pending TempRadio starts instead of off, preserve live-tuple status during replacements and future schedules, and include the two-second delay in the accepted reply. Share primary validation to retain STM32 Mini flash capacity without dropping features.

Validated production CLI status, scheduler and persistence cases; LR2021 detector suspension, restoration, CAD and hardware-error paths; reply handoff, room/sensor recovery, Morse and OTA automation regressions. W12 repeater, room-server and sensor builds pass. Canonical STM32 Mini Repeater passes flash and runtime RAM admission with 436 bytes of flash remaining. Physical W12 RF testing remains unverified.
w12-v1.18.0.2-alpha1
2026-10-26 00:58:57 -07:00
mikecarper 6ad3e349ac Align room-post regression with admin-only reply overrides
Fix the stale assertion reported by Actions run 40283205754. Ordinary room posts and topic pushes retain their configured delivery copies and ACK/retry behavior without opting into the admin CLI tx.reply policy. All 18 room-client path tests pass.
2026-10-26 00:39:57 -07:00
mikecarper 4f76345b67 Apply infrastructure radio changes after a two-second reply handoff
Persist set freq and set radio atomically, then apply through the existing safe radio scheduler without rebooting. Retain the old tuple until the delay and reply handoff finish, including queued room/sensor replies and TX-complete callbacks. End temporary sessions when accepting a permanent change.

Display applied RF settings even when radio2 is off. Share radio validation across immediate and scheduled setters to preserve STM32 Mini flash capacity. Update command documentation, regression coverage, and CI.

Validated production timing, persistence, display, CLI, fleet/reply, RX, sleep and Morse regressions. W12 repeater, room-server and sensor builds pass. Canonical STM32 Mini Repeater passes flash and RAM admission with 448 bytes of flash remaining. Physical W12 RF testing was not performed.
2026-10-26 00:38:13 -07:00
mikecarper c98684021a Restrict dual-profile reply overrides to admin CLI responses 2026-10-26 00:00:45 -07:00