app_main: fix QR/manual-code rendezvous hint to include OnNetwork (0x06)#48
app_main: fix QR/manual-code rendezvous hint to include OnNetwork (0x06)#48
Conversation
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
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: af79c407ec
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
main/app_main.cpp
Outdated
| 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) |
There was a problem hiding this comment.
Keep rendezvous hint to supported commissioning transports
The setup payload’s rendezvous bitmask is for commissioning transport availability, not post-commission operational reachability. This app’s own flow is BLE-first (README.md lines 31-32) and expects Thread credentials to be pushed during commissioning (onThreadStateChanged comment around lines 349-352), while the custom SRP code only registers _matter._tcp (operational) and never _matterc._udp for commissionable discovery. Advertising 0x06 here claims on-network rendezvous support the device does not provide at onboarding time, which can cause commissioners that select IP based on the hint to fail commissioning.
Useful? React with 👍 / 👎.
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
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.