Commit Graph
225 Commits
Author SHA1 Message Date
mikecarper dcdce7b656 Make T114 screen detection the default firmware and picker choice 2026-10-18 16:20:27 -07:00
mikecarper 22f4c5f5a1 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 652289ee82 Expand post-merge regressions and document qualification gaps 2026-10-17 21:41:47 -07:00
nullrouten0andClaude Opus 5.5 fef470de6c 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 fd1d80ef6d Fit Mini Repeater with approved optional service cuts 2026-10-17 19:35:05 -07:00
mikecarper 29787c0b2d Bound SH1106 retry allocations and verify ESP32 Full RAM 2026-10-17 17:59:33 -07:00
mikecarper baad17a1fe Protect nRF SD OTA authorization RAM from source-only stores 2026-10-17 15:35:34 -07:00
mikecarper 6921e0d364 Avoid flash load image for the empty contact-path cache 2026-10-17 11:57:05 -07:00
mikecarper e0096c5bb5 Fix T096 Companion runtime RAM with RGB332 framebuffer 2026-10-17 11:22:15 -07:00
mikecarper 71210f0a39 Consolidate onboard QSPI infrastructure build profiles 2026-10-16 23:42:10 -07:00
mikecarper bf07999e12 Retire internal-only SolarXiao Room release variants 2026-10-16 23:24:36 -07:00
mikecarper 1dc2d75ace Bound GPS UTC fields and accept variable time precision 2026-10-16 20:35:11 -07:00
mikecarper 1f80e1579b Keep RTTTL tones and queued speech running across timer rollover 2026-10-16 16:08:33 -07:00
mikecarper 16749091ff 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 3804bca99a Add adaptive RAK4631 SD storage to full firmware profiles 2026-10-16 01:18:26 -07:00
mikecarper 7916f144f2 Publish one auto-slot Station G3 firmware choice per profile 2026-10-15 22:30:37 -07:00
mikecarper aabbaf7eb7 Control Wio Tracker L2 GPS power and reserve display runtime RAM 2026-10-15 17:37:54 -07:00
mikecarper 88de438620 Add configuration-preserving Waveshare observer partition migration 2026-10-15 17:37:52 -07:00
mikecarper 4c51ef7341 Add opt-in RAK15002 SD firmware seeder with isolated SPI and cache regression tests 2026-10-15 15:10:44 -07:00
mikecarper ecd8e51f84 Merge observer firmware with persistent opt-in advert signature verification
Add Waveshare LR1121 observer recipes. Adapt observer advert verification to existing transactional CLI, append-only binary preferences and Companion NVS, preserving default file lengths and WiFi credentials. Reject oversized unsigned advert tails consistently with Mesh::onRecvPacket. Keep current BLE recovery and GPS claim accounting.
2026-10-15 13:45:27 -07:00
mikecarper 0be4c7488c Add bounded Morse receive and negotiated RS232 autosleep
Add native narrow-band CW capture, ACK-first remote sessions, retained LoRa-readable pages, checked restoration and transport-safe progress. Add stock-compatible negotiated heartbeat/autosleep and recovery. Include host regressions and identity-bound HIL runners; keep unverified faster tuning HIL-only and document outstanding hardware validation.
2026-10-13 01:24:39 -07:00
mikecarper 8c698dc2d1 Reduce nRF52 Companion flash and stream Reader chapters
Use a 960-byte constant-time Ed25519 base table, compact hash/scalar code and unused-library trims while retaining Reader, BLE P-256 and the 8 KiB stack. RAK4631 Full saves 57,496 flash bytes and 3,152 static RAM bytes versus preview3.

Support complete chapters and verse ranges with bounded app continuation replies and cooperative terminal output. Use nonblocking TCP writes under reader backpressure. Add scalar/signature comparisons and a linked ARM crypto/stack CI gate.

Validated clean RAK4631, T1000-E, T096 and V4 Full builds, host regressions, and physical RAK chapter/reconnect and signing comparisons. Physical signing averages 35.9 ms versus 14.4 ms with the original table.
2026-10-13 01:02:30 -07:00
mikecarper 9ce2a076eb Include and qualify Meshtext in RAK4631 Full Companion
Port Meshtext settings to verified atomic nRF52 storage and use the existing radio RNG and hardware entropy. Keep the ExtraFS boundary, GPS, contacts, channel count and 8 KiB stack unchanged; omit unused library data to fit the image. Require linked codec and Companion transport evidence and build the real RAK Full profile in CI. Add configuration and storage-failure regression coverage.
2026-10-12 22:39:00 -07:00
mikecarper a31b19ed8a Shorten firmware picker selection links and keep original download names
Replace the download-file shortcut approach with compact self-contained picker URLs under /p/. Preserve long-link compatibility, selected install formats, and full published firmware filenames. Cover selection round trips and the redirect in the picker tests.
2026-10-12 22:02:20 -07:00
mikecarper 3e0ce84486 Publish immutable short firmware download links
Mirror pinned GitHub release bytes at shorter version-specific Pages URLs. Verify size, SHA-256 and firmware format before publishing, and preserve deployed alias identities across later site builds.

Add RAK4631 Full Companion 1.17.1.10 preview2 UF2 and native DFU ZIP aliases, a short-download directory, documentation and CI regressions. Existing flashing tools use the ZIP URL without losing board-family checks.

Validation: 16 short-link and Pages guard regressions, hosted-doc routing tests, firmware picker tests, full MkDocs build and exact UF2/ZIP byte checks.
2026-10-12 21:47:08 -07:00
mikecarper cbafd44047 Add verified USB-only ESP32 partition migration bridges 2026-10-11 13:28:23 -07:00
mikecarper f304b8ff77 Add Meshtext Companion channel chat and automatic radio2 setup 2026-10-11 02:08:02 -07:00
mikecarper d11bf3615d Count runtime WiFi memory in every ESP32 MQTT profile 2026-10-10 15:46:53 -07:00
mikecarper 937f8610c7 Fix MQTT recovery admission and retained client buffer sizing 2026-10-10 15:29:50 -07:00
mikecarper 5a031f7674 Reserve SDK client startup memory before MQTT TLS admission 2026-10-10 15:09:19 -07:00
mikecarper 7acc637468 Preserve MQTT TLS connection time and internal DMA headroom 2026-10-10 14:43:57 -07:00
mikecarper d031609f26 Improve room retention, moderation and local browser access
Add opt-in bounded chat history, persist explicit room ACL roles, enforce full-key bans and per-user quotas, and provide versioned information-board reads plus an ESP32 local room page. Preserve stored evidence on faults and withhold room delivery acknowledgments when a Companion cannot retain the message.

Exercise production handlers and filesystem fault recovery, pinned official-app JavaScript, real Chromium interactions, and representative ESP32, nRF52, RP2040 and STM32 builds. Add regression suites and bounded browser-workspace RAM reservations to CI.
2026-10-09 23:44:00 -07:00
mikecarper ddf625e9d0 Fix packet, delivery, clock and radio stability regressions
Reject truncated anonymous reply paths and advert metadata before copying,
while preserving timestamp-only empty-password logins. Limit room posting to
read-write/admin ACL roles, retain inbox frames until the requesting transport
accepts them, and lock raw LittleFS traversal against concurrent writes.

Separate ISR event generations from main-loop radio state. Confirm RX/TX IRQs,
detach concrete wrapper callbacks safely, and discard inconsistent LR2021 FIFO
snapshots before rearming. Preserve bridge RX frames through packet-pool
exhaustion and bound ESP-NOW retries and missing-callback recovery. Screen RTC
register layouts without losing DS1307 startup, and ignore poisoned future
contact timestamps during clock bootstrap.

Keep the nRF52 loop stack at 8 KiB while reducing the OTA listing call chain
from 7,832 to 6,056 static bytes. Retain all target names through lossless Full
Companion compression and the canonical size optimizer. Preserve constrained
STM32 filesystems and bind corrected ESP32 UART/OLED budgets to source size
assertions. Document the separately measured preexisting W12 package limits.

Adapted for this branch from meshcore-dev/MeshCore PRs #3521, #3340, #3362,
#2062, #3503, #3038, #3534, #3544 and #3512.

Validation: 1,829 native tests; sanitized parser, inbox, LittleFS, ACL, clock,
RTC, IRQ/FIFO and bridge fault tests; 332 additional Companion cases; real
RAK4631 Full and both repeater profiles, G2 Full/standard, V3 Full and both
constrained STM32 release recipes. Radio-family compile coverage continues
separately; W12 full/portable package guards remain enforced.
2026-10-09 19:56:08 -07:00
mikecarper 7a463937ca Reduce shared RAM usage without lowering firmware capacities
Specialize repeater ACL session state, compact recent and flood records, stream Merkle proofs, and release cold OTA buffers safely. Preserve saved formats, stack sizes, table capacities, and OTA source limits. Account for lazy buffers when active and add compatibility, ARM alignment, allocation failure, and queued-response tests.

Validated six representative board/role builds, 1736 native test cases, sanitizer fixtures, and strict documentation. Document the preexisting Wio-E5 Mini flash overflow separately.
2026-10-08 14:41:16 -07:00
mikecarper df88a6ef95 Add opt-in combined RAK4631 Ethernet test image
Keep Full sensors, UART2, adaptive OTA storage and the 8 KiB loop stack. Arbitrate shared SPI and OTA workspace ownership, move network waits into a worker, and use bounded queued TCP operations. Add reproducible test configs, RAM checks and regression coverage. Validated the Full build, UF2 layout and 29 sanitizer runtime scenarios.
2026-10-08 13:53:31 -07:00
agessaman e53755a5a9 feat(mqtt): add opt-in advert signature check before publishing
Received packets are uploaded before Mesh::onRecvPacket validates them, so
an advert corrupted over the air that still passes the LoRa CRC is published
with a mangled name or location. `set mqtt.advert.verify on` verifies each
received advert's Ed25519 signature (same message layout as Mesh.cpp,
including the 32-byte app-data clamp) and skips publishing failures.

Defaults off so collectors keep seeing RF corruption on the mesh. Dropped
adverts are counted as badsig= in `get mqtt.stats`. Exposed in the web
config Publishing card and persisted as mqtt.advert_verify in prefs JSON.
2026-10-07 20:07:36 -07:00
mikecarper 4bbd613417 Publish 1.17.1.9 USA Cascade picker and Mesh America catalogs
Point both stable providers and runtime controls to the validated v1.17.1.9-halo-keymind-cascade-dev-88c85108 family. Record completed package validation while retaining hardware coverage limitations. Give all documentation source pages their exact hosted links and mount the telemetry form only in the browser. Verify current combined Full and nRF52 Full/Reduced catalog fixtures.
2026-10-07 13:56:17 -07:00
mikecarper 7d0984cc90 Merge observer DNS diagnostics and complete resolver restoration 2026-10-06 12:58:28 -07:00
mikecarper 08bf174ea3 Merge branch 'keymindCascade' of github.com:mikecarper/MeshCore into keymindCascade 2026-10-06 10:23:28 -07:00
mikecarper db42a998f8 Publish Full-only ESP32 node releases and separate migration tools 2026-10-06 10:14:54 -07:00
mikecarper 2ad479ce0e Merge branch 'keymindCascade' of github.com:mikecarper/MeshCore into keymindCascade 2026-10-06 09:43:16 -07:00
mikecarper 2ee62b9814 Fix V4 setup AP startup and pre-AP network scans 2026-10-06 09:40:28 -07:00
mikecarper 3baa169fc6 Preserve qualified release artifacts across resumed builds 2026-10-06 09:19:02 -07:00
mikecarper 8af0511f54 Preserve separate TLora Full transports within RAM budget 2026-10-05 18:33:34 -07:00
mikecarper 51d74a200e Retain independent RS232 in Full MQTT repeaters 2026-10-05 18:21:42 -07:00
mikecarper 5f10e7d601 Include runtime ESP-NOW in Full ESP32 repeaters 2026-10-05 17:33:02 -07:00
mikecarper 7ef67c49f5 Combine MKE S3 repeater bridge modes at runtime 2026-10-05 17:12:10 -07:00
mikecarper 30fe0d617b Unify Tower repeater builds on SD-primary OTA storage
Keep the deployed SD target and layout, select qualified internal delta storage when no card is usable, and retain exact SD bootloader-update gates. Add storage, capability, transfer, recipe, and release-selection regression coverage.

Also preserve mandatory runtime packet logging in canonical XIAO images when verbose build debugging is disabled, fixing the four stopped release-matrix qualification failures.
2026-10-05 16:38:30 -07:00
mikecarper 163364e528 Guard startup resets in the pinned Arduino 3.1.3 HWCDC driver 2026-10-05 13:08:55 -07:00
mikecarper a4e3a530cb Capture HWCDC startup resets in the pinned Arduino 3.3.11 driver 2026-10-05 12:59:37 -07:00