Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

IOS 12.2 <-> SDK15.3 SD6.1 MTU Size issue

Hello,

Device NRF52 SDK15.3 SD 6.1 BLE_APP_UART

Host: IPAD mini 5th generation IOS 12.2

we are trying to configure BLE_APP_UART to communicate with IOS 12.2 device with max MTU size 244 bytes, but we are getting only 182.

We did modify GATT_INIT(...) function but still something is missing:

<code>

/**@brief Function for initializing the GATT library. */
void gatt_init(void){
ret_code_t err_code;
ble_opt_t opt;

err_code = nrf_ble_gatt_init(&m_gatt, gatt_evt_handler);
APP_ERROR_CHECK(err_code);

memset(&opt, 0x00, sizeof(opt)); // Extend connection option
opt.common_opt.conn_evt_ext.enable = 1;
err_code = sd_ble_opt_set(BLE_COMMON_OPT_CONN_EVT_EXT, &opt);
APP_ERROR_CHECK(err_code);

err_code = nrf_ble_gatt_att_mtu_periph_set(&m_gatt, 247); //NRF_SDH_BLE_GAP_DATA_LENGTH); 
APP_ERROR_CHECK(err_code);

err_code = nrf_ble_gatt_att_mtu_central_set(&m_gatt, NRF_SDH_BLE_GAP_DATA_LENGTH);
APP_ERROR_CHECK(err_code);

err_code = nrf_ble_gatt_data_length_set(&m_gatt, BLE_CONN_HANDLE_INVALID, NRF_SDH_BLE_GAP_DATA_LENGTH);
APP_ERROR_CHECK(err_code);
}

</code>

when we communicate with NRF Connect we are getting desired 244 data length , but it still something missing with IOS.

Can you please have a look and advise?

Thank you,

Andrew

Parents
  • after further investigation and comparing wireshark captures between connection to NRF connect and IOS device we made interesting observation:

    after connection is established , IOS device sends LL_Version_IND command , then slave requesting MTU 247 and master replys with 185

    bellow the screen capture related to "LL_Version_IND" command.

    Not sure what it does, but this just observation we made. So technically any kind of length negotiation after MTU set @ 185 is pointless.. We just sharing this data to provide more info, and looking forward to your expert advise.

    Thank you,

    andrew

Reply
  • after further investigation and comparing wireshark captures between connection to NRF connect and IOS device we made interesting observation:

    after connection is established , IOS device sends LL_Version_IND command , then slave requesting MTU 247 and master replys with 185

    bellow the screen capture related to "LL_Version_IND" command.

    Not sure what it does, but this just observation we made. So technically any kind of length negotiation after MTU set @ 185 is pointless.. We just sharing this data to provide more info, and looking forward to your expert advise.

    Thank you,

    andrew

Children
No Data
Related