What is the expected success rate of a DFU update?

We have both native iOS and Android-apps that handle DFU-updates of our BLE-FW on our HW-devices. We are currently experiencing a dip in success rate (according to our firebase metrics) on Android, where we seem to get an increased number of "GATT ERROR" during updates (no further information is available).

On Android we used to have a success rate of above 95%, and now we're down to 66% for no apparent reason (i.e. no changes to the app code handling the update, only the binary file has changed). iOS seems to succeed better, and stays around 90-95% as before.

Is there some form of "suspected success rate" on Android and on iOS (particularly interesting on Android due to the vastness of HW variants) for this chip that we can use as a "baseline" for what can be expected?

Parents
  • I managed to recreate the issue myself (not sure if this issue is identical to those "in the wild"):

    08-15 16:20:01.171 23947 24112 D BluetoothGatt: connect() - device: F6:42:C9:C2:D1:1D, auto: false
    08-15 16:20:01.171 23947 24112 D BluetoothGatt: registerApp()
    08-15 16:20:01.171 23947 24112 D BluetoothGatt: registerApp() - UUID=a605406e-4cd7-4fc7-93a1-6a259ba00ed6
    08-15 16:20:01.176  2621  3184 I bluetooth: packages/modules/Bluetooth/system/stack/gatt/gatt_api.cc:1020 GATT_Register: Allocated name:GattClient uuid:e7f2cb30-e8a6-db97-55d1-5642cf64085a gatt_if:6 eatt_support:0
    08-15 16:20:01.176 23947 23961 D BluetoothGatt: onClientRegistered() - status=0 clientIf=6
    08-15 16:20:01.181  2621  2755 I bt_btif_gattc: packages/modules/Bluetooth/system/btif/src/btif_gatt_client.cc:365 btif_gattc_open_impl: Transport=2, device type=2, address type =1, phy=3
    08-15 16:20:01.182  2621  3184 I bt_stack: [INFO:gatt_attr.cc(882)] gatt_sr_init_cl_status: bda=f6:42:c9:c2:d1:1d, cl_supp_feat=0000, aware=1
    08-15 16:20:01.182  2621  3184 I bluetooth: packages/modules/Bluetooth/system/stack/gatt/gatt_main.cc:346 gatt_update_app_use_link_flag: check_acl_link is false, no need to check
    08-15 16:20:01.190  2621  2995 I bluetooth: packages/modules/Bluetooth/system/gd/hci/le_address_manager.cc:514 OnCommandComplete: Received command complete with op_code LE_ADD_DEVICE_TO_FILTER_ACCEPT_LIST
    08-15 16:20:01.949  2621  3184 I bluetooth: packages/modules/Bluetooth/system/stack/gatt/connection_manager.cc:215 on_connection_complete: Le connection completed to device:f6:42:c9:c2:d1:1d
    08-15 16:20:01.949  2621  3184 I bluetooth: packages/modules/Bluetooth/system/stack/gatt/connection_manager.cc:215 on_connection_complete: Le connection completed to device:f6:42:c9:c2:d1:1d
    08-15 16:20:01.949  2621  3184 I bt_btm_ble: packages/modules/Bluetooth/system/stack/btm/btm_ble.cc:1720 btm_ble_connected: Updating device record timestamp for existing ble connection
    08-15 16:20:01.968  2621  3184 E bt_btm  : packages/modules/Bluetooth/system/main/bte_logmsg.cc:191 LogMsg: no pending resolving list operation
    08-15 16:20:01.970  2621  2995 I bluetooth: packages/modules/Bluetooth/system/gd/hci/le_address_manager.cc:514 OnCommandComplete: Received command complete with op_code LE_REMOVE_DEVICE_FROM_FILTER_ACCEPT_LIST
    08-15 16:20:02.195  2621  3184 E bt_btm_ble: packages/modules/Bluetooth/system/stack/btm/btm_ble_gap.cc:3150 btm_ble_read_remote_features_complete: Failed to read remote features status:Connection Failed Establishment
    08-15 16:20:02.195  2621  3184 E bluetooth: packages/modules/Bluetooth/system/stack/btm/btm_sco.cc:950 btm_sco_on_disconnected: Unable to find sco connection
    08-15 16:20:02.195  2621  3184 I btm_acl : packages/modules/Bluetooth/system/stack/acl/btm_acl.cc:2569 btm_acl_iso_disconnected: ISO disconnection from GD, handle: 0x10, reason: 0x3e
    08-15 16:20:02.196  2621  3184 I bluetooth: packages/modules/Bluetooth/system/stack/gap/gap_ble.cc:303 client_connect_cback: No active GAP service found for peer:xx:xx:xx:xx:d1:1d callback:Disconnected
    08-15 16:20:02.196  2621  3184 I bt_bta_gattc: packages/modules/Bluetooth/system/bta/gatt/bta_gattc_act.cc:1212 bta_gattc_conn_cback: Disconnected att_id:3 addr:xx:xx:xx:xx:d1:1d, transport:BT_TRANSPORT_LE reason:GATT_CONN_FAILED_ESTABLISHMENT
    08-15 16:20:02.196  2621  3184 I bt_bta_gattc: packages/modules/Bluetooth/system/bta/gatt/bta_gattc_act.cc:1212 bta_gattc_conn_cback: Disconnected att_id:4 addr:xx:xx:xx:xx:d1:1d, transport:BT_TRANSPORT_LE reason:GATT_CONN_FAILED_ESTABLISHMENT
    08-15 16:20:02.196  2621  3184 I bt_bta_gattc: packages/modules/Bluetooth/system/bta/gatt/bta_gattc_act.cc:1212 bta_gattc_conn_cback: Disconnected att_id:5 addr:xx:xx:xx:xx:d1:1d, transport:BT_TRANSPORT_LE reason:GATT_CONN_FAILED_ESTABLISHMENT
    08-15 16:20:02.196  2621  3184 I bt_bta_gattc: packages/modules/Bluetooth/system/bta/gatt/bta_gattc_act.cc:1212 bta_gattc_conn_cback: Disconnected att_id:6 addr:xx:xx:xx:xx:d1:1d, transport:BT_TRANSPORT_LE reason:GATT_CONN_FAILED_ESTABLISHMENT
    08-15 16:20:02.196  2621  3184 W bt_btm_sec: packages/modules/Bluetooth/system/stack/btm/btm_sec.cc:3747 btm_sec_disconnected: Got uncommon disconnection reason:Connection Failed Establishment handle:0x0010 comment:stack::acl::btm_acl::btm_acl_disconnected
    08-15 16:20:02.196  2621  3184 E bta_gattc_main: packages/modules/Bluetooth/system/bta/gatt/bta_gattc_main.cc:395 bta_gattc_hdl_event: Ignore unknown conn ID: 3
    08-15 16:20:02.196  2621  3184 E bta_gattc_main: packages/modules/Bluetooth/system/bta/gatt/bta_gattc_main.cc:395 bta_gattc_hdl_event: Ignore unknown conn ID: 4
    08-15 16:20:02.196  2621  3184 E bta_gattc_main: packages/modules/Bluetooth/system/bta/gatt/bta_gattc_main.cc:395 bta_gattc_hdl_event: Ignore unknown conn ID: 5
    08-15 16:20:02.196  2621  3184 W bt_stack: [WARNING:bta_gattc_act.cc(365)] bta_gattc_open_fail: Cannot establish Connection. conn_id=000000. Return GATT_ERROR(133)
    08-15 16:20:02.197 23947 23961 D BluetoothGatt: onClientConnectionState() - status=133 clientIf=6 device=F6:42:C9:C2:D1:1D
    08-15 16:20:02.197 23947 23961 E DfuBaseService: Connection state change error: 133 newState: 0
    08-15 16:20:02.197 23947 24112 I DfuBaseService: Connection error after: 1031 ms
    08-15 16:20:02.197 23947 24112 E DfuBaseService: An error occurred while connecting to the device:133
    08-15 16:20:02.198 23947 24112 I DfuBaseService: Attempt: 3
    08-15 16:20:02.204 23947 24112 I DfuBaseService: Cleaning up...
    08-15 16:20:02.204 23947 24112 D BluetoothGatt: cancelOpen() - device: F6:42:C9:C2:D1:1D
    08-15 16:20:02.209  2621  2755 I bt_btif_gattc: packages/modules/Bluetooth/system/btif/src/btif_gatt_client.cc:382 btif_gattc_close_impl: client_if=6, conn_id=0, address=xx:xx:xx:xx:d1:1d
    08-15 16:20:02.209  2621  3184 E bt_stack: [ERROR:bta_gattc_act.cc(317)] No such connection need to be cancelled
    08-15 16:20:02.210  2621  3184 E bt_stack: [ERROR:bta_gattc_utils.cc(444)] bta_gattc_mark_bg_conn unable to find the bg connection mask for bd_addr=f6:42:c9:c2:d1:1d
    08-15 16:20:02.210 23947 24112 D BluetoothGatt: close()
    08-15 16:20:02.210 23947 24112 D BluetoothGatt: unregisterApp() - mClientIf=6
    08-15 16:20:02.213  2621  3184 I bt_stack: [INFO:gatt_api.cc(1042)] GATT_Deregister gatt_if=6
    08-15 16:20:02.830  3698  4051 W AiAiEcho: SmartspaceNotificationPredictor no parser can handle this notification or notification is invalid
    08-15 16:20:02.831 23947 23947 D BleFirmwareUpgradeHandler: onError() : F6:42:C9:C2:D1:1D 133 1 GATT ERROR
    08-15 16:20:02.850 23947 23947 E BLE FW UPGRADE: ERROR
    08-15 16:20:02.857 23947 23947 I DfuBaseService: DFU service destroyed
    

  • Hi,

    What phone did you use? Do you see the same if you test with other phones?

Reply Children
Related