Hello everybody,
I'm using nRF5280 (Laird BL654) with SoftDeveice S140v6.1.0 and SDK 15.2.0 with a modified version of the blinky peripheral example.
I've changed NRF_SDH_BLE_GATT_MAX_MTU_SIZE to 138 and NRF_SDH_BLE_GAP_DATA_LENGTH to 142
After connecting to this chip with a Samsung Galaxy S7 with Android 8.0.0 the chip disconnects with reason 0x22 (LMP Response Timeout).
I've attached the debug log from SES.
Galaxy S7 Android 8.0.0 MTU 138 Bytes <debug> nrf_sdh_ble: RAM starts at 0x20002768 <info> app: Blinky example started. <debug> nrf_sdh_ble: BLE event: 0x10. <debug> nrf_ble_gatt: Requesting to update ATT MTU to 138 bytes on connection 0x0. <debug> nrf_ble_gatt: Updating data length to 142 on connection 0x0. <info> app: Connected <debug> nrf_sdh_ble: BLE event: 0x3A. <debug> nrf_ble_gatt: ATT MTU updated to 138 bytes on connection 0x0 (response). <debug> nrf_sdh_ble: BLE event: 0x12. <debug> nrf_sdh_ble: BLE event: 0x12. <debug> nrf_sdh_ble: BLE event: 0x12. <debug> nrf_sdh_ble: BLE event: 0x11. <info> app: Disconnected reason: 0x22
This problem occures only with this specific phone and if the MTU is larger than 23.
For example this is the debug log of a connection with a Galaxy S9 with Android 9.0.0 and an MTU of 138.
alaxy S9 Android 9.0.0 MTU 138 Bytes <debug> nrf_sdh_ble: RAM starts at 0x20002768 <info> app: Blinky example started. <debug> nrf_sdh_ble: BLE event: 0x10. <debug> nrf_ble_gatt: Requesting to update ATT MTU to 138 bytes on connection 0x0. <debug> nrf_ble_gatt: Updating data length to 142 on connection 0x0. <info> app: Connected <debug> nrf_sdh_ble: BLE event: 0x3A. <debug> nrf_ble_gatt: ATT MTU updated to 138 bytes on connection 0x0 (response). <debug> nrf_sdh_ble: BLE event: 0x24. <debug> nrf_ble_gatt: Data length updated to 142 on connection 0x0. <debug> nrf_ble_gatt: max_rx_octets: 27 <debug> nrf_ble_gatt: max_tx_octets: 142 <debug> nrf_ble_gatt: max_rx_time: 328 <debug> nrf_ble_gatt: max_tx_time: 2120 <debug> nrf_sdh_ble: BLE event: 0x12. <debug> nrf_sdh_ble: BLE event: 0x23. <debug> nrf_ble_gatt: Peer on connection 0x0 requested a data length of 27 bytes. <debug> nrf_ble_gatt: Updating data length to 27 on connection 0x0. <debug> nrf_sdh_ble: BLE event: 0x24. <debug> nrf_ble_gatt: Data length updated to 27 on connection 0x0. <debug> nrf_ble_gatt: max_rx_octets: 27 <debug> nrf_ble_gatt: max_tx_octets: 27 <debug> nrf_ble_gatt: max_rx_time: 328 <debug> nrf_ble_gatt: max_tx_time: 2120 <debug> nrf_sdh_ble: BLE event: 0x12. <debug> nrf_sdh_ble: BLE event: 0x12.