From bcf7d8300e2bd525d5c0d0b356c483a25cc3410b Mon Sep 17 00:00:00 2001 From: Nate Harris Date: Thu, 30 Apr 2026 11:05:42 -0600 Subject: [PATCH 1/2] - Tweak Colorado Mesh config --- MQTT_IMPLEMENTATION.md | 38 +++++++++++++++++--------------- src/helpers/MQTTPresets.h | 2 +- src/helpers/bridges/MQTTBridge.h | 2 +- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/MQTT_IMPLEMENTATION.md b/MQTT_IMPLEMENTATION.md index 8e907f6102..deb3e482d5 100644 --- a/MQTT_IMPLEMENTATION.md +++ b/MQTT_IMPLEMENTATION.md @@ -77,7 +77,7 @@ get mqtt.status The MQTT bridge implementation provides: - Up to 6 MQTT connection slots with built-in presets -- Built-in presets for LetsMesh Analyzer (US/EU), MeshMapper, MeshRank, Waev, Meshomatic, CascadiaMesh, EastIdahoMesh, and TennMesh +- Built-in presets for LetsMesh Analyzer (US/EU), MeshMapper, MeshRank, Waev, Meshomatic, CascadiaMesh, EastIdahoMesh, Colorado Mesh and TennMesh - Custom broker support with username/password authentication - JWT (Ed25519 device signing) authentication for most preset brokers; TennMesh uses a fixed username/password (plain MQTT) - WSS (WebSocket Secure), direct MQTT/TLS, and plain MQTT (TennMesh) transport @@ -94,22 +94,23 @@ The MQTT bridge uses a slot-based architecture with up to 6 concurrent connectio **Built-in Presets:** -| Preset | Server | Auth | Transport | -|--------|--------|------|-----------| -| `analyzer-us` | mqtt-us-v1.letsmesh.net:443 | JWT (Ed25519) | WSS | -| `analyzer-eu` | mqtt-eu-v1.letsmesh.net:443 | JWT (Ed25519) | WSS | -| `meshmapper` | mqtt.meshmapper.cc:443 | JWT (Ed25519) | WSS | -| `meshrank` | meshrank.net:8883 | None (token in topic) | MQTT over TLS | -| `waev` | mqtt.waev.app:443 | JWT (Ed25519) | WSS | -| `meshomatic` | us-east.meshomatic.net:443 | JWT (Ed25519) | WSS | -| `cascadiamesh` | mqtt-v1.cascadiamesh.org:443 | JWT (Ed25519) | WSS | -| `tennmesh` | mqtt.tennmesh.com:1883 | Username/password (fixed in firmware) | Plain MQTT | -| `nashmesh` | mqtt://mqtt.nashme.sh:1883 | Username/password (fixed in firmware) | Plain MQTT | -| `chimesh` | wss://mqtt.chimesh.org:443 | JWT (Ed25519) | WSS | -| `meshat.se` | mqtts://mqtt.meshat.se:8883 | Username/password (fixed in firmware) | MQTT over TLS | -| `eastidahomesh` | wss://broker.eastidahomesh.net:443 | None | WSS | -| `custom` | User-configured | Username/Password | MQTT or WSS | -| `none` | (disabled) | — | — | +| Preset | Server | Auth | Transport | +|-----------------|--------|---------------------------------------|-----------| +| `analyzer-us` | mqtt-us-v1.letsmesh.net:443 | JWT (Ed25519) | WSS | +| `analyzer-eu` | mqtt-eu-v1.letsmesh.net:443 | JWT (Ed25519) | WSS | +| `meshmapper` | mqtt.meshmapper.cc:443 | JWT (Ed25519) | WSS | +| `meshrank` | meshrank.net:8883 | None (token in topic) | MQTT over TLS | +| `waev` | mqtt.waev.app:443 | JWT (Ed25519) | WSS | +| `meshomatic` | us-east.meshomatic.net:443 | JWT (Ed25519) | WSS | +| `cascadiamesh` | mqtt-v1.cascadiamesh.org:443 | JWT (Ed25519) | WSS | +| `tennmesh` | mqtt.tennmesh.com:1883 | Username/password (fixed in firmware) | Plain MQTT | +| `nashmesh` | mqtt://mqtt.nashme.sh:1883 | Username/password (fixed in firmware) | Plain MQTT | +| `chimesh` | wss://mqtt.chimesh.org:443 | JWT (Ed25519) | WSS | +| `meshat.se` | mqtts://mqtt.meshat.se:8883 | Username/password (fixed in firmware) | MQTT over TLS | +| `eastidahomesh` | wss://broker.eastidahomesh.net:443 | None | WSS | +| `coloradomesh` | mqtt.meshcore.coloradomesh.org | JWT (Ed25519) | WSS | +| `custom` | User-configured | Username/Password | MQTT or WSS | +| `none` | (disabled) | — | — | **Default Configuration:** - Slot 1: `analyzer-us` @@ -238,6 +239,7 @@ Each slot (1-6) supports the following commands: - `set mqttN.preset nashmesh` - Set slot N to NashMesh - `set mqttN.preset chimesh` - Set slot N to ChicagolandMesh - `set mqttN.preset meshat.se` - Set slot N to Meshat.se +- `set mqttN.preset coloradomesh` - Set slot N to Colorado Mesh - `set mqttN.preset eastidahomesh` - Set slot N to EastIdahoMesh (WSS/TLS, no auth; packets on `meshcore/{IATA}/{PUBLIC_KEY}/packets`) - `set mqttN.preset custom` - Set slot N to custom broker (configure server/port/username/password) - `set mqttN.preset none` - Disable slot N @@ -508,7 +510,7 @@ Minimal raw packet data for map integration. ### Slot-Based Preset System - Up to 6 concurrent MQTT connections (with PSRAM), 2 without PSRAM -- Built-in presets for LetsMesh Analyzer (US/EU), MeshMapper, MeshRank, Waev, Meshomatic, CascadiaMesh, EastIdahoMesh, and TennMesh +- Built-in presets for LetsMesh Analyzer (US/EU), MeshMapper, MeshRank, Waev, Meshomatic, CascadiaMesh, Colorado Mesh, EastIdahoMesh, and TennMesh - Custom broker support with username/password auth and custom topic templates - JWT (Ed25519) for most preset brokers; MeshRank uses token-in-topic; TennMesh uses fixed username/password over plain MQTT - WSS (WebSocket Secure), direct MQTT over TLS, and plain MQTT (TennMesh) diff --git a/src/helpers/MQTTPresets.h b/src/helpers/MQTTPresets.h index da46e8ddf4..ba40680863 100644 --- a/src/helpers/MQTTPresets.h +++ b/src/helpers/MQTTPresets.h @@ -115,7 +115,7 @@ static const MQTTPresetDef MQTT_PRESETS[MQTT_PRESET_COUNT] = { { "chimesh", "wss://mqtt.chimesh.org:443", "mqtt.chimesh.org", ISRG_ROOT_X1, MQTT_AUTH_JWT, MQTT_TOPIC_MESHCORE, 0, true, 55, nullptr, nullptr }, { "meshat.se", "mqtts://mqtt.meshat.se:8883", nullptr, ISRG_ROOT_X1, MQTT_AUTH_USERPASS, MQTT_TOPIC_MESHCORE, 0, true, 55, "msh", "msh" }, { "eastidahomesh","wss://broker.eastidahomesh.net:443", nullptr, ISRG_ROOT_X1, MQTT_AUTH_NONE, MQTT_TOPIC_MESHCORE, 0, true, 55, nullptr, nullptr }, - { "coloradomesh", "mqtt://mqtt.meshcore.coloradomesh.org:8883","mqtt.meshcore.coloradomesh.org", nullptr, MQTT_AUTH_JWT, MQTT_TOPIC_MESHCORE, 0, true, 55, nullptr, nullptr }, + { "coloradomesh", "wss://mqtt.meshcore.coloradomesh.org/ws","mqtt.meshcore.coloradomesh.org", ISRG_ROOT_X1, MQTT_AUTH_JWT, MQTT_TOPIC_MESHCORE, 0, true, 55, nullptr, nullptr }, }; // Find a preset by name, returns nullptr if not found diff --git a/src/helpers/bridges/MQTTBridge.h b/src/helpers/bridges/MQTTBridge.h index 785812bae3..7987245087 100644 --- a/src/helpers/bridges/MQTTBridge.h +++ b/src/helpers/bridges/MQTTBridge.h @@ -43,7 +43,7 @@ class MeshSNMPAgent; // Forward declaration * * Features: * - Up to 6 configurable MQTT connection slots (5 active with PSRAM, 2 without) - * - Built-in presets for LetsMesh Analyzer (US/EU), MeshMapper, MeshRank, Waev, CascadiaMesh + * - Built-in presets for LetsMesh Analyzer (US/EU), MeshMapper, MeshRank, Waev, Cascadia Mesh, ColoradoMesh * - Custom broker support with username/password auth * - JWT authentication with Ed25519 device signing * - Automatic reconnection with exponential backoff From a6a3df2944b0196170f8e6b998c4e48b101fc5af Mon Sep 17 00:00:00 2001 From: Nate Harris Date: Thu, 30 Apr 2026 11:08:46 -0600 Subject: [PATCH 2/2] ColoradoMesh Signed-off-by: Nate Harris --- src/helpers/bridges/MQTTBridge.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/bridges/MQTTBridge.h b/src/helpers/bridges/MQTTBridge.h index 7987245087..4dd515b3b7 100644 --- a/src/helpers/bridges/MQTTBridge.h +++ b/src/helpers/bridges/MQTTBridge.h @@ -43,7 +43,7 @@ class MeshSNMPAgent; // Forward declaration * * Features: * - Up to 6 configurable MQTT connection slots (5 active with PSRAM, 2 without) - * - Built-in presets for LetsMesh Analyzer (US/EU), MeshMapper, MeshRank, Waev, Cascadia Mesh, ColoradoMesh + * - Built-in presets for LetsMesh Analyzer (US/EU), MeshMapper, MeshRank, Waev, Cascadia Mesh, Colorado Mesh * - Custom broker support with username/password auth * - JWT authentication with Ed25519 device signing * - Automatic reconnection with exponential backoff