Skip to content

Releases: rogovogor/MeshCore

Room Server Firmware v1.15.0b5

15 May 09:43

Choose a tag to compare

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

15 May 09:44

Choose a tag to compare

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

15 May 09:41

Choose a tag to compare

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

12 May 08:44

Choose a tag to compare

Changelog:
Add Cyr2lat option by HDDen:cyr2lat_pr
Uni build for all wifi companions
Fixes nrf clocksync

Companion Firmware v1.15.0b9

09 May 08:07

Choose a tag to compare

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 с):

Read more

Companion Firmware v1.15.0b8

05 May 23:20

Choose a tag to compare

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

05 May 00:36

Choose a tag to compare

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

28 Apr 19:54

Choose a tag to compare

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

28 Apr 19:47

Choose a tag to compare

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

28 Apr 19:50

Choose a tag to compare

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