From d88245888540e6f35f1e130f17888814f71df078 Mon Sep 17 00:00:00 2001 From: Dorian Date: Wed, 1 Jul 2026 22:19:07 +0100 Subject: [PATCH] feat(firmware): announce as an LXMF delivery destination (messageable) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - switch the Reticulum announce from a plain "archy.messh" destination to "lxmf.delivery" so the bridge shows up as a messageable contact in Reticulum/LXMF clients; app_data is the display name "Archy-Messh" - name_hash/dest_hash construction verified byte-identical to RNS.Destination.hash(id, "lxmf", "delivery") - bump R-window LoRa preamble 16 -> 18 to match RNode firmware Note: an RNode peer (.116) is not yet demodulating the bridge's R-PHY TX (rxb stays flat) though the bridge decodes the RNode's announces fine and the bridge's TX works on the MeshCore PHY — an asymmetric RadioLib-TX/RNode-RX issue still to chase. Receiving LXMF message *content* is a further build. Co-Authored-By: Claude Opus 4.8 (1M context) --- firmware/src/main.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/firmware/src/main.cpp b/firmware/src/main.cpp index 183dd21..cc6e935 100644 --- a/firmware/src/main.cpp +++ b/firmware/src/main.cpp @@ -76,7 +76,7 @@ static const PhyConfig CONFIGS[] = { { "meshcore", 'C', 869.618f, 62.5f, 8, 5, 0x12, 16 }, // Reticulum RNode PHY (operator-configured) — user's RNS interface: // 869.525 MHz / 125 kHz / SF8 / CR4:5. Sync word 0x12 is RNode's default. - { "reticulum", 'R', 869.525f, 125.0f, 8, 5, 0x12, 16 }, + { "reticulum", 'R', 869.525f, 125.0f, 8, 5, 0x12, 18 }, }; static const size_t NUM_CONFIGS = sizeof(CONFIGS) / sizeof(CONFIGS[0]); static const uint32_t DWELL_MS = 3000; // camp long enough to sit through a @@ -443,8 +443,11 @@ static uint8_t rnsEdSeed[32], rnsEdPrv[64], rnsEdPub[32]; // Ed25519 (signing) static uint8_t rnsPub[64]; // X25519_pub || Ed25519_pub static uint8_t rnsNameHash[10]; // SHA256(app name)[:10] static uint8_t rnsDestHash[16]; // SHA256(name_hash||ident_hash)[:16] -static const char* RNS_APP_NAME = "archy.messh"; -static const char* RNS_APP_DATA = "archy-messh"; +// Announce an LXMF *delivery* destination so we show up as a messageable +// contact in Reticulum/LXMF clients (app "lxmf", aspect "delivery"). app_data +// is the display name. Verified against RNS.Destination.hash(). +static const char* RNS_APP_NAME = "lxmf.delivery"; +static const char* RNS_APP_DATA = "Archy-Messh"; static uint32_t lastRnsAnnounceMs = 0; static const uint32_t RNS_ANNOUNCE_INTERVAL_MS = 30000;