Releases: rogovogor/MeshCore
Room Server Firmware v1.15.0b5
room-server-v1.15.0b5
-
Исправлена потенциальная запись за пределы буфера при обработке входящих пакетов:
длина данных теперь проверяется перед записью нулевого терминатора
(затрагивает onPeerDataRecv и onGroupDataRecv — оба пути) -
Исправлена ошибка setChannel: счётчик num_channels корректно обновляется
при установке канала по индексу (ранее каналы могли быть невидимы после сохранения) -
Добавлена команда
timesync— статус синхронизации времени -
Исправлена ошибка
regionкоманды на устройствах без карты регионов -
LPCOMP low-voltage shutdown: корректное завершение при просадке батареи
-
Учитывается наличие внешнего питания (USB + низкая батарея → shutdown)
-
BaseSerialInterface: добавлен метод disconnect()
-
SerialBLEInterface: disconnect() переопределён через override
Repeater Firmware v1.15.0b5
repeater-v1.15.0b5 - Добавлена команда `timesync` — выводит статус синхронизации времени (количество синхронизаций, последнее значение, буфер advertов) - Исправлена ошибка `region` команды на устройствах без карты регионов (вместо краша возвращается сообщение "Regions not supported on this device") - LPCOMP low-voltage shutdown handler: при падении напряжения батареи ниже порога устройство корректно завершает работу (предотвращает brownout loop на солнечных сборках) - Учитывается наличие внешнего питания: shutdown срабатывает только если нет USB или напряжение батареи < 3000 мВ - BaseSerialInterface: добавлен метод disconnect() с дефолтной реализацией - SerialBLEInterface: disconnect() явно переопределён через override
Companion Firmware v1.15.0b12
B12:
fix: add eInk anti-ghosting strategy for GxEPD2 display driver
Same approach as E290/E213: periodic full refresh every
EINK_FULL_REFRESH_INTERVAL frames (default 20) and proper
hibernation on turnOff(). GxEPD2 hibernate() puts the controller
in deep sleep; _init is reset so turnOn() re-initializes the
controller on next wake.
B11:
fix: BLE PIN persistence on ESP32 + NRF52 BLE flash/stack fixes
Исправления (ESP32)
BLE PIN не сохранялся после перезагрузки (e290, e213, V3, uni-варианты)
В uni-сборках (WITH_WIFI_SWITCHING, без BLE_PIN_CODE) initCommsFromPrefs()
при каждом старте перезаписывала _prefs.ble_pin случайным значением поверх
загруженного из flash. В ble-сборках — если BLE был подключён в момент reboot,
старый код пропускал сохранение.
initCommsFromPrefs(): проверяет _prefs.ble_pin != 0 перед генерацией
случайного — сохранённый пин восстанавливается корректно
loop()/CMD_REBOOT/CMD_POWEROFF: ble_busy = false на ESP32 (на ESP32 нет
конфликта flash/BLE, defer был лишним)
SPIFFS.end() перед esp_restart() — чистое размонтирование FS перед ресетом
Новые CLI-команды: get ble.pin, set ble.pin <число>, pin (показывает оба пина)
Исправления (NRF52 — T114)
Зависание flash-операций при активном BLE (S140 v6.1.1)
S140 не гарантирует NRF_EVT_FLASH_OPERATION_SUCCESS во время BLE-соединения.
Прямой savePrefs() в обработчике BLE-команды блокировал loop_task на семафоре
portMAX_DELAY.
Все прямые savePrefs() в handleCmdFrame/handleCliCmd/CLI-callbacks/Cyr2Lat
заменены на отложенную запись через dirty_prefs_expiry (2 сек)
loop() lazy-write: на NRF52 пропускает сохранение если BLE подключён, повтор
через 1 сек
CMD_REBOOT на NRF52: откладывает reboot если BLE активен; loop() выполняет
запись после дисконнекта через _serial->disconnect()
Добавлен deadline 30 сек для механизма отложенной перезагрузки/выключения
BaseSerialInterface: добавлен virtual disconnect() (no-op по умолчанию)
Переполнение стека в remote CLI (NRF52)
chunks[8][152]+buf[512]+cmdBuf[256] на стеке loop_task (4096 байт FreeRTOS)
вызывали hard fault при получении любой remote CLI команды.
Исправление: chunks/buf/cmdBuf объявлены static.
BaseChatMesh: защита от выхода за границы в onPeerDataRecv и onGroupDataRecv.
Companion Firmware v1.15.0b10
Changelog:
Add Cyr2lat option by HDDen:cyr2lat_pr
Uni build for all wifi companions
Fixes nrf clocksync
Companion Firmware v1.15.0b9
What's new in v1.15.0b9
Dynamic WiFi / BLE / USB switching (WITH_WIFI_SWITCHING)
Новый унифицированный вариант прошивки *_companion_radio_uni (17 платформ) заменяет отдельные сборки _ble / _usb / _wifi. Все три транспорта скомпилированы в одну прошивку; активный интерфейс меняется в рантайме без перепрошивки.
Выбранный режим сохраняется после перезагрузки (SPIFFS /wifi_prefs).
Поддерживаемые платформы (новые *_uni envs)
Heltec E213 / E213 Screen-180 / E290 / E290 Screen-180 / Wireless Paper / Wireless Paper Screen-180 / v2 / v3 / WSL3 / v4 / v4 TFT / Tracker v2 · LilyGo TBeam 1W / TBeam S3 Supreme / TLora V2.1 · nibble Screen Connect · RAK 3112 · Station G2 · ThinkNode M2 / M5 · Xiao C3 / Xiao S3 WIO
Settings → Comms
Новый пункт Comms в каруселе Settings (только с WITH_WIFI_SWITCHING).
> Comms BLE
> Comms WiFi ... (подключение)
> Comms WiFi OK (подключён)
> Comms USB
При нажатии — WiFi sub-screen с асинхронным сканом (~2–4 с):
Companion Firmware v1.15.0b8
Companion CLI (WITH_COMPANION_CLI)
Two modes for controlling the node remotely without a serial connection:
Remote CLI (PM + PIN)
Send a private message <PIN> <command> to the node. PIN is derived from the node identity and printed to Serial at boot. All standard CLI commands are supported; long replies are split into chunks.
TerminalCLI (channel)
A "TerminalCLI" channel is auto-registered on first boot. Send commands there — they are handled locally, no LoRa traffic. Useful when connected via BLE/WiFi/USB through the companion app.
Settings page (OLED and e-ink, one-button navigation)
New Settings tab in the home screen carousel. Long-press to enter edit mode; short-press to scroll through items; double-press to exit.
| Setting | Values | Description |
|---|---|---|
| CLI Chat | C+P / cht / PM / OFF | Enable Remote CLI (PM) and/or TerminalCLI at runtime |
| CLI PIN | action | Reveal PIN on-screen for 3 s |
| Timesync | a+g / adv / gps | Network time-sync sources |
| PM CLOK | all / PM | Message behavior on CLOCK page |
| CLOK DIM | AOF / USB / AON | Display auto-off on CLOCK page |
CLOCK page on OLED
CLOCK was previously e-ink only (size-8 font = 240 px, too wide for 128 px screen).
OLED now uses size-3 font (90 px): displays HH:MM, date, and time-sync source.
PM inline on CLOCK page (OLED and e-ink)
Private messages received while on the CLOCK page are shown inline — sender name, separator, message text. Press next to dismiss and return to the clock. Configurable: PM-only (default) or all messages.
Fixes
- hop-count: correct count for 2-byte patch-addressed packets
- LPCOMP (ProMicro / nRF52): runtime low-voltage shutdown when USB-powered and battery drops below 3000 mV
- UF2 build: automatic UF2 generation restored for nRF52 targetsrefactor: CLOK DIM — simplify to ON/OFF (remove USB mode)
Companion Firmware v1.15.0b6
Companion CLI (WITH_COMPANION_CLI)
Two modes for controlling the node remotely without a serial connection:
Remote CLI (PM + PIN)
Send a private message <PIN> <command> to the node. PIN is derived from the node identity and printed to Serial at boot. All standard CLI commands are supported; long replies are split into chunks.
TerminalCLI (channel)
A "TerminalCLI" channel is auto-registered on first boot. Send commands there — they are handled locally, no LoRa traffic. Useful when connected via BLE/WiFi/USB through the companion app.
Settings page (OLED and e-ink, one-button navigation)
New Settings tab in the home screen carousel. Long-press to enter edit mode; short-press to scroll through items; double-press to exit.
| Setting | Values | Description |
|---|---|---|
| CLI Chat | C+P / cht / PM / OFF | Enable Remote CLI (PM) and/or TerminalCLI at runtime |
| CLI PIN | action | Reveal PIN on-screen for 3 s |
| Timesync | a+g / adv / gps | Network time-sync sources |
| PM CLOK | all / PM | Message behavior on CLOCK page |
| CLOK DIM | AOF / USB / AON | Display auto-off on CLOCK page |
CLOCK page on OLED
CLOCK was previously e-ink only (size-8 font = 240 px, too wide for 128 px screen).
OLED now uses size-3 font (90 px): displays HH:MM, date, and time-sync source.
PM inline on CLOCK page (OLED and e-ink)
Private messages received while on the CLOCK page are shown inline — sender name, separator, message text. Press next to dismiss and return to the clock. Configurable: PM-only (default) or all messages.
Fixes
- hop-count: correct count for 2-byte patch-addressed packets
- LPCOMP (ProMicro / nRF52): runtime low-voltage shutdown when USB-powered and battery drops below 3000 mV
- UF2 build: automatic UF2 generation restored for nRF52 targetsrefactor: CLOK DIM — simplify to ON/OFF (remove USB mode)
Room Server Firmware v1.15.0b4
Feat: repeater time sync from advert timestamps
Repeaters without GPS/RTC lose time on reboot. This adds a quorum-based
time sync algorithm that collects verified advert timestamps into a ring
buffer and adjusts the clock when enough sources agree.
Fast initial sync: 3/5 quorum, sets clock from zero
Drift correction: 7/10 quorum, corrects drift >120s
Bounded jump: max 3600s per correction
Rejects timestamps outside [2020, 2050] range
Ed25519 signature already covers timestamp (mesh layer)NRFpower management 4 all NRF
Add runtime ADC multiplier support for ESP32 boards
generic e22 add e22p imp
Repeater Firmware v1.15.0b4
feat: repeater time sync from advert timestamps
Repeaters without GPS/RTC lose time on reboot. This adds a quorum-based
time sync algorithm that collects verified advert timestamps into a ring
buffer and adjusts the clock when enough sources agree.
- Fast initial sync: 3/5 quorum, sets clock from zero
- Drift correction: 7/10 quorum, corrects drift >120s
- Bounded jump: max 3600s per correction
- Rejects timestamps outside [2020, 2050] range
- Ed25519 signature already covers timestamp (mesh layer)NRFpower management 4 all NRF
Add runtime ADC multiplier support for ESP32 boards
generic e22 add e22p imp
Companion Firmware v1.15.0b4
Feat: time sync from advert timestamps
This adds a quorum-based
time sync algorithm that collects verified advert timestamps into a ring
buffer and adjusts the clock when enough sources agree.
Fast initial sync: 3/5 quorum, sets clock from zero
Drift correction: 7/10 quorum, corrects drift >120s
Bounded jump: max 3600s per correction
Rejects timestamps outside [2020, 2050] range
Ed25519 signature already covers timestamp (mesh layer)NRFpower management 4 all NRF
Add runtime ADC multiplier support for ESP32 boards
generic e22 add e22p imp