Files
MeshCore-Posadmesh/README.md
T
Jared DohrmanandClaude Opus 4.8 6ad3e5224e feat(mqtt): add Waev broker
Add Waev (mqtt.waev.app) as a curated MQTT broker, selectable from the
web-panel Primary/Secondary dropdowns and the CLI.

- Broker spec on bit 0x20, audience mqtt.waev.app, Google Trust Services
  WE1 CA (matches Waev's cert chain); widen broker mask/count to 0x3F/6
- Per-broker JWT lifetime via BrokerSpec.token_ttl_secs: Waev enforces a
  1-hour max token TTL and rejects the 6h default with MQTT CONNACK 5,
  so it mints a 3600s token while other brokers keep the 6h default
- CLI get/set mqtt.waev, web-panel dropdown entry + hidden toggle, docs
- Log token TTL in the "token ready" line for broker auth debugging

fix(web): make Custom MQTT settings full width when Custom is selected

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 10:29:38 +10:00

7.1 KiB

MeshCore-EastMesh

MeshCore-EastMesh originates from the upstream MeshCore project:

Credits to Scott Powell / Ripple Radios and the MeshCore contributors for the original firmware and project foundation.

EastMesh is a community-driven mesh network across Eastern Australia. This repository provides tailored builds of MeshCore, including WiFi companion firmware with additional CLI tools and Observer firmware that integrates with our CoreScope telemetry platform.

CoreScope (https://core.eastmesh.au) offers visibility into the network, including repeater status, observers, and mapping data.

Observer builds feed EastMesh Core telemetry and are intended for Eastern Australia repeaters only; running them elsewhere can skew shared network data.

What This Repo Adds

  • *_repeater_observer firmware targets with:
    • native WiFi
    • MQTT over WSS with JWT auth
    • optional local HTTPS config panel on supported ESP32 targets
  • *_companion_radio_wifi firmware targets for WiFi-connected companion devices
  • EastMesh-specific release workflows and versioning on top of upstream MeshCore releases
  • docs and release guidance for EastMesh users instead of the full upstream MeshCore docs set

Releases

Prebuilt firmware is published on GitHub Releases:

For flashing guidance, including when to use .bin vs -merged.bin, see:

The custom firmware flasher site is:

Install uv

This repo uses uv for Python tooling and runs PlatformIO through uv run.

Official install docs:

Common install methods:

macOS and Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Homebrew:

brew install uv

Windows PowerShell:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Common Repo Usage

Install tooling:

uv sync

List available build targets:

bash eastmesh-build.sh list

Build a single target:

uv run pio run -e heltec_v4_repeater_observer
uv run pio run -e heltec_v4_companion_radio_wifi

Build with release-style version metadata:

export FIRMWARE_VERSION=v1.15.0
export EASTMESH_VERSION=v2026.5.1
bash eastmesh-build.sh build-firmware heltec_v4_repeater_observer

Flash a target:

uv run pio run -e heltec_v4_repeater_observer -t upload --upload-port /dev/tty.usbmodemXXXX

Open a serial monitor:

uv run pio device monitor --port /dev/tty.usbmodemXXXX --baud 115200

Build docs locally:

uv run --group docs zensical serve
uv run --group docs zensical build

Key Files

Key EastMesh Features

MQTT Repeater Additions

  • curated broker support for:
    • eastmesh-au
    • meshmapper
    • waev
    • letsmesh-eu (retired)
    • letsmesh-us (retired)
  • WSS transport at /mqtt
  • JWT auth using the device identity
  • CLI controls for:
    • WiFi credentials
    • WiFi powersaving
    • board battery reporting on supported targets
    • MQTT endpoint enablement
    • MQTT packet and raw publishing
    • owner public key and email
    • local web panel enablement

Local Web Panel

On supported *_repeater_observer ESP32 targets, the repeater can expose a local HTTPS config panel over WiFi.

Features include:

  • password-gated access using the existing repeater admin password
  • allowlisted CLI execution
  • grouped quick actions
  • light and dark themes
  • optional disable via set web off

Recommended use is initial setup and occasional troubleshooting. On observer deployments, disable the panel again when finished if you want maximum MQTT heap headroom.

Companion WiFi Additions

*_companion_radio_wifi targets now support persisted WiFi rescue commands:

  • open a serial monitor at 115200 baud
  • reboot the device
  • long-press the user button within the first 8 seconds after boot to enter CLI Rescue
  • wait for ========= CLI Rescue =========
  • send the commands from the serial monitor

These rescue commands are only available after entering CLI Rescue:

  • get wifi.status
  • get wifi.ssid
  • get wifi.powersaving
  • set wifi.ssid <ssid>
  • set wifi.pwd <password>
  • set wifi.powersaving none|min|max

Active GitHub Workflows

  • .github/workflows/eastmesh-build-companion-wifi-firmwares.yml
  • .github/workflows/eastmesh-build-observer-firmwares.yml
  • .github/workflows/eastmesh-build-repeater-bridge-espnow-firmwares.yml
  • .github/workflows/eastmesh-build-observer-espnow-firmwares.yml
  • .github/workflows/eastmesh-pr-build-check.yml
  • .github/workflows/eastmesh-push-build-check.yml
  • .github/workflows/eastmesh-github-pages.yml

The upstream MeshCore workflows are retained under their original filenames to reduce merge conflicts. They are not part of the EastMesh release flow and should stay disabled in GitHub Actions for this repository.

The current release workflows intentionally focus only on:

  • companion-wifi
  • repeater-bridge-espnow
  • observer-eastmesh
  • observer-eastmesh-bridge-espnow

Release Tags

Current release tags are:

git tag companion-wifi-v1.14.1
git tag repeater-bridge-espnow-v1.15.0
git tag observer-eastmesh-v2026.5.1
git tag observer-eastmesh-bridge-espnow-v2026.5.1

Companion WiFi uses the upstream MeshCore version in the tag.

Observer uses:

  • OFFICIAL_MESHCORE_VERSION from GitHub Actions variables as FIRMWARE_VERSION
  • the EastMesh tag version as EASTMESH_VERSION

See RELEASE.md for the full release flow.

Documentation

Published docs site:

Current docs pages: