mirror of
https://github.com/liquidraver/ZephCore.git
synced 2026-09-01 20:38:19 +00:00
bump to 1.16.5
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
> Your identity, contacts, channels, prefs, and BLE bonds are preserved. After this reflash, OTA and
|
||||
> app-updates work again.
|
||||
>
|
||||
> **nRF52, classic ESP32 (T-Beam / PICO-D4), STM32WL, and native Linux are unaffected** — upgrade as usual.
|
||||
> **nRF52, classic ESP32 (T-Beam / PICO-D4 / TTGO LoRa32), STM32WL, and native Linux are unaffected** — upgrade as usual.
|
||||
>
|
||||
> **From v1.16.2 / v1.16.3 / v1.16.4** — clean flash, no re-bond, bonds and data survive.
|
||||
>
|
||||
@@ -24,6 +24,8 @@
|
||||
|
||||
The headline of this release is **browser flashing via the Mesh America configurator** — and, in wiring
|
||||
it up, we found and fixed a bug that was silently breaking **WiFi-OTA on every ESP32-S3 / ESP32-C board**.
|
||||
Alongside it: **Adaptive CAD**, a self-tuning listen-before-talk that calibrates itself to each site;
|
||||
**V-Contact**, an in-app admin channel for companions; and a batch of LoRa-driver reliability fixes.
|
||||
|
||||
## Highlights
|
||||
|
||||
@@ -44,6 +46,65 @@ The ESP32 app slot moved from `0x20000` to `0x10000` — matching the Arduino /
|
||||
change that fixes OTA above, and it also enables the configurator's fast **app-only update** (rewrites just
|
||||
the app, keeps your settings). Requires the one-time serial reflash (see *Before you upgrade*).
|
||||
|
||||
### New: Adaptive CAD — listen-before-talk that tunes itself to your site
|
||||
Every transmission is preceded by a Channel Activity Detection (CAD) check that listens for other LoRa
|
||||
traffic and holds off if the channel is busy. How sensitive that check is has always been a single
|
||||
hardcoded number — but the right value depends on where the node lives. A quiet valley node and a
|
||||
50-network hilltop need very different thresholds: too sensitive and the node keeps deferring for phantom
|
||||
traffic (wasted airtime, latency); not sensitive enough and it transmits over real packets (collisions).
|
||||
|
||||
Nodes now **measure their own RF environment and adjust automatically**. In the background, between
|
||||
transmissions, the radio runs short calibration probes, tracks how often each sensitivity level produces a
|
||||
false "busy", and settles on the lowest false-positive threshold for *that* site — responding to a
|
||||
changing environment within an hour or two. It runs on repeaters and companions, and it is **on by
|
||||
default**; there is nothing to configure.
|
||||
|
||||
- `get cad` — watch what it's doing: the current threshold and per-level false-positive statistics.
|
||||
- `set cad.auto off` — turn off the auto-adjust to observe or hand-tune with `set cad.offset`.
|
||||
|
||||
Quiet sites end up *more* sensitive than the old fixed default (fewer stomped packets); noisy sites back
|
||||
off until the false alarms stop. CAD also now uses 4 detection symbols everywhere, which improves detection
|
||||
of an in-progress packet's payload (not just its preamble). Full guide, including the honest limitation
|
||||
that the "missed detection" side isn't locally observable, is in
|
||||
**[ADAPTIVE_CAD.md](https://github.com/liquidraver/ZephCore/blob/master/zephcore/ADAPTIVE_CAD.md)**.
|
||||
(SX127x boards have no hardware CAD and keep their RSSI-based gate.)
|
||||
|
||||
### New: V-Contact — admin your companion from the chat app, no cable
|
||||
Companions now expose a special contact named `v<your-node-name>`. Chat with it and your messages run the
|
||||
same text CLI you'd use over USB serial — the reply comes back as ordinary chat messages. It's the easiest
|
||||
way to check or change settings on a companion in the field without plugging in.
|
||||
|
||||
It's also used for two unsolicited notices: a **restart-reason message** after a reboot (so an unexpected
|
||||
brownout or watchdog reset is visible instead of silent) and a **one-shot low-battery alert**. The whole
|
||||
thing is local to your device — the v-contact has no real keypair and **never creates a packet or touches
|
||||
the radio**, so none of this costs airtime. On by default; toggle the `v_contact_enabled` variable from the
|
||||
app to disable.
|
||||
|
||||
### LoRa driver reliability (LR1110 / LR2021)
|
||||
- **Fixed: LR1110 accepted CRC-failed packets.** On the LR11xx/LR20xx family a CRC-failed receive raises
|
||||
`RX_DONE` and `CRC_ERROR` together; the driver was acting on `RX_DONE` alone and passing corrupt frames
|
||||
up the stack. It now gates on the error bits (matching the SX126x path).
|
||||
- **Ported the SX126x preamble-grace / RX-busy handling to LR11xx/LR20xx.** A foreign or noise-triggered
|
||||
preamble detection could pin the channel-busy state and stall listen-before-talk recovery. The same
|
||||
SF-aware grace window and header-valid latch the SX126x driver uses now guard the LR path, so a real
|
||||
packet promotes to "receiving" and a false preamble releases after a bounded window.
|
||||
|
||||
## Other fixes and improvements
|
||||
|
||||
- **Classic ESP32 companion builds** (TTGO LoRa32, T-Beam) now build and link correctly. The Espressif BT
|
||||
HCI controller node wasn't wired on TTGO LoRa32 (companion needs BLE), and the CLI backing the V-Contact
|
||||
chat wasn't compiled on plain (non-logging) companion builds — both fixed. Contact-table sizes on these
|
||||
DRAM-tight classic-ESP32 boards were trimmed to fit alongside the BLE controller.
|
||||
- **SenseCAP Solar** LED devicetree fix.
|
||||
- **LilyGo T-Impulse Plus** display fixes (follow-up to the initial port).
|
||||
- **Repeater + observer hybrid** role wiring fixups (MQTT publisher / uplink credentials / observer mesh).
|
||||
- **`get`/`set` command keywords are now case-insensitive** (e.g. `Get cad` works). Command *values* —
|
||||
passwords, node names, keys — remain case-sensitive as they must be.
|
||||
- **Platform: Zephyr west manifest advanced** (continuing along the `v4.4-branch`).
|
||||
- **New `-update` build artifacts** for OTA / manual app-only updates, published alongside the full images.
|
||||
- **Docs:** new `ADAPTIVE_CAD.md`; `Repeater_CLI_commands.md`, `ARCHITECTURE.md`, and `PROVIDER_CATALOG.md`
|
||||
updated for the above.
|
||||
|
||||
## Recommended upgrade checklist
|
||||
|
||||
1. **ESP32-S3 / ESP32-C boards:** flash `-merged.bin` once over USB/serial. WiFi-OTA can't cross this update; data survives.
|
||||
|
||||
@@ -459,7 +459,7 @@ add_definitions(-DFIRMWARE_BUILD_EPOCH=${ZEPHCORE_BUILD_EPOCH}u)
|
||||
# value; the per-app `#ifndef FIRMWARE_VERSION` fallbacks only apply to builds that
|
||||
# bypass this injection. NOTE: the BLE DIS value in boards/common/zephcore_common.conf
|
||||
# (CONFIG_BT_DIS_FW_REV_STR) is Kconfig, not C, so it must be bumped here AND there.
|
||||
set(ZEPHCORE_FIRMWARE_VERSION "v1.16.4-zephyr")
|
||||
set(ZEPHCORE_FIRMWARE_VERSION "v1.16.5-zephyr")
|
||||
add_definitions(-DFIRMWARE_VERSION="${ZEPHCORE_FIRMWARE_VERSION}")
|
||||
|
||||
add_subdirectory(lib/monocypher)
|
||||
|
||||
@@ -151,7 +151,7 @@ CONFIG_BT_DIS_FW_REV=y
|
||||
# of truth for the C side, injected as -DFIRMWARE_VERSION). This Kconfig value can't
|
||||
# read a C macro, so it must be bumped here too. Phones that read DIS and phones
|
||||
# that query CMD_DEVICE_QUERY should see the same version.
|
||||
CONFIG_BT_DIS_FW_REV_STR="v1.16.4-zephyr"
|
||||
CONFIG_BT_DIS_FW_REV_STR="v1.16.5-zephyr"
|
||||
CONFIG_BT_DIS_SW_REV=y
|
||||
CONFIG_BT_DIS_SW_REV_STR="Zephyr"
|
||||
CONFIG_BT_DIS_PNP=n
|
||||
|
||||
Reference in New Issue
Block a user