Commit Graph
2631 Commits
Author SHA1 Message Date
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 ec4aba8a1c Reserve Full host KISS codec RAM without reducing existing budgets 2026-10-26 17:53:39 -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 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 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.
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 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.
2026-10-26 00:58: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
mikecarper b0c49a4cc3 Fit STM32 release images and repair stale CI fixtures
Fix the STM32 flash overflows and fleet fixture compile failure from
https://github.com/mikecarper/MeshCore/actions/runs/40241742182.

Fold already-unsupported RX control paths only for the integrated STM32WL
wrapper. Preserve RXPS-off validation, persistence, pending application and
rollback. External radios retain their supported controls.

Use measured GCC 14 code sharing in the four small STM32 USB Companion
recipes. Keep firmware features, contact/channel capacities, filesystem
boundaries and flash/RAM admission checks unchanged.

Refresh downstream host fixtures for saved radio intent, deferred service
restarts, WebConfig ownership, RX recovery and color tint state. Retain or
strengthen behavior checks rather than skipping failing coverage.

Validation: canonical RAK3x72, Wio Mini, Wio Dev and Tiny Relay USB Companion
packages and Mini Repeater build passed at release-version length. All
post-failure host checks, compact arithmetic/float checks, build-profile and
real PlatformIO recipe/path/RAM-policy checks passed locally.
2026-10-25 22:00:24 -07:00
mikecarper ad34fd3a0d Integrate W12 RF switching and LR2021 receive PRs
Adapt upstream MeshCore #3579 at 7457cff43c22697119e06ad7d192a37de0990403:
retain GC1109 LF standby bias, with checked cold controls before band supply
changes and shutdown. Preserve exclusive LF/HF rails and TX error cleanup.
Reset before boot rail changes and before SPI-dependent hard recovery.

Retain our stronger implementation of #3512 at
d208bfef94ab83280de30ba4a0675ff73b3ecef3. Add regressions for suspect FIFO
contents, failed RX_DONE acknowledgement, and fresh preamble timing.
W12 TX power defaults from #3319 were already included via 65aa1138a.

Validation: 79 targeted native tests; canonical W12 Full repeater and Full
Companion builds, capability checks, app-size and RAM checks passed.
Physical W12 RF envelope, current and LoRa management confirmation remain.

Upstream PRs:
https://github.com/meshcore-dev/MeshCore/pull/3579
https://github.com/meshcore-dev/MeshCore/pull/3512
https://github.com/meshcore-dev/MeshCore/pull/3319
2026-10-25 15:46:18 -07:00
mikecarper 73c5f572eb Apply busy radio settings and recover service starts automatically
Save valid busy RX, fast-switch and Companion tuple changes once, then
apply the latest accepted intent at a safe radio gap. Preserve checked-save
rollback, runtime RXEN intent, TempRadio ownership and exact remote reply
delivery. Repair failed preamble compensation without hiding uncertain saves.

Retry WebConfig, MQTT and NimBLE startup failures automatically. Preserve
explicit off choices, OTA ownership and the latest WiFi credentials through
cooperative shutdown. Add regression coverage and update command guides.

Validation: focused host transaction, rollback, ownership and lifecycle suites;
Full RAK4631, Heltec V4 R8 TFT and RC32 packages; representative room, sensor,
LR1110, LR2021, SX1276, STM32WL and ESP-NOW builds. Linked RAK crypto and OTA
workspace checks pass; its complete OTA image uses 712644/712704 bytes.
2026-10-25 15:20:55 -07:00
mikecarper fb73e3afac Add automatic red and black night mode for color screens
Default to one hour after sunset through sunrise, using fresh cached GPS or recent direct RF neighbor locations. Provide saved CLI and WebConfig controls with a small integer solar approximation and no additional framebuffer.
2026-10-25 14:41:14 -07:00
mikecarper 65928aae95 Apply saved TX power automatically across firmware roles 2026-10-25 14:08:15 -07:00
mikecarper 8dfdba3f6d Defer busy Companion TX-power updates without interrupting RX
A settings save could reach the power setter while RX, TX, duty cycling or a
profile transition owned the radio, returning BAD_STATE after earlier settings
had already saved. Distinguish busy admission from a hardware rejection and
reuse the existing command route, storage and three-second deadline for power.
Acknowledge only after hardware acceptance and a successful preference save.

Skip hardware work for verified unchanged power. Invalidate that verification
after failed writes or radio initialization, retaining rollback and exclusive
beacon/Morse ownership. Keep the existing firmware memory limits and features.

Cover retries, captured routes, timeout/rollover, disconnect, partial writes,
failed saves and recovery. Keep ESP-NOW/simulation adapters compatible and add
ESP-NOW Companion compilation to the existing sequential smoke job.
2026-10-25 11:57:03 -07:00
mikecarper 16399a019d Fix Companion pairing tests and nRF52 OTA image size
The extracted inbox renderer was missing HomeScreen's pairing PIN visibility
state. Provide it and check that it agrees with the complete PIN on screen.

Reuse the text drawing result instead of measuring pairing values twice, and
keep the bottom pairing layout separate from the large home renderer. This
saves 32 bytes in the RAK4631 Full Companion and lets its OTA image pass the
existing application limit without removing features or weakening checks.

Fixes the two failures in unit-test run 40174991783.
2026-10-25 09:00:12 -07:00
mikecarper 83e4b45221 Avoid duplicate pairing PINs across Companion displays 2026-10-25 00:51:06 -07:00
mikecarper 4fd3358a45 Add saved node and region discovery response switches 2026-10-24 20:37:51 -07:00
mikecarper 21194b9825 Fix compile and capacity blockers in the full release matrix
Resolve Serial macro and ESP-NOW wrapper compilation errors. Preserve queue, neighbor, advert-history and Room post capacities while using qualified RTC, PSRAM and word-only IRAM storage on constrained ESP32 targets. Reduce Full infrastructure flash through lossless Room web compression, compact crypto and unused exception metadata removal.

Add focused native regressions for storage ownership, exact protocol output, OTA proofs and build policy. Keep physical flash sizes, OTA slots and RAM guard formulas unchanged.
2026-10-24 05:38:23 -07:00
mikecarper 98c2858087 Warn admins on login while the default password is unchanged 2026-10-24 01:05:49 -07:00
mikecarper 8e8c603eb5 Keep RAK4631 Full OTA images within the application region 2026-10-23 19:39:54 -07:00
mikecarper c563c40c66 Fix firmware size limits and refresh CI compatibility checks
Compact the existing STM32 field arithmetic and ESP-NOW tail-frame storage without removing features or lowering memory reserves. Refresh power-saving fixtures and pin official-app tests to a published archive.
2026-10-23 19:04:43 -07:00
mikecarper b8929c15fe Keep ESP-NOW TX seen keys instead of duplicate packet snapshots 2026-10-23 18:57:57 -07:00
mikecarper 170c1761d0 Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-23 18:08:25 -07:00
mikecarper ab5de10e79 Qualify Full Meshtext builds and share cold storage on constrained companions 2026-10-23 18:08:25 -07:00
mikecarper fc1e721a84 Scope automatic bootloader updates to each firmware image 2026-10-23 17:52:16 -07:00
mikecarper 127d1bec24 Enable Meshtext on all supported Full Companion boards 2026-10-23 17:41:12 -07:00
mikecarper 3226e208bf Automatically check embedded bootloader after 70 seconds with reboot protection 2026-10-23 17:34:57 -07:00
mikecarper 881d8e58a5 Simplify embedded bootloader updates and skip current versions 2026-10-23 17:16:32 -07:00
mikecarper 9da754b137 Support SenseCAP Solar P1 bootloader identity separately from XIAO 2026-10-23 16:51:34 -07:00
mikecarper d808d964d2 Add nRF52 Repeater and Room variants with embedded OTAFIX 2.4.12 2026-10-23 16:36:18 -07:00
mikecarper 9b0e013f4b Merge PowerSaving-v18 into keymindCascade
Integrate the ESP32 power-saving core and RXPS recovery/status updates while preserving radio2, telemetry and saved settings.
2026-10-23 16:11:49 -07:00
mikecarper 84cae8a774 Show last completed telemetry transmission age 2026-10-23 15:12:42 -07:00
mikecarper ea4b53ceee Enable direct-route echo retries for telemetry snapshots 2026-10-23 15:00:42 -07:00
mikecarper d6853f4521 Add saved 9 MHz alias for supported 8.889 MHz SPI clocks 2026-10-23 12:54:54 -07:00
mikecarper 601f3ee622 Allow compact histograms in private radio timing builds 2026-10-23 12:03:49 -07:00
mikecarper fd2c99b890 Add isolated ESP32 SPI clock and retune timing instrumentation 2026-10-23 11:57:24 -07:00
mikecarper 9d973d353a Preserve the compact STM32WL interface and profile storage path 2026-10-23 11:13:35 -07:00
mikecarper c9de5c8350 Omit unsupported tuning controls on integrated STM32WL radios 2026-10-23 11:04:11 -07:00
mikecarper 4c0f2acf64 Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-23 10:41:27 -07:00
mikecarper 61d024bc72 Add saved controls for radio switching acceleration 2026-10-23 10:41:26 -07:00
mikecarper 5a4e81c4d5 Pack Reader words to retain Full firmware flash headroom 2026-10-23 10:41:26 -07:00
mikecarper 99eb24736f Limit Meshtext messages to 15 total attempts
Stop on a matching forwarded echo and preserve lower saved retry settings. Keep scheduled beacons on their separate single-send path.
2026-10-23 10:33:21 -07:00
mikecarper 86ef1e890c Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-23 10:05:38 -07:00
mikecarper 629db8542d Share SD command parsing and history output without changing replies 2026-10-23 09:59:48 -07:00
mikecarper fd47fe0b1a Merge upstream dev into keymindCascade
Bring in the new Companion WiFi profiles while preserving existing OLED detection, message queues and OTA safeguards. Include dynamic WiFi helpers consistently and refresh the affected test fixtures.
2026-10-23 09:57:14 -07:00