DFU over BLE using MCUMgr fails with “No available ACL buffers!” and “Unexpected first L2CAP frame” – SDK v2.8.0

Hello Nordic team,

I've recently upgraded my application from nRF Connect SDK v2.7.0 to v2.8.0, and the previous BLE Disconnect issue has been resolved — thanks again for your support!

However, I am now facing a new issue during DFU over BLE using MCUMgr. While DFU via mobile app works fine, using MCUMgr CLI often leads to the following errors:

E: No available ACL buffers!
E: Unexpected first L2CAP frame

These typically appear right after the log: 'Connection parameters updated' During each iteration.

After several iterations, at a random point, the device stops responding and the Disconnect event is not triggered, leading to failed reconnection attempts from MCUMgr.

Key Differences I observed are:

  • Mobile App DFU: Single connection during file transfer.

  • MCUMgr DFU: Multiple rapid connection/disconnection cycles per session.

This issue did not occur with SDK v2.7.0, and only started after migrating to v2.8.0.

I’m following this MCUMgr DFU process:
https://docs.nordicsemi.com/bundle/ncs-3.0.1/page/nrf/app_dev/bootloaders_dfu/dfu_tools_mcumgr_cli.html

Questions:

  1. Are there any changes in buffer handling or controller-side behavior in SDK v2.8.0 that might explain this?

  2. Should I tune CONFIG_BT_BUF_ACL_RX_COUNT, TX_COUNT, or related L2CAP parameters?

  3. Is there a recommended way to handle these frequent connections/disconnections more robustly?

Logs for reference:

Following is one of the log for the reference:
[2025-07-15 18:32:55.416] I: 711689 [SWU]SMP BLE advertising started
[2025-07-15 18:32:55.416] I: 711693 [DL]DFU over SMP started
[2025-07-15 18:33:10.193] I: 726498 [DL]Current number of connections: 1/1
[2025-07-15 18:33:10.215] I: BLE Connected
[2025-07-15 18:33:10.422] I: 726726 [DL]Current number of connections: 0/1
[2025-07-15 18:33:10.438] I: BLE Disconnected: 13
[2025-07-15 18:33:16.322] I: 732607 [DL]Current number of connections: 1/1
[2025-07-15 18:33:16.323] I: BLE Connected
[2025-07-15 18:33:16.546] I: 732837 [DL]DFU Image upload started
[2025-07-15 18:33:17.370] I: Connection parameters updated.
[2025-07-15 18:33:17.370]  interval: 9, latency: 0, timeout: 42
[2025-07-15 18:33:25.985] I: 742273 [DL]Image 0 download completed successfully
[2025-07-15 18:33:26.012] I: 742296 [DL]Current number of connections: 0/1
[2025-07-15 18:33:26.012] I: 742301 [DL]DFU-BLE-Disconnected : 19
[2025-07-15 18:33:26.012] I: BLE Disconnected: 13
[2025-07-15 18:33:38.259] I: 754544 [DL]Current number of connections: 1/1
[2025-07-15 18:33:38.259] I: BLE Connected
[2025-07-15 18:33:38.483] I: 754775 [DL]DFU Image upload started
[2025-07-15 18:33:39.308] I: Connection parameters updated.
[2025-07-15 18:33:39.308]  interval: 9, latency: 0, timeout: 42
[2025-07-15 18:34:20.727] I: 797016 [DL]Image 1 download completed successfully
[2025-07-15 18:34:20.749] I: 797035 [DL]Current number of connections: 0/1
[2025-07-15 18:34:20.750] I: 797039 [DL]DFU-BLE-Disconnected : 19
[2025-07-15 18:34:20.750] I: BLE Disconnected: 13
[2025-07-15 18:34:27.892] I: 804177 [DL]Current number of connections: 1/1
[2025-07-15 18:34:27.892] I: BLE Connected
[2025-07-15 18:34:28.115] I: 804417 [DL]DFU Image upload started
[2025-07-15 18:34:28.957] I: Connection parameters updated.
[2025-07-15 18:34:28.957]  interval: 9, latency: 0, timeout: 42
[2025-07-15 18:34:28.957] E: No available ACL buffers!
[2025-07-15 18:34:28.973] E: Unexpected first L2CAP frame
[2025-07-15 18:38:53.691] I: 1069979 [DL]Image 2 download completed successfully
[2025-07-15 18:38:53.691] I: 1069997 [DL]Current number of connections: 0/1
[2025-07-15 18:38:53.711] I: 1070001 [DL]DFU-BLE-Disconnected : 19
[2025-07-15 18:38:53.711] I: BLE Disconnected: 13
[2025-07-15 18:39:01.356] I: 1077664 [DL]Current number of connections: 1/1
[2025-07-15 18:39:01.372] I: BLE Connected
[2025-07-15 18:39:01.612] I: 1077899 [DL]Current number of connections: 0/1
[2025-07-15 18:39:01.612] I: BLE Disconnected: 13
[2025-07-15 18:39:05.960] I: 1082249 [DL]Current number of connections: 1/1
[2025-07-15 18:39:05.960] I: BLE Connected
[2025-07-15 18:39:06.174] I: 1082463 [DL]DFU_ImgConfirmHandler: Nordic Image Confirmed by MCUMgr
[2025-07-15 18:39:06.190] I: 1082497 [DL]Current number of connections: 0/1
[2025-07-15 18:39:06.206] I: BLE Disconnected: 13
[2025-07-15 18:39:13.392] I: 1089681 [DL]Current number of connections: 1/1
[2025-07-15 18:39:13.392] I: BLE Connected
[2025-07-15 18:39:13.606] I: 1089896 [DL]DFU_ImgConfirmHandler: Nordic Image Confirmed by MCUMgr
[2025-07-15 18:39:13.623] I: 1089929 [DL]Current number of connections: 0/1
[2025-07-15 18:39:13.638] I: BLE Disconnected: 13
[2025-07-15 18:39:21.267] I: 1097576 [DL]Current number of connections: 1/1
[2025-07-15 18:39:21.289] I: BLE Connected
[2025-07-15 18:39:21.576] I: dfu_header_data.image_count: 4
[2025-07-15 18:39:22.341] I: Connection parameters updated.
[2025-07-15 18:39:22.341]  interval: 9, latency: 0, timeout: 42

Best regards,
Prashant

Parents
  • Hello Prashant,

    I don't think this is specific to the Bluetooth controller, it is more of an nRF Connect SDK issue related to how the Bluetooth Host and Controller manage ACL buffers and timing.
    I looked into the generated configs, can you see if increasing both CONFIG_BT_BUF_ACL_RX_COUNT and CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA resolves the issue? If not, please share the complete log here.

    Sorry for getting back to you on this late. It's summer vacation here in Norway, and many are on vacation, which created the delay in responding.

    Kind regards,
    Abhijith

  • Hello Abhijith,

    As per your suggestion, we have used six different configurations in our code as below and compiled each one individually. We have completed testing for all six configurations built, but unfortunately, no noticeable improvements were observed.

     

    Test-1: 
    nRF5340 App Version: 17.37.01.03
    CONFIG_BT_BUF_ACL_RX_COUNT  = 6
    CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA = 4

     

    Test-2: 
    nRF5340 App Version: 17.37.02.03
    CONFIG_BT_BUF_CMD_TX_COUNT = 13
    CONFIG_BT_BUF_ACL_RX_COUNT  = 6
    CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA = 6

     

    Test-3: 
    nRF5340 App Version: 17.37.03.03
    CONFIG_BT_BUF_CMD_TX_COUNT = 19
    CONFIG_BT_BUF_ACL_RX_COUNT  = 6
    CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA = 12

     

    Test-4: 
    nRF5340 App Version: 17.37.04.03
    CONFIG_BT_BUF_CMD_TX_COUNT = 25
    CONFIG_BT_BUF_ACL_RX_COUNT  = 6
    CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA = 18

     

    Test-5: 
    nRF5340 App Version: 17.37.05.03
    CONFIG_BT_BUF_CMD_TX_COUNT = 15
    CONFIG_BT_BUF_ACL_RX_COUNT  = 10
    CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA = 4

     

    Test-6.
    nRF5340 App Version: 17.37.06.03
    CONFIG_BT_BUF_CMD_TX_COUNT = 19
    CONFIG_BT_BUF_ACL_RX_COUNT  = 10
    CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA = 8

     

    We have attached the nRF5340 Application debug logs for all test cases, along with the generated .config files for both AppCore and NetCore.

     Kindly investigate the issue further and advise if there is any SDK cherry-pick that could potentially resolve this problem.

    Attachment: 

    TestResult&Configuration.zip

    Thanks & Regards,
    Prashant Humbre

     

Reply
  • Hello Abhijith,

    As per your suggestion, we have used six different configurations in our code as below and compiled each one individually. We have completed testing for all six configurations built, but unfortunately, no noticeable improvements were observed.

     

    Test-1: 
    nRF5340 App Version: 17.37.01.03
    CONFIG_BT_BUF_ACL_RX_COUNT  = 6
    CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA = 4

     

    Test-2: 
    nRF5340 App Version: 17.37.02.03
    CONFIG_BT_BUF_CMD_TX_COUNT = 13
    CONFIG_BT_BUF_ACL_RX_COUNT  = 6
    CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA = 6

     

    Test-3: 
    nRF5340 App Version: 17.37.03.03
    CONFIG_BT_BUF_CMD_TX_COUNT = 19
    CONFIG_BT_BUF_ACL_RX_COUNT  = 6
    CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA = 12

     

    Test-4: 
    nRF5340 App Version: 17.37.04.03
    CONFIG_BT_BUF_CMD_TX_COUNT = 25
    CONFIG_BT_BUF_ACL_RX_COUNT  = 6
    CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA = 18

     

    Test-5: 
    nRF5340 App Version: 17.37.05.03
    CONFIG_BT_BUF_CMD_TX_COUNT = 15
    CONFIG_BT_BUF_ACL_RX_COUNT  = 10
    CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA = 4

     

    Test-6.
    nRF5340 App Version: 17.37.06.03
    CONFIG_BT_BUF_CMD_TX_COUNT = 19
    CONFIG_BT_BUF_ACL_RX_COUNT  = 10
    CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA = 8

     

    We have attached the nRF5340 Application debug logs for all test cases, along with the generated .config files for both AppCore and NetCore.

     Kindly investigate the issue further and advise if there is any SDK cherry-pick that could potentially resolve this problem.

    Attachment: 

    TestResult&Configuration.zip

    Thanks & Regards,
    Prashant Humbre

     

Children
No Data
Related