Skip to content

Firmware v20260616.202853

Latest

Choose a tag to compare

@github-actions github-actions released this 16 Jun 20:29
· 1 commit to master since this release

ZephCore v1.16.2-zephyr

Important

Before you upgrade — please read

This release changes where devices store their BLE pairing data. The change affects all platforms, but the upgrade steps differ:

All boards (nRF52 and ESP32): you must re-bond. Existing phone/desktop pairings will not carry over. After flashing, remove the old pairing from your device's Bluetooth settings (and from the ZephCore app), then pair again from scratch.

nRF should update cleanly, but I recommend doing a flash erase + flash fw + import backup to be absolutely sure. Formatters can be found in the repo's formatter folder. Check your softdevice version before using one.


Highlights

Critical fix: ESP32 Bluetooth pairing restored

On the updated Zephyr 4.4.1 base, ESP32 boards could advertise but never completed pairing — the Espressif Bluetooth controller would assert the moment a phone began to pair. This release restores the controller's link-layer encryption so pairing works again. If you have an ESP32-based node (Heltec, XIAO, Station G2, T-Beam, etc.), this is the fix you've been waiting for.

Additionally, Android "connect from app" now works on ESP32. Advertising now always exposes the stable identity address, so the Android companion app's in-app connect flow succeeds while iOS pairing continues to work.

BLE pairing data moved to its own storage area

Bluetooth bonds previously shared the same filesystem as your identity, preferences, and contacts. They now live in a dedicated, isolated storage partition (NVS) on both nRF52 and ESP32. This means a busy pairing store can no longer corrupt your contacts or settings, and pairing writes never touch your user data.

A factory reset (erase) now also clears stored BLE bonds, then reboots automatically so everything comes back up clean — previously bonds could survive an erase.

New board: Heltec Wireless Tracker V1.1 (ESP32-S3 + SX1262), thanks to @seagull9000

Full support for the Heltec Wireless Tracker V1.1 companion (ESP32-S3 + SX1262 radio + ST7735R TFT + UC6580 GPS), including:

  • Correct battery ADC routing (avoids a wiring conflict in the upstream board definition that otherwise broke all LoRa SPI reads)
  • Battery voltage/percentage readings
  • Onboard GNSS
  • Status-LED heartbeat
  • OLED/TFT display and BLE companion transport

New board: LilyGo T-Beam v1.2 (SX1262)

Full support for the classic-ESP32 LilyGo T-Beam v1.2 with the SX1262 radio, including:

  • AXP2101 power management (LoRa + GPS rails brought up automatically at boot)
  • Battery fuel-gauge readings over I2C — accurate battery voltage and percentage, even though this board has no battery ADC
  • Onboard GNSS (NEO-6M / NEO-M8N)
  • The user button wired up (short press = page/select, long press = action)
  • OLED display, BLE companion transport, and CLI-based repeater mode

Note: classic-ESP32 repeaters (e.g. T-Beam) run CLI-only and do not include WiFi-AP OTA — the WiFi driver buffers plus OTA heap don't fit the classic ESP32's RAM. ESP32-S3 / C-series repeaters keep WiFi OTA.

E-paper anti-ghosting

E-paper displays now perform a periodic full refresh (every 8 partial updates by default) to clear the faint "ghost" images that build up where text changes most often, like the status bar. The interval is configurable build-time, and the feature is automatically ignored on OLED/TFT screens that don't ghost.

More reliable companion connection (Linux / native transport)

The native TCP transport now applies the same congestion control already used over Bluetooth. Instead of silently dropping data when the connection is briefly saturated (for example, an incoming message arriving during a large contact/channel import), it now back-pressures and retries, and important protocol responses are never dropped. A stalled peer that stops reading is cleanly disconnected instead of hanging the node.

Consistent adverts from every trigger

Sending an advert from the device button or the on-screen menu now behaves exactly like sending one from the mobile app — it correctly honors your path-hash mode and region scope. Previously, button/menu adverts could bypass those settings.

Other fixes and improvements

  • Fixed password storage bug. The password and guest.password CLI commands now correctly null-terminate the stored value, preventing a possible mismatch on later comparison.
  • Updated Zephyr base to 4.4.1 and synced with upstream MeshCore dev.
  • ESP32 debug builds now log over the USB/UART console with appropriately sized buffers, instead of expecting nRF-style J-Link/RTT hardware.

Recommended Upgrade checklist (recap)

  1. Back up contacts, channels, and identity; flash the updated formatter UF2 / erase flash command for ESP.
  2. Flash v1.16.2-zephyr firmware.
  3. Remove the old BLE pairing on phone/computer and re-bond.
  4. Restore your data.