You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mynewt.apache.org by Henry Hunt <he...@seamlessdigital.com> on 2022/12/07 16:26:09 UTC

NimBLE: Exchanging MTU breaks when maximum number of concurrent connections is set to 1

Hi all,

I’m working on an ESP32-based Bluetooth LE peripheral using the NimBLE stack (ESP-IDF version 4.4.2) and have come across an issue that occurs when the maximum number of concurrent connections is set to 1 (but not 2 or 3). In this case, performing an MTU exchange only works once ever, until the device is power cycled. Following that second MTU exchange, other BLE operations (such as service discovery or reading characteristics) that are done during the same connection do not succeed.

The issue is easily reproducible with the existing bleprph example:


  *   Create a new ESP project using the bleprph template
  *   In SDKConfig, change “maximum number of concurrent connections” from 3 to 1
  *   Using the nRF Connect mobile app:
     *   Connect to the peripheral
     *   Request an MTU exchange from the menu. The requested MTU value is shown in the ESP serial output.
     *   Disconnect, reconnect, and perform another MTU exchange. The MTU value (which comes from the BLE_GAP_EVENT_MTU event) shown in the ESP serial output is 0.
     *   Select “read characteristics” in the menu. See that there is a GATT error of 0x85 after some time and the connection terminates.
     *   Reconnect and try "read characteristics" again. See that it completes successfully.
     *   Perform another MTU exchange and see 0 in the ESP serial output
     *   Try "read characteristics" again and see that it fails.

Thoughts?

Thanks,
Henry