From af79c407ec118d916bcba8bb4d5d974fa8ec0ae2 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 20 Mar 2026 13:23:58 +0000 Subject: [PATCH 1/2] app_main: fix QR/manual-code rendezvous hint to include OnNetwork (0x06) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The rendezvous hint was 0x02 (BLE only). This device also advertises commissionable discovery via SRP over Thread (_matterc._udp), so the correct value is 0x06 (BLE | OnNetwork). With 0x02, commissioners that follow the hint strictly skip the IP path entirely even when the device is reachable via Thread, leaving only BLE — which fails without the external antenna. 0x06 lets commissioners try both transports in parallel and succeed via whichever path responds first. https://claude.ai/code/session_01SxqAiQApiRTwXefk9aQ6bR --- main/app_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/app_main.cpp b/main/app_main.cpp index 750f44d..500933f 100644 --- a/main/app_main.cpp +++ b/main/app_main.cpp @@ -123,7 +123,7 @@ void printCommissioningCodes() stuffBits(payload, 3, vid, 16); stuffBits(payload, 19, pid, 16); stuffBits(payload, 35, 0, 2); // standard commissioning flow - stuffBits(payload, 37, 0x02, 8); // BLE rendezvous flag + stuffBits(payload, 37, 0x06, 8); // BLE (bit1) + OnNetwork/IP (bit2) stuffBits(payload, 45, discriminator, 12); stuffBits(payload, 57, passcode, 27); // bits [84:87]: padding = 0 (already zero-initialised) From c8423be6e790a46a1d4dd3d5011bdf9cb79098d4 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 20 Mar 2026 13:29:46 +0000 Subject: [PATCH 2/2] app_main: revert rendezvous hint to 0x02 (BLE only) 0x06 was incorrect. The app only registers _matter._tcp (operational) via SRP, never _matterc._udp (commissionable), so there is no IP rendezvous path at onboarding time. Thread credentials are pushed over BLE during commissioning, meaning IP is unavailable until after commissioning completes. Advertising OnNetwork (0x04) misleads commissioners into attempting an IP path that does not exist. https://claude.ai/code/session_01SxqAiQApiRTwXefk9aQ6bR --- main/app_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/app_main.cpp b/main/app_main.cpp index 500933f..9393b13 100644 --- a/main/app_main.cpp +++ b/main/app_main.cpp @@ -123,7 +123,7 @@ void printCommissioningCodes() stuffBits(payload, 3, vid, 16); stuffBits(payload, 19, pid, 16); stuffBits(payload, 35, 0, 2); // standard commissioning flow - stuffBits(payload, 37, 0x06, 8); // BLE (bit1) + OnNetwork/IP (bit2) + stuffBits(payload, 37, 0x02, 8); // BLE rendezvous (only supported commissioning transport) stuffBits(payload, 45, discriminator, 12); stuffBits(payload, 57, passcode, 27); // bits [84:87]: padding = 0 (already zero-initialised)