From 5c5c832990821d2550a1a2ca294859ef3b22d879 Mon Sep 17 00:00:00 2001 From: agessaman Date: Sat, 24 Oct 2026 11:35:19 -0700 Subject: [PATCH 1/2] feat(mqtt): add sacmesh broker preset SACMesh (Sacramento/SMF) broker at mqtt.sacmesh.org: wss on 443, JWT with the broker host as audience, ISRG Root X1 for the Let's Encrypt Gen-Y chain. --- MQTT_IMPLEMENTATION.md | 1 + src/helpers/MQTTPresets.h | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/MQTT_IMPLEMENTATION.md b/MQTT_IMPLEMENTATION.md index e1d92347300..e49ab3f79de 100644 --- a/MQTT_IMPLEMENTATION.md +++ b/MQTT_IMPLEMENTATION.md @@ -108,6 +108,7 @@ that slot, see [Per-slot region codes](#per-slot-region-codes)). | `ntxmesh` | `wss://ntxmesh.dhovin.me:8883` | JWT | | | `bsmesh` | `wss://mqtt.bsmesh.de:8885` | JWT | | | `marwoj` | `mqtts://mqtt.marwoj.net:8883` | user/pass (built in) | | +| `sacmesh` | `wss://mqtt.sacmesh.org:443/` | JWT | | | `custom` | your broker | user/pass, or JWT when `mqttN.audience` is set | see [Custom Brokers](#custom-brokers) | | `none` | slot disabled | | | diff --git a/src/helpers/MQTTPresets.h b/src/helpers/MQTTPresets.h index 000adf84a86..0445a575b54 100644 --- a/src/helpers/MQTTPresets.h +++ b/src/helpers/MQTTPresets.h @@ -130,7 +130,7 @@ static const char ISRG_ROOT_X1[] PROGMEM = "-----END CERTIFICATE-----\n"; // Number of built-in presets -static const int MQTT_PRESET_COUNT = 37; +static const int MQTT_PRESET_COUNT = 38; // Built-in preset definitions (stored in flash) static const MQTTPresetDef MQTT_PRESETS[MQTT_PRESET_COUNT] = { @@ -180,6 +180,8 @@ static const MQTTPresetDef MQTT_PRESETS[MQTT_PRESET_COUNT] = { { "ntxmesh", "wss://ntxmesh.dhovin.me:8883", "ntxmesh.dhovin.me", ISRG_ROOT_X1, MQTT_AUTH_JWT, MQTT_TOPIC_MESHCORE, 0, true, 55, nullptr, nullptr }, { "bsmesh", "wss://mqtt.bsmesh.de:8885", "mqtt.bsmesh.de", ISRG_ROOT_X1, MQTT_AUTH_JWT, MQTT_TOPIC_MESHCORE, 0, true, 55, nullptr, nullptr }, { "marwoj", "mqtts://mqtt.marwoj.net:8883", nullptr, ISRG_ROOT_X1, MQTT_AUTH_USERPASS, MQTT_TOPIC_MESHCORE, 0, true, 55, "observer-agessaman", "ipRwCEclZkX47K" }, + // LE Gen-Y ECDSA chain (YE1 → Root YE → X2) anchors at ISRG Root X1. + { "sacmesh", "wss://mqtt.sacmesh.org:443/", "mqtt.sacmesh.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 From 0c119a54a745fb7394c20acbacc55415bf3b7261 Mon Sep 17 00:00:00 2001 From: Alex Downey Date: Sat, 24 Oct 2026 11:39:33 -0700 Subject: [PATCH 2/2] feat(mqtt): add upstatemesh broker preset Upstate Mesh (NY Capital District) broker: wss://mqtt.upst8me.sh:443/mqtt, JWT with audience mqtt.upst8me.sh. Let's Encrypt Gen-Y ECDSA chain anchors at ISRG Root X1. Bumps MQTT_PRESET_COUNT 38 -> 39. --- MQTT_IMPLEMENTATION.md | 1 + src/helpers/MQTTPresets.h | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/MQTT_IMPLEMENTATION.md b/MQTT_IMPLEMENTATION.md index e49ab3f79de..e7cef81d025 100644 --- a/MQTT_IMPLEMENTATION.md +++ b/MQTT_IMPLEMENTATION.md @@ -109,6 +109,7 @@ that slot, see [Per-slot region codes](#per-slot-region-codes)). | `bsmesh` | `wss://mqtt.bsmesh.de:8885` | JWT | | | `marwoj` | `mqtts://mqtt.marwoj.net:8883` | user/pass (built in) | | | `sacmesh` | `wss://mqtt.sacmesh.org:443/` | JWT | | +| `upstatemesh` | `wss://mqtt.upst8me.sh:443/mqtt` | JWT | | | `custom` | your broker | user/pass, or JWT when `mqttN.audience` is set | see [Custom Brokers](#custom-brokers) | | `none` | slot disabled | | | diff --git a/src/helpers/MQTTPresets.h b/src/helpers/MQTTPresets.h index 0445a575b54..8bc34daf644 100644 --- a/src/helpers/MQTTPresets.h +++ b/src/helpers/MQTTPresets.h @@ -130,7 +130,7 @@ static const char ISRG_ROOT_X1[] PROGMEM = "-----END CERTIFICATE-----\n"; // Number of built-in presets -static const int MQTT_PRESET_COUNT = 38; +static const int MQTT_PRESET_COUNT = 39; // Built-in preset definitions (stored in flash) static const MQTTPresetDef MQTT_PRESETS[MQTT_PRESET_COUNT] = { @@ -182,6 +182,8 @@ static const MQTTPresetDef MQTT_PRESETS[MQTT_PRESET_COUNT] = { { "marwoj", "mqtts://mqtt.marwoj.net:8883", nullptr, ISRG_ROOT_X1, MQTT_AUTH_USERPASS, MQTT_TOPIC_MESHCORE, 0, true, 55, "observer-agessaman", "ipRwCEclZkX47K" }, // LE Gen-Y ECDSA chain (YE1 → Root YE → X2) anchors at ISRG Root X1. { "sacmesh", "wss://mqtt.sacmesh.org:443/", "mqtt.sacmesh.org", ISRG_ROOT_X1, MQTT_AUTH_JWT, MQTT_TOPIC_MESHCORE, 0, true, 55, nullptr, nullptr }, + // Upstate Mesh (NY Capital District). JWT; LE Gen-Y ECDSA chain (YE1 → Root YE → X2) anchors at ISRG Root X1. + { "upstatemesh", "wss://mqtt.upst8me.sh:443/mqtt", "mqtt.upst8me.sh", ISRG_ROOT_X1, MQTT_AUTH_JWT, MQTT_TOPIC_MESHCORE, 0, true, 55, nullptr, nullptr }, }; // Find a preset by name, returns nullptr if not found