Commit Graph
283 Commits
Author SHA1 Message Date
mikecarper 088c88507a Add two-profile LoRa operation and radio CLI regression coverage
Implement radio2, tempradio2, radioat2 and tempradioat2 across Mesh roles,
with RX-only/RX+TX operation, optional preambles and persistent cross-TX
policy. Keep temporary OTA traffic on its profile by default and maintain
independent retry ownership and backoff for each profile.

Use slow-first receive scanning with 4.8-symbol visits and automatic
preambles rounded up in steps of eight. Preserve pending RX, restore power
saving on exit, and discard work bound to changed or expired profiles.

Restore the infrastructure path.hash.mode setter and report unsupported
extra.sf settings consistently. Add CLI, scheduling, scan and retry tests,
setup documentation, and the V4/XIAO hardware validation results.

Validation: 1,422 native tests, eight KISS tests, 63 final focused profile
tests, 18 checks from the staged source, sanitizer-enabled OTA transfers,
and builds for V4 Mesh roles, Full XIAO Companion and nRF52 T1000-E.
Hardware checks cover reception, cross-TX policy, expiry, reboot and OTA
discovery while receiving main-channel adverts.
2026-09-13 08:25:00 -07:00
mikecarper 2b4a35adb7 Make repeater RX watchdog MeshCore-aware and tune temporary radio
Use RX-only radio recovery and feed the repeater reboot watchdog after MeshCore parsing. Default to 24 hours, apply temporary watchdog and advert intervals in RAM, and report temporary durations as days, hours, and minutes. Add regression coverage and an ESP-NOW bridge setup guide.
2026-09-11 22:10:13 -07:00
mikecarper 1a074116e8 Merge PR #7 with reviewed ExpressLRS power and memory fixes
Integrate ExpressLRS TX module support and its stacked ESP32 heap changes.
Use the approved Linkflow calibration (17-30 dBm), preserve the PA drive
and output path after radio recovery, and keep LoRa OTA enabled.

Preserve stored ACLs and filters on allocation failure, release owned
client/filter buffers, service heap OTA contexts on Companions, release
self-serving workspaces after TempRadio, and reset staged-resume state
when a context is released. Keep manual staging and active operations
alive. Account for all moved allocations in the runtime RAM gate.

Validation: 1,393 native cases; radio-power, heap-context, ACL persistence,
shared-queue transfer, display/inbox, radio receive, and memory regressions.
Firmware builds passed for Linkflow, Heltec V2 Companion, T-Beam MQTT
repeater, Heltec V4 R8 MQTT repeater, RAK4631 repeater, and Indicator Full.
Physical verification awaits access to the currently offline lab Pi.
2026-09-10 22:06:16 -07:00
mikecarper bbfe26b01d Separate Companion message history from pending inbox
Default to retained history with a separate pending count, and add persistent display.inbox CLI modes for history, pending, and unread. Preserve browsing while clients are connected and show the active USB or Bluetooth connection.

Fixes #5
2026-09-10 21:42:57 -07:00
mikecarper 96ef0ae905 Add configurable battery and USB display behavior
Persist separate display modes and timeouts in seconds for battery and USB power, expose four controls in WebConfig and CLI, and apply one shared policy across display-equipped roles.

Detect R8 external power from a USB host or calibrated battery voltage above 4.21 V, with cached sampling and hysteresis. Add policy, persistence, browser, and R8 power-detection regression coverage.
2026-09-10 21:03:15 -07:00
mikecarper 3d4432e848 Restore clearing all neighbors with an empty prefix
Accept the upstream empty-prefix neighbor.remove command after whitespace normalization while preserving invalid-key checks. Cover repeater and room-server removal paths with regression tests.

Fixes #8
2026-09-10 19:33:54 -07:00
mikecarper 741e20edc0 Consolidate duplicate Full infrastructure builds 2026-09-10 19:33:54 -07:00
mikecarper 6955097f2a Reject standby RSSI during noise calibration 2026-09-10 14:17:51 -07:00
mikecarper 9c3b57eaa2 Keep sustained off-SF traffic out of the background noise estimate
Hardware captures show that a median and lower quartile can follow the interferer while the 12.5th percentile retains the quiet floor. Use that estimate with existing weighting and bounded rise recovery. Wait for settling after every RX re-arm and allow thirty seconds for a complete idle-sample block.

Add captured-sample, low-tail limitation, and real CLI setter regressions. Preserve RXPS intent when parsing an off command with trailing whitespace. All 162 native cases and 24 Python regressions pass.
2026-09-10 13:52:21 -07:00
mikecarper a60a6a1f60 Merge PowerSaving-v17 and harden noise calibration and RX recovery
Port the measured RXPS model without changing Cascade wire preambles or automatically enabling experimental levels. Use a spaced weighted median with bounded calibration windows, preserve packet ownership across CAD, and check actual SX126x receive mode before recovery.

Preserve Cascade sleep and radio fixes, integrate the new sensor and board profiles, and correct BSEC script inheritance and the MKE UART pin conflict. Native regressions, production-method/SPI harnesses, and ESP32, nRF52, and STM32 builds pass. Hardware comparison and fault-injection validation are recorded privately.
2026-09-10 13:19:22 -07:00
mikecarper 499e5bc94a Escalate coding rate on hop-zero flood retries 2026-09-10 11:17:58 -07:00
mikecarper b8ecd7fcac Allow authenticated LoRa admins to read paged ACLs 2026-09-10 07:40:34 -07:00
mikecarper 395a440982 Add CLI listings for rate-limited flood adverts
List limited public-key prefixes, reasons, and wait times in bounded pages, with full-key details for targeted clearing. Queries preserve quotas and recovery timers.

Validated with 71 native tests, Full repeater and room-server builds, and a 909.500 MHz RF test covering 10 forwarded adverts, 2 blocked adverts, and forwarding after targeted clear.
2026-09-10 04:18:17 -07:00
mikecarper 590d40a050 Fix inherited nRF52 USB READY hang in build-local TinyUSB driver 2026-09-10 02:37:15 -07:00
mikecarper 9d58d66fb7 Fix touchscreen navigation and add runtime touch diagnostics 2026-09-09 17:38:41 -07:00
mikecarper 1a40a6420c Limit flood advert forwarding and persistent abuse 2026-09-09 17:16:00 -07:00
mikecarper 7241adb146 Fix PIN spacing and keep message navigation hints visible
Use measured text rows for companion and repeater layouts, retain the V4 6px footer, and add overlap and navigation regressions. Correct the MQTT logging sleep documentation contract test.
2026-09-09 10:20:22 -07:00
mikecarper 726598559a Add multi-tap channel navigation for messages 2026-09-08 22:47:15 -07:00
mikecarper ecf4ffb824 Allow frequency changes over authorized LoRa CLI 2026-09-08 22:07:30 -07:00
mikecarper 06c51fdef5 Allow local CLI maintenance across direct connections 2026-09-08 21:44:57 -07:00
mikecarper 001b4985f7 Allow explicit contact imports with discovery filters enabled 2026-09-08 20:07:25 -07:00
mikecarper 373c2daebe Enable the shared terminal on WiFi-only Companions 2026-09-08 19:56:12 -07:00
mikecarper c946adadfe Share the Companion terminal with the WiFi console 2026-09-08 19:48:15 -07:00
mikecarper 6fbc6bed19 Preserve MQTT settings across slot changes 2026-09-08 18:55:00 -07:00
mikecarper 4c8aad5b16 Unify device controls and restore the WiFi console 2026-09-08 18:36:23 -07:00
mikecarper cf4dc13c62 Add button navigation hints to the hidden John reader 2026-09-08 17:31:18 -07:00
mikecarper d89d28f7ed Merge origin/keymindCascade with companion button hints 2026-09-08 17:24:27 -07:00
mikecarper 5f25ae3bb3 Show button controls on companion home and message screens 2026-09-08 17:11:43 -07:00
mikecarper e5f8eb46a3 Fix bootloader version discovery and tolerate legacy OTA probes 2026-09-08 16:17:43 -07:00
mikecarper aab46c7c84 Use native display resolution and adaptive typography 2026-09-08 16:02:16 -07:00
mikecarper 272dc9aa4b Use readable 6px message font and keep 5px on tiny panels 2026-09-08 14:23:39 -07:00
mikecarper c0645fdc18 Use compact message text and sender lines on all small displays 2026-09-08 13:36:40 -07:00
mikecarper 9f3b48725d Add a V4 Picopixel message font trial with longer previews 2026-09-08 13:22:53 -07:00
mikecarper 2470bf9395 Enable dual WiFi OTA slots for the smaller 4 MiB NimBLE trials 2026-09-08 12:36:43 -07:00
mikecarper 4bd4a77989 Reset RX recovery deadline after successful transmissions 2026-09-08 12:35:37 -07:00
mikecarper 6db10c3986 Cache Full Companion paths and shared secrets to recover RAM 2026-09-08 12:21:30 -07:00
mikecarper f090cf19d7 Avoid nested MQTT preference copies on the Companion loop stack 2026-09-08 10:05:59 -07:00
mikecarper 35e9184c8a Add opt-in NimBLE Full Companion trials for V4 and XIAO S3 2026-09-08 09:30:31 -07:00
mikecarper d88b162f28 Restore the V4 WiFi setup QR with a one-pixel border 2026-09-08 09:30:31 -07:00
mikecarper db143c5ed4 Point Wireless Paper release catalogs to the 350-contact update 2026-09-08 08:17:28 -07:00
mikecarper 00015b8333 Restore Wireless Paper Full capacity with shared mOTA queue storage 2026-09-08 08:09:42 -07:00
mikecarper 9841e8440f Publish memory-corrected 1.17.1.5 catalogs and picker directions 2026-09-08 02:53:48 -07:00
mikecarper 0d7ca2d343 Gate every firmware build on runtime RAM and share nRF52 mOTA storage 2026-09-08 02:09:26 -07:00
mikecarper 2ea493994e Share T096 Full mOTA memory with the offline queue 2026-09-08 01:15:19 -07:00
mikecarper d28535f503 Add independent Companion Bluetooth stealth flag
Keep stealth separate from custom, saved-random and rotating MAC policies without migrating the development MAC mode. Persist authenticated peer state, guard advertising transitions and recovery, and expose the setting through the CLI and WebConfig.

Add regression and CI checks and record exact XIAO BLE pairing, reconnect, reboot and address-rotation hardware results.
2026-09-07 23:46:55 -07:00
mikecarper 8d72c3e3da Add configurable Companion Bluetooth addresses 2026-09-07 18:29:00 -07:00
mikecarper c7a249376e Document and test 1.17.1.5 USB logging sleep workaround 2026-09-07 16:55:28 -07:00
mikecarper 09639d7e02 Fix G3 USB sleep and two-minute button wake 2026-09-07 16:28:02 -07:00
mikecarper de97b7a413 Report nRF52 LoRa mOTA capabilities and storage requirements 2026-09-06 23:50:24 -07:00
mikecarper 8afa4fb8af Restore and share firmware picker selections through URLs 2026-09-06 21:43:13 -07:00