Solved
BLE Mesh: Proxy node doesn't relay application messages via advertising bearer
Hello,
I'm using 2x NUCLEO-WB55RG boards with the unmodified BLE_MeshLightingPRFNode example from STM32CubeWB V1.24.0.
Setup:
- BLE Stack full v1.13.2.2 (stm32wb5x_BLE_Stack_full_fw.bin)
- FUS v1.2.0
- Provisioned with ST BLE Mesh app (tested on both iOS and Android)
- Both nodes subscribed and published to Default group (0xC000)
- Both nodes have AppKey 00 bound to all models
Firmware boot logs confirm:
- Relay = Enabled
- Proxy = Enabled
- Friend = Enabled
- PB-ADV = Enabled
- PB-GATT = Enabled
- Default TTL = 8
- Different MAC addresses on each board
Problem:
1. Sending a Generic OnOff command to the Default group (0xC000) from the app only turns on the LED of the node connected via GATT proxy. The other node never receives the message.
2. SW1 button press toggles only the local LED, never the remote node's LED.
3. It is ALWAYS the last provisioned node that responds. If I reverse the provisioning order, it is still the last one that works. The first provisioned node stops responding to group commands.
4. Android app logs show "Vendor OnOff Command Sent to ==>c000" confirming the app sends to the correct group address.
5. Configuration messages DO reach the other node — I can read Node Features and Element Settings of the non-proxy node without timeout. This means the relay works for Config Model messages (using DevKey) but NOT for application messages (using AppKey).
6. nRF Connect shows both nodes advertising as "Mesh Proxy" with strong RSSI (-54 dBm), confirming the radio works on both boards.
7. Loopback local works — each node receives its own published messages correctly.
8. Node Features display in Android app shows everything disabled, but firmware logs confirm features are enabled. Proxy is confirmed working as the app connects via GATT proxy. This seems like a display bug.
9. When trying to enable/disable features (Friend, Relay) via the app, the toggle switches back immediately.
What I've tried:
- Fresh unmodified BLE_MeshLightingPRFNode from V1.24.0
- Both iOS and Android ST BLE Mesh apps
- Setting Default TTL to 8 in firmware via BLEMesh_SetDefaultTTL(8)
- ConfigModel_SelfSubscriptionConfig and ConfigModel_SelfPublicationConfig at boot
- Enabling VENDOR_CLIENT_MODEL_PUBLISH in mesh_cfg_usr.h
- Full chip erase and re-provisioning multiple times
- Verified BLE Stack full (not light) is installed
Question:
Why does the proxy node not relay application messages (Generic OnOff, Vendor) to the advertising bearer, while it does relay configuration messages? Is this a known issue with V1.24.0 or the mesh library v1.13.011?
Thank you for your help.
Hardware: P-NUCLEO-WB55RG (2 boards)
Firmware: BLE_MeshLightingPRFNode (unmodified from STM32CubeWB V1.24.0)
BLE Stack: stm32wb5x_BLE_Stack_full_fw.bin v1.13.2.2
FUS: v1.2.0
Mesh Library: v01.13.011
Apps: ST BLE Mesh iOS + Android
