I am using NRF-52832 on a custom hardware. It works well on Android but on IOS (e.g. iPhone 7) it disconnects after 30 seconds.
After analysing with the sniffer, its observed that the connection is terminated by the MASTER with the error with the LL_TERMINATE_IND.
Specifically, with an Error Code (0x13) : meaning Remote user terminated connection.
I read through similar unexpected disconnect problems on the forum for about two weeks and tried the ideas mentioned to no avail. As mentioned, it works on Android but this problem occurs only on IOS. I'll appreciate your help.
Here are some information about my system , program and snipper.
System:
- SDK 13
- pca10040
- s132
IDE:
- Kiel uVision5
MTU :
247
Here is the sniffer log from Wireshark: conn_ios-1-7.pcapng
My Configuration are:
#define APP_ADV_INTERVAL 300 /**< The advertising interval (in units of 0.625 ms. This value corresponds to 187.5 ms). */
#define APP_ADV_TIMEOUT_IN_SECONDS 180 /**< The advertising timeout in units of seconds. */
#define MIN_CONN_INTERVAL MSEC_TO_UNITS(20, UNIT_10_MS) /**< Minimum acceptable connection interval (0.1 seconds). */
#define MAX_CONN_INTERVAL MSEC_TO_UNITS(250, UNIT_10_MS) /**< Maximum acceptable connection interval (0.2 second). */
// TEMP COMMENT
#define SLAVE_LATENCY 0 /**< Slave latency. */
#define CONN_SUP_TIMEOUT MSEC_TO_UNITS(4000, UNIT_10_MS) /**< Connection supervisory timeout (4 seconds). */
#define CONN_CFG_TAG 1 /**< A tag that refers to the BLE stack configuration we set with @ref sd_ble_cfg_set. Default tag is @ref BLE_CONN_CFG_TAG_DEFAULT. */
#define FIRST_CONN_PARAMS_UPDATE_DELAY APP_TIMER_TICKS(5000) /**< Time from initiating event (connect or start of notification) to first time sd_ble_gap_conn_param_update is called (5 seconds). */
#define NEXT_CONN_PARAMS_UPDATE_DELAY APP_TIMER_TICKS(30000) /**< Time between each call to sd_ble_gap_conn_param_update after the first call (30 seconds). */
#define MAX_CONN_PARAMS_UPDATE_COUNT 3 /**< Number of attempts before giving up the connection parameter negotiation. */