Commit Graph
2144 Commits
Author SHA1 Message Date
mikecarper 45fe38ff97 Merge upstream dev into keymindCascade 2026-09-26 22:01:28 -07:00
fdlamotte 1934a4988d Merge pull request #3202 from F4FPR/m6-power-observability
ThinkNode M6: expose external-power and charger state
2026-09-26 13:51:11 -04:00
fdlamotte 6c7acd2bb1 Merge branch 'dev' into gps-l76k-constellation-init-m6 2026-09-26 13:38:40 -04:00
fdlamotte 7d723fd17f Merge pull request #3200 from F4FPR/gps-diag-command
Add generic GPS UART and NMEA diagnostics
2026-09-26 13:34:34 -04:00
mikecarper 5802732811 Avoid missing Preferences namespaces on fresh ESP32 boot 2026-09-26 01:14:47 -07:00
mikecarper 9127f8fe25 Detect header W25Q16 on unified RAK firmware 2026-09-25 14:20:29 -07:00
mikecarper cecddf4bae Connect GPIO MISO during RAK NOR identification 2026-09-25 13:14:30 -07:00
mikecarper 284a67b9ec Drain companion queue on explicit OTA entry 2026-09-25 12:06:18 -07:00
mikecarper fca10471c3 Unify RAK repeater storage firmware and bootloader handoff 2026-09-25 10:35:04 -07:00
mikecarper 7a8bddda53 Advertise exact nRF52 DFU name and service 2026-09-25 08:38:39 -07:00
mikecarper 4362acf00b Bound nRF52 UF2 images and reduce repeater BLE DFU memory 2026-09-25 08:09:38 -07:00
mikecarper 51ed608951 Fix logging matrix firmware build failures 2026-09-25 00:37:38 -07:00
mikecarper 40a9843c24 Merge branch 'keymindCascade' of github.com:mikecarper/MeshCore into keymindCascade
# Conflicts:
#	test/test_nrf52_ble_startup.py
2026-09-24 17:36:09 -07:00
mikecarper 307e7bec02 Complete ESP32 partition expander and adaptive LoRa OTA pacing 2026-09-24 17:13:22 -07:00
mikecarper 640facd5a2 Safely hand off expanded ESP32 LoRa bridge without resume record 2026-09-24 12:17:49 -07:00
mikecarper c0ef07a968 Add LoRa partition migration recipes for ESP32 infrastructure boards 2026-09-24 10:40:32 -07:00
mikecarper e7f6d529a0 Expand ESP32 OTA partition migration across infrastructure roles 2026-09-24 10:01:14 -07:00
mikecarper 1e8ef78a2e Merge observer firmware branch into keymindCascade
Integrate compatible observer board, preset, WebConfig, display, CI, and policy updates. Preserve the checkout's newer MQTT binary preferences and WiFi bridge runtime where the forked implementations conflict. Keep ThinkNode observer networking WiFi-based until the Ethernet transport is wired into that runtime.
2026-09-24 01:20:56 -07:00
mikecarper 4176c92462 Merge PowerSaving-v17 into keymindCascade 2026-09-24 00:56:05 -07:00
mikecarper c31a0e5ed5 Merge upstream dev into keymindCascade 2026-09-24 00:51:07 -07:00
mikecarper c55022b001 Add in-place ESP32 Wi-Fi and LoRa partition migration packages 2026-09-23 22:12:45 -07:00
mikecarper 69c2e4855f Use nRF52 profile clock only for dual-radio scanning 2026-09-23 15:42:12 -07:00
mikecarper 1e1ee2618a Use precise T1000-E dual-profile timing 2026-09-23 15:31:43 -07:00
mikecarper dd0ce36176 Refresh nRF52 Companion BLE name without reboot 2026-09-23 14:12:37 -07:00
mikecarper 7de7fcf675 fix(nrf52): recover idle secured BLE links 2026-09-23 13:11:09 -07:00
mikecarper 5c4394edd8 Keep nRF52 Full Companion BLE subscriptions across reconnects 2026-09-23 03:19:58 -07:00
mikecarper ff50589b69 feat(cli): support relative minutes in radio schedules 2026-09-23 00:19:12 -07:00
mikecarper 47af95b4b2 Harden nRF52 filesystem recovery and flash writes 2026-09-22 15:17:39 -07:00
mikecarper 7e1f87dfbc Fix nRF52 flash completion and preserve recoverable ExtraFS 2026-09-22 09:29:05 -07:00
mikecarper 3282b7898e fix(nrf52): stabilize full companion bluetooth 2026-09-22 05:54:46 -07:00
ripplebiz 140178728b Merge pull request #3427 from Dom4n/feat/lr1110-dcdc-dev
Enable DC/DC for LR1110 radios
2026-09-22 17:57:09 +10:00
mikecarper 872e557db0 fix(esp32): remove case-colliding buffered radio HAL header 2026-09-22 00:35:03 -07:00
mikecarper 04697db82e feat(radio): calibrate dual-profile preambles from live switch timing 2026-09-22 00:09:37 -07:00
ripplebiz a76d511ff4 Merge pull request #3131 from liekmarflow/feature/board-api-hooks
Add board loop hook for periodic work
2026-09-22 16:43:18 +10:00
Wolfram Keil 61be70849a Add board loop hook for periodic work 2026-09-22 08:01:48 +02:00
mikecarper 8c7f4df1cd feat(radio): enable fast profile switching across direct SX1262 boards
Add acknowledged SetFs and packet-cache shortcuts for SX1262, extend the LR1110 FS-mode fast path with buffered SPI, and keep the expander-backed Indicator on its previous path. Include HIL fixtures, validation notes, and regression tests.
2026-09-21 22:57:22 -07:00
ripplebiz 5e9d80df38 Merge pull request #3464 from lbibass/lr1121_dcdc
LR1121 DC-DC & Misc Updates
2026-09-22 15:12:56 +10:00
mikecarper 90d8a7f3c4 fix(ota): recover corrupt companion settings stores 2026-09-21 18:35:57 -07:00
mikecarper 7bad5f9b30 fix(companion): recover radio profile settings after flash 2026-09-21 18:21:36 -07:00
mikecarper b089b745fa feat(ui): page radio and system status 2026-09-21 15:35:46 -07:00
Blake Latchford 0c3fe356d0 Constrain agc.reset.interval and allow intervals > 255s 2026-09-21 12:26:36 -04:00
fdlamotte f4ae72dc12 Merge pull request #3436 from Blake-Latchford/wio-e5-fix
WIO-E5 Fix: Pin Radiolab for stm32 and replace ltoa
2026-09-21 05:50:12 -04:00
ripplebiz 65737d48f4 Merge pull request #3402 from meshcore-dev/sensor-improvements
Sensor improvements
2026-09-21 19:03:18 +10:00
Ev Lbibass 84f1e11d29 update structure of LR1121 to match LR1110 files. Implement DC-DC on LR1121 radio. saves about 30% power consumption at idle. 2026-09-20 20:38:05 -04:00
Blake Latchford 12a8c8d4d4 Add missing include, and revert removal of lota 2026-09-20 15:16:33 -04:00
Liam Cottle 0886259701 Merge pull request #3108 from tjdownes/muzi-base
Add Muzi Base board support (Duo + Uno + SuperIO)
2026-09-20 22:56:32 +12:00
Adam Gessaman 1025128622 Merge pull request #59 from agessaman/feat/webconfig-board-commands
feat(webconfig): let the portal discover board-specific CLI commands
2026-09-19 21:38:09 -07:00
Adam Gessaman 76a770d8f1 Merge pull request #58 from agessaman/fix/observer-hostname-on-rename
fix(network): rebuild the DHCP hostname when the node is renamed
2026-09-19 21:37:32 -07:00
agessaman fdf299c3d0 fix(webconfig): publish the board probe safely and test the gap
Codex review of the previous commit found two real problems.

The routes go live in startLanMode()/startSetupMode(), one tick before
probeBoardCommands() first runs, so a status request can land in between.
That made _board_cmds a genuine cross-task race despite the comment
claiming otherwise, and — worse — let /api/status answer "no board
commands" before the board had been asked. The page reads status once,
so a browser that loaded in that window hid working FEM controls for the
whole session.

The probe result is now published and read under _mux, and /api/status
OMITS board_cmds until the probe has run, which is not the same as
reporting an empty list. The page treats the absent field as "not known
yet" and re-polls with backoff; the audit waits for it the same way,
rather than auditing a board it only half knows.

Probing from the start path instead would close the window, but
Callbacks::execCommand is documented as loop-task-only and `start
webconfig` is itself mid-handleCommand, so that trades a race for
re-entrancy.

The audit never executed fan.lo or fan.hi, which have no getter and so no
round-trip: they were only ever matched as strings. They now run for real,
including the four rejection paths, and the mock grew --probe-delay so the
retry path is exercised rather than assumed.
2026-09-19 21:08:54 -07:00
agessaman a1f3e2c3d3 feat(webconfig): let the portal discover board-specific CLI commands
The FEM commands moved out of CommonCLI into Board::handleCommand(), and
the T-Beam 1W fan control was added there too, but the portal never caught
up: `radio.fem.txgain` and the fan commands were missing from the terminal
table entirely, while `radio.fem.rxgain` was offered on every board even
though a board with no hook now answers "??:" rather than "unsupported".

Whether a node answers these is a property of the board, not of the build,
so the page cannot know from the firmware version. Ask the board instead:
probeBoardCommands() runs each candidate getter once on the loop task at
startup and keeps the ones that answer, which needs no per-variant list
because Board::handleCommand() already reports whether it handled a
command. /api/status names the survivors and the page hides everything
else, so adding a command to a variant means one entry in WC_BOARD_CMDS
rather than an edit per board.

The two FEM keys also become Radio-panel toggles, gated the same way;
their `set` reaches the board hook through the existing config batch, so
only the allowlist and /api/config needed to grow.

webconfig_cli_audit.py now scans variants/*/*Board.cpp for the boards that
actually build the portal, checks set-only keys in the reverse direction,
and verifies every gate is a command some board answers; the mock gained
--board-cmds so both shapes of board are testable. `stop ota` joins
NOT_OFFERED: `start ota` cannot run from the portal, so it has nothing to
stop.
2026-09-19 20:51:25 -07:00