Immediate Disconnection with NUS - Error Code 23 (Collision) When Using Python/Rust as Central

Hello everyone,

I'm currently transitioning a project from traditional BLE communication to the Nordic UART Service (NUS). The previous setup worked fine, but after replacing it with NUS, I've run into an issue.

Setup:
Peripheral: Custom hardware running Zephyr (3.7) with NUS.
Centrals: Python (using Bleak) and Rust.
Issue:
The NUS implementation works perfectly with the nRF Connect app. However, when I try to connect using my Python or Rust code as the central, the connection initializes successfully but then immediately disconnects. I'm receiving an error code 23, which I understand signifies a collision.

Details:
The peripheral code is nearly identical to the NUS example provided by Zephyr (docs.zephyrproject.org/.../README.html), with the addition of connected and disconnected callbacks.
The disconnection happens almost instantly after the connection is established.

Additional Information:
My Python and Rust centrals worked with the BMD-380 board for NUS and the custom hardware using the other BLE protocol.

Has anyone experienced a similar issue or have any insights on why this might be happening? Any suggestions for troubleshooting or resolving this collision error would be greatly appreciated!

Thanks in advance for your help!

Parents Reply Children
  • Hello Hung, 

    I encountered an issue today where I did not have access to the DK for the sniffer. Instead, I used the Wireshark USBP Cap and received the following error: "Rcvd Error Response - Attribute Not Found, Handle: 0x0009 (Unknown)." To troubleshoot, I switched to Linux and found that the setup works fine there as well as on the nRF Connect app. However, the issue persists on Windows. (Also, yes HCI code for Collision, BT_HCI_ERR_LL_PROC_COLLISION)

  • Hi Noble, 
    "Rcvd Error Response - Attribute Not Found, Handle: 0x0009 (Unknown)." usually is fine. It's just a part of the service discovery process. It shouldn't cause a disconnection. 
    Please try capture a sniffer trace using a DK so we can take a look. 

Related