Commit Graph
2468 Commits
Author SHA1 Message Date
mikecarper a3f858f6f0 Fit V3 Full with NimBLE and bounded OTA source proofs 2026-10-19 02:47:13 -07:00
mikecarper 025eadb39f Keep compact contacts within the STM32 flash boundary 2026-10-19 02:11:47 -07:00
mikecarper 036661e7e4 Reduce contact RAM across boards and compact Full firmware 2026-10-19 01:55:25 -07:00
mikecarper f7b5c40c3b Fit RAK4631 Full OTA image by reusing regulator recovery code 2026-10-18 23:48:07 -07:00
mikecarper e8d1e537e4 Record T-Deck radio2 hardware timing and regression coverage
Add receive-only same-image display, SPI, modem/IQ-cache and scoped-priority experiments with checkpointed collectors. Keep rejected clock-phase correction and elevated-priority experiments out of production.

Publish sanitized timing data, Full Companion/Bluetooth/USB checks and redraw measurements with their limits. Wire the new behavioral checks into CI.
2026-10-18 23:20:50 -07:00
mikecarper a782cc8413 Speed up T-Deck radio2 retunes with guarded command reuse
Reuse the confirmed LoRa modem only inside acknowledged warm continuous-RX hops and revoke that capability before modem initialization or after failures.

Opt the tested T-Deck into IQ workaround reuse and an exact 8,888,888 Hz SPI setting. Keep the existing BUSY, packet-ownership and recovery checks; other boards retain their modem-cache default.
2026-10-18 23:20:50 -07:00
mikecarper a944b1779d Keep T-Deck radio2 scanning active during screen redraws
Render into a PSRAM canvas and release the shared SPI bus between bounded TFT strips. Service only the radio driver at cooperative checkpoints and use the buffered radio HAL, preserving packet and transmit guards.

Cover pixel parity, transaction boundaries, allocation failure, partial updates and sleep/wake behavior with native tests.
2026-10-18 23:18:55 -07:00
mikecarper 71372f686f Defer regulator ADC and flash work during Morse timing 2026-10-18 22:38:54 -07:00
mikecarper a886f618f1 Omit unsupported regulator vtable slots on integrated STM32WL 2026-10-18 22:00:03 -07:00
mikecarper 758004373d Keep unsupported STM32 controls out of tiny Companion images 2026-10-18 21:54:35 -07:00
mikecarper 0da54991cc Avoid unreachable regulator persistence on integrated STM32WL targets 2026-10-18 21:36:04 -07:00
mikecarper c604a1a165 Pack unchanged Reader text more tightly for Full firmware 2026-10-18 21:26:44 -07:00
mikecarper c2998ae8d9 Preserve regulator recovery through planned resets and storage failures 2026-10-18 21:17:44 -07:00
mikecarper c4a1d485ff Add saved regulator modes and battery-gated crash recovery 2026-10-18 21:10:58 -07:00
mikecarper 9c78ccde57 Unify optional hardware variants and add runtime R8 TFT rotation 2026-10-18 20:25:13 -07:00
mikecarper 4f746d1e3b Detect manufacturer-supported optional screens on RC32, Tracker V1 and V4 R8 2026-10-18 18:55:38 -07:00
mikecarper 1ce3f0cdd7 Make T114 screen detection the default firmware and picker choice 2026-10-18 16:20:27 -07:00
mikecarper 22ab02caf7 Fix G3 gain transitions, slot commands and radio restore 2026-10-18 14:29:19 -07:00
mikecarper 5d741318f5 Preserve admin password input and clarify reconnect guidance 2026-10-18 13:45:13 -07:00
mikecarper cd02e55824 Share the saved admin password across ESP32 management services
Use the committed node credential for setup WiFi, WebConfig and browser OTA. Add persistent ESP32 WiFi Companion management credentials without changing preferences layouts, revoke stale browser sessions on rotation, retain scoped save receipts, and coordinate credential changes with flash uploads. Keep external-service credentials and trusted TCP protocol compatibility independent. Update live join QR codes, failure handling and documentation.

Validated 51 native cases, 158 related host and browser methods, and serial Full V4 Companion, Station G3 Repeater, ESP32-C6 Room Server and V4 Sensor firmware builds.
2026-10-18 13:09:48 -07:00
mikecarper 59b0ab93d0 Keep fractional timezones within constrained flash budgets
Deduplicate validation and preserve the published preference bytes and transactional saves. Correct Ikoka Handheld Companion flash bounds and document QSPI Room migration. Qualify STM32 and RAK4631 at the full 1.18.0.1 release version length.
2026-10-18 08:46:20 -07:00
mikecarper 7088096abf Merge upstream dev through 428a95c64
Integrate fractional Companion timezones and conditional Bluetooth pages while preserving the existing preference byte layout, transactional saves, and Full transport selector. Add migration, rollback, invalid-value, and UI profile regressions.
2026-10-18 08:30:50 -07:00
mikecarper 48bad8ddfb Reduce room board recovery stack use under sustained reads 2026-10-18 00:00:47 -07:00
mikecarper 68f45e5cf5 Fix room browser stack overflow and bound response bodies 2026-10-17 23:31:24 -07:00
mikecarper 80023f79e0 Fix ESP32-C6 GPIO hold capability and add cross-platform smoke builds 2026-10-17 21:41:47 -07:00
nullrouten0andClaude Opus 5.5 ef1e4a70cb Lock WebConfig logins per client address with a shared failure cap
/api/login locked every client for 30 s after five failures from anyone.
Anyone who could reach the login page could keep the owner locked out by
failing on purpose. If no login succeeded after a lockout, the lock also
returned from 2^31 to 2^32 ms (about 24.9 to 49.7 days) later, because the
deadline was never cleared and was compared as a signed difference.

Count failures per remote address instead. Five failures lock that address
for 30 s, as before. A shared budget caps failures from all addresses
together, so changing address does not add guesses: it holds six failures
and refills one every 6 s, the old global rate, so one failing address can
never empty it on its own. While it is empty every client waits, as before.
Lock times are measured as elapsed time.

The policy is a pure header, WebConfigLoginThrottle.h.
test_webconfig_login_throttle.py runs it directly (isolation, boundaries,
one-hour rate bounds, millis() half-wrap, saturation, eviction) and runs the
real handleLogin with ArduinoJson under ASan/UBSan. Putting every client on
one key, as the old code did, fails the handler test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 03:57:09 +00:00
mikecarperandnullrouten0 3db4582bbb Integrate upstream GPS PRs 3624, 3625 and 3626
Port the guarded NMEA buffer, validated RMC clock samples and coordinate bounds from meshcore-dev/MeshCore#3624, #3625 and #3626. Adapt clock admission to retain this branch's signed date limits, bounded loop work, tracker acquisitions, sample consumption, diagnostics and periodic settings.

Upstream-PR: https://github.com/meshcore-dev/MeshCore/pull/3624
Upstream-Commit: 1ac389bbef0084623a3115c526156ae8f414d3ea
Upstream-PR: https://github.com/meshcore-dev/MeshCore/pull/3625
Upstream-Commit: 72ed4dcf08869c6900ef579e7af1b28471a86895
Upstream-PR: https://github.com/meshcore-dev/MeshCore/pull/3626
Upstream-Commit: 499727a71c564a7b5d451b8f480d940e185fe742

Co-authored-by: nullrouten0 <201262769+nullrouten0@users.noreply.github.com>
2026-10-17 19:53:08 -07:00
mikecarper 55f67f9062 Fit Mini Repeater with approved optional service cuts 2026-10-17 19:35:05 -07:00
mikecarper b2a8245199 Bound SH1106 retry allocations and verify ESP32 Full RAM 2026-10-17 17:59:33 -07:00
mikecarper 55960cebdc Recover nRF OTA RAM without reducing catalog or staging capacity 2026-10-17 15:50:17 -07:00
mikecarper 5ee9ceeb20 Protect nRF SD OTA authorization RAM from source-only stores 2026-10-17 15:35:34 -07:00
mikecarper 9c3df94f99 Honor periodic OTA cadence after the four-beacon startup burst 2026-10-17 15:12:59 -07:00
mikecarper 97be2b9b21 Delay displayed radio preamble advice for two minutes 2026-10-17 14:45:33 -07:00
mikecarper 64a928d18f Reduce Indicator radio expander traffic with guarded IQ reuse 2026-10-17 14:19:42 -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 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 5bdc6de0ed Sleep ST7735 controllers before releasing display power 2026-10-17 11:02:29 -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 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 135d361368 Require fresh complete GPS observations before clock synchronization 2026-10-16 19:48:34 -07:00
mikecarper 31a53b1f4a Preserve stalled USB recovery after a cancelled watchdog reboot
Restart the retry interval without treating queue cleanup as completed USB transmission. Cover cancellation journals, fresh recovery deadlines, real progress and rollover, with historical policy and runtime negative controls.
2026-10-16 19:25:15 -07:00
mikecarper 0dcba50d88 Reject unsupported RXPS before changing suspended scan policy
Keep rejected power-saving requests from changing radio2's saved RX policy or timings. Exercise actual CLI, scan restoration and calibration sleep guards with semantic negative controls.
2026-10-16 19:17:22 -07:00
mikecarper 57ca55f98f Keep expired beacon RF-start guards retired across uptime rollover 2026-10-16 18:09:12 -07:00