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

  • Hello,

    Could you share the prj.conf you are using for your application? See this known issue.

    Kind Regards,

    Abhijith

  • While reviewing similar DevZone tickets related to the "No available ACL buffers!" and "Unexpected first L2CAP frame" errors, I came across discussions suggesting these issues might originate from the central side, not the peripheral.

    To test this, I changed the Bluetooth dongle on the central side from Bluetooth 4.0 to Bluetooth 5.0, and surprisingly, the error logs no longer appeared during the DFU process with MCUMgr.

    This raises a concern:
    What is the root cause of this incompatibility?
    In real-world deployments, I cannot expect end users to always have Bluetooth 5.0-capable devices. Many may still use phones supporting only Bluetooth 4.0.

    Could you please help clarify:

    • Is this issue specific to older Bluetooth controllers?

    • Are there known workarounds to improve compatibility with Bluetooth 4.0 centrals?

    Thanks again for your support!

    Best regards,
    Prashant

  • I checked the workaround mentioned in the Know Issue mentioned by you, but its not working.
    Instead of sharing the prj.conf file, this is the \build\lock\zephyr\.config file:
    1362.config

    Let me know if it helps.

    Thanks & regards,

    Prashant H.

  • 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

     

Related