Skip to content

Trifecta bridge — beta 10

Pre-release
Pre-release

Choose a tag to compare

@smellyspice smellyspice released this 02 Sep 01:35
· 0 commits to main since this release

What's new since beta9

  • ESP-NOW zero-hop adverts now actually broadcast. They have no path and
    no specific destination -- "whoever's nearby," same as their inherently
    broadcast behavior on LoRa. The ESP-NOW bridge was unicasting them like
    any other direct-route packet once a peer's MAC was known, silencing them
    to every other peer on the same segment. Fixed on both the repeater and
    peer side, scoped precisely to advert + direct-route + empty-path packets
    -- every other packet type keeps its existing unicast-with-retry behavior.
  • ESP-NOW peer limit raised 6 → 19 (the real safe max: ESP-NOW's hard
    20-peer limit, minus one slot for the broadcast address). The old value
    had no documented rationale and looks like it was modeled on ESP-NOW's
    encrypted-peer limit, which doesn't apply here since peers are always
    registered unencrypted.
  • New: WiFi-companion envs for both the C3 SuperMini and S3-Zero, as an
    alternative to BLE pairing.
  • Fixed a real ESP32-C3 companion crash — BLE controller init reliably
    failed at contact/channel/queue capacity values copied unmodified from
    the S3-Zero variant, since the C3 has less total SRAM. Bisected safe
    values on real hardware for both BLE-only and USB+BLE dual envs.
  • MQTT bridge is now built into every standard Trifecta repeater build
    (Heltec V3/V4) — no separate binary needed.
    set mqtt.enabled on|off
    set mqtt.server <url>       # mqtt://, mqtts://, ws://, or wss://
    set mqtt.username/password  # optional, if your broker needs auth
    set mqtt.iata <code>        # optional, short site code included in the topic
    
    Off by default. Broker must be on your own LAN/VPN — TLS is not
    certificate-verified. Single-threaded, polled from the main loop — no
    separate task, no cross-core state to get wrong.
  • Room servers now persist their post history to flash. Previously the
    post backlog clients sync against lived in RAM only — a reboot wiped it
    and any client syncing afterward got nothing for that gap. It's now
    mirrored to flash on every new post and restored on boot.
  • Fixed: a contact explicitly set to the Read-Only ACL role could still
    post.
    The posting check only excluded the Guest role; Read-Only fell
    through to the same path as Read-Write. Also reported upstream as
    meshcore-dev/MeshCore#3340.
  • Room server config note: if allow.read.only is enabled with a
    blank guest password, a blank-password login currently gets read/write
    access instead of read-only — a known upstream issue
    (meshcore-dev/MeshCore#940,
    fix pending in PR #2995).
    Until that lands, set a real (non-blank) guest password that you never
    hand out — any anonymous/wrong-password login then correctly falls
    through to read-only.

Flashing

  • Blank/fresh board: flash the -merged.bin file at address 0x0.
  • Upgrading an already-configured board: flash the plain .bin file at
    address 0x10000 — this preserves identity, radio config, WiFi/BLE
    bonds, and all CLI settings; it does not erase the board.
esptool.py --chip esp32s3|esp32c3 write_flash 0x0 <file>-merged.bin        # blank board
esptool.py --chip esp32s3|esp32c3 write_flash 0x10000 <file>.bin           # upgrade in place