Failed to send proxy message (err -22)

Hello.

I am experiencing an issue where Mesh communication fails after connecting to the SMP Service in the Bluetooth Mesh DFU Distributor sample.

Environment:

Steps to Reproduce:

  1. Flash the DFU Distributor sample to the nRF54L15DK.
  2. Provision the DK using the nRF Mesh mobile app.
  3. Initiate a connection to the SMP Service using the nRF Connect mobile app.
  4. When prompted for pairing, enter the passkey and complete the connection.
  5. Switch back to the nRF Mesh app and attempt any Mesh communication.
  6. The error "Failed to send proxy message (err -22)" occurs.

Serial Terminal Log:

*** Booting MCUboot v2.3.0-dev-252d7bbd7909 ***
*** Using nRF Connect SDK v3.2.3-6f8485d2890d ***
*** Using Zephyr OS v4.2.99-c4c75f71e709 ***
I: Starting bootloader
I: Primary image: magic=good, swap_type=0x1, copy_done=0x3, image_ok=0x1
I: Secondary image: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x3
I: Boot source: primary slot
I: Image index: 0, Swap type: none
I: Bootloader chainload address offset: 0xe000
I: Image version: v1.0.0
I: Jumping to the first image slot
*** Booting Mesh DFU Distributor v3.2.3-59f00e1776b2 ***
*** Using nRF Connect SDK v3.2.3-6f8485d2890d ***
*** Using Zephyr OS v4.2.99-c4c75f71e709 ***
Initializing...
Current image version: 1.0.0+0
[00:00:00.023,349] <inf> fs_zms: 2 Sectors of 4096 bytes
[00:00:00.023,358] <inf> fs_zms: alloc wra: 0, fc0
[00:00:00.023,365] <inf> fs_zms: data wra: 0, 0
[00:00:00.025,621] <inf> bt_sdc_hci_driver: SoftDevice Controller build revision: 
                                            9b 6b 70 25 37 79 e5 f2  f6 cb 16 a5 8b b9 9a 13 |.kp%7y.. ........
                                            a8 05 75 dc                                      |..u.             
[00:00:00.026,730] <inf> bt_hci_core: HW Platform: Nordic Semiconductor (0x0002)
[00:00:00.026,748] <inf> bt_hci_core: HW Variant: nRF54Lx (0x0005)
[00:00:00.026,761] <inf> bt_hci_core: Firmware: Standard Bluetooth controller (0x00) Version 155.28779 Build 3849926437
[00:00:00.026,878] <inf> bt_hci_core: No ID address. App must call settings_load()
Bluetooth initialized
[00:00:00.028,646] <inf> bt_hci_core: HCI transport: SDC
[00:00:00.028,694] <inf> bt_hci_core: Identity: EB:DA:FA:1C:B3:05 (random)
[00:00:00.028,711] <inf> bt_hci_core: HCI: version 6.2 (0x10) revision 0x306a, manufacturer 0x0059
[00:00:00.028,726] <inf> bt_hci_core: LMP: version 6.2 (0x10) subver 0x306a
[00:00:00.038,966] <inf> bt_mesh_provisionee: Device UUID: 8ef20279-6f06-4103-b10d-fd8690f9befc
Mesh initialized
Created a new identity for SMP: 1
[00:00:00.042,016] <dbg> bt_mesh_dfu_srv: bt_mesh_dfu_srv_applied: Wrong state
[00:00:29.776,807] <wrn> bt_l2cap: Ignoring data for unknown channel ID 0x003a
[00:00:32.089,368] <inf> bt_mesh_main: Primary Element: 0x0003
[00:00:32.089,384] <dbg> bt_mesh_main: bt_mesh_provision: net_idx 0x0000 flags 0x00 iv_index 0x0000
[00:00:32.178,808] <dbg> bt_mesh_health_srv: attention_off: 
[00:00:33.181,896] <wrn> bt_l2cap: Ignoring data for unknown channel ID 0x003a
[00:00:34.143,070] <dbg> bt_mesh_cfg_srv: dev_comp_data_get: net_idx 0x0000 app_idx 0xfffe src 0x0001 len 1: 00
[00:00:34.143,080] <dbg> bt_mesh_cfg_srv: dev_comp_data_get: Preparing Composition data page 0
[00:00:34.443,570] <dbg> bt_mesh_cfg_srv: default_ttl_get: net_idx 0x0000 app_idx 0xfffe src 0x0001 len 0: 
Connected to SMP service: err 0 id 1
[00:00:51.512,538] <wrn> bt_l2cap: Ignoring data for unknown channel ID 0x003a
Please enter passkey (670831) on 5A:47:4F:F6:2A:14 (random)
Pairing completed: 38:53:9C:AB:F0:B7 (public), bonded: 1
[00:02:04.790,809] <dbg> bt_mesh_cfg_srv: dev_comp_data_get: net_idx 0x0000 app_idx 0xfffe src 0x0001 len 1: 00
[00:02:04.790,823] <dbg> bt_mesh_cfg_srv: dev_comp_data_get: Preparing Composition data page 0
[00:02:04.836,494] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:04.897,007] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:04.957,333] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:05.017,691] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:05.518,072] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:05.578,387] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:05.638,764] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:05.699,091] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:06.199,627] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:06.260,103] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:06.320,429] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:06.380,826] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:06.881,179] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:06.941,526] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:07.001,847] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:07.062,165] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:07.562,265] <err> bt_mesh_transport: Ran out of retransmit without progress attempts
[00:02:09.381,174] <dbg> bt_mesh_cfg_srv: dev_comp_data_get: net_idx 0x0000 app_idx 0xfffe src 0x0001 len 1: 00
[00:02:09.381,189] <dbg> bt_mesh_cfg_srv: dev_comp_data_get: Preparing Composition data page 0
[00:02:09.407,837] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:09.468,153] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:09.528,468] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:09.588,785] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:10.089,142] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:10.149,579] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:10.210,023] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:10.270,423] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:10.770,778] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:10.831,094] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:10.891,414] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:10.951,733] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:11.452,086] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:11.512,408] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:11.572,726] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:11.633,265] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:12.133,367] <err> bt_mesh_transport: Ran out of retransmit without progress attempts
[00:02:18.441,334] <dbg> bt_mesh_cfg_srv: dev_comp_data_get: net_idx 0x0000 app_idx 0xfffe src 0x0001 len 1: 00
[00:02:18.441,349] <dbg> bt_mesh_cfg_srv: dev_comp_data_get: Preparing Composition data page 0
[00:02:18.461,993] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:18.522,326] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:18.582,646] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:18.643,001] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:19.143,383] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:19.203,704] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:19.264,024] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:19.324,400] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:19.824,764] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:19.885,076] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:19.945,398] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:20.005,715] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:20.506,104] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:20.566,606] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:20.626,934] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:20.687,252] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:21.187,319] <err> bt_mesh_transport: Ran out of retransmit without progress attempts
[00:02:36.501,977] <dbg> bt_mesh_cfg_srv: dev_comp_data_get: net_idx 0x0000 app_idx 0xfffe src 0x0001 len 1: 00
[00:02:36.501,992] <dbg> bt_mesh_cfg_srv: dev_comp_data_get: Preparing Composition data page 0
[00:02:36.543,777] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:36.604,186] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:36.664,499] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:36.724,823] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:37.225,206] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:37.285,559] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:37.345,878] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:37.406,360] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:37.906,855] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:37.967,293] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:38.027,770] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:38.088,282] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:38.588,630] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:38.648,950] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:38.709,270] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:38.769,587] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:39.269,687] <err> bt_mesh_transport: Ran out of retransmit without progress attempts

Observations: After step 6, Mesh communication could be resumed by performing any of the following:

  • Rebooting the DK.
  • Restarting the nRF Mesh app.
  • Disconnecting the Mesh Proxy Service in the nRF Mesh app and then reconnecting.

Serial Terminal Log:

[00:02:38.769,587] <err> bt_mesh_proxy: Failed to send proxy message (err -22)
[00:02:39.269,687] <err> bt_mesh_transport: Ran out of retransmit without progress attempts
[00:06:03.365,912] <wrn> bt_l2cap: Ignoring data for unknown channel ID 0x003a
[00:06:16.687,531] <dbg> bt_mesh_cfg_srv: dev_comp_data_get: net_idx 0x0000 app_idx 0xfffe src 0x0001 len 1: 00
[00:06:16.687,546] <dbg> bt_mesh_cfg_srv: dev_comp_data_get: Preparing Composition data page 0
[00:06:17.017,734] <dbg> bt_mesh_cfg_srv: default_ttl_get: net_idx 0x0000 app_idx 0xfffe src 0x0001 len 0:

The issue does NOT occur in the following cases:

  • If I connect to the Mesh Proxy Service advertisement instead of the SMP Service in step 3.
  • If authentication is disabled (i.e., when `overlay-smp-bt-auth.conf` is not included in the build).

Since this issue is reproducible using the standard sample program and official apps available on the App Store, it should be easy to verify on your end.
Thank you for your time and assistance.

Best regards,

a.da

  • Hello a.da,

    My apologies for the long silence. I was reassigned from DevZone, thus I couldn't focus on this for a long time. Meanwhile, I can no longer reproduce the issue, which makes investigation, addressing the root cause, and recording the issue difficult.

    Therefore, if you can still reproduce the issues, it would be very helpful if you can give us the details. I do still remember that you already wrote very detailed reproduction steps in the opening post, but even with that, I still fail to reproduce.

    Nonetheless, for the sample particularly, removing the SMP Service advertising set is still a viable workaround.

    a.da said:
    I assume that broadcasting two separate sets was originally an intentional design to support Mesh DFU.
    While disabling the dedicated set avoids the current issue, is there any functional downside to reducing the number of advertising sets?

    There are two advertising sets before:

    1. The Mesh Proxy advertising set.

    2. The SMP Service advertising set.

    Among them, you always need the Mesh Proxy advertising for the Mesh Proxy feature to work correctly.

    Meanwhile, the SMP Service is mostly a nicety. It is a BLE advertisement that says: "This device supports the SMP Service and can be interacted with or updated via SMP." This is nicety, and is entirely optional. It is not required for the functionality itself.

    Only the Device Manager mobile apps require that advertisement to find the device, but that is purely because that is an app that is designed to only look for such advertisements (for evaluation purpose).

    a.da said:
    it results in a build error because the relative path becomes invalid.
    Is this behavior intentional?

    It is not intentional. I have made another commit to address that.

    Best regards,

    Hieu

Related