NordicSemiconductor/IOS-DFU-Library

DFU process gets stuck after a few retries

juliansteenbakker opened this issue · 0 comments

DFU Bootloader version

  • SDK version: SDK 15.2.0
  • Bonding used: No
  • Library version: 4.13.0 and master

Device information

  • Device: iPad 2019
  • OS: iOS 16.2

Describe the bug
I've created a plugin for Flutter which uses this pod. If a DFU has failed, i retry it up to 10 times. On Android with the android pod, this works without a problem, however on the iOS pod the process gets stuck after 2, 3 or sometimes 4 retries. Below you can see the log. It seems like it gets stuck after D: centralManager.cancelPeripheralConnection(peripheral). I've searched through the code and saw it gets printed here:

self.logger.d("centralManager.cancelPeripheralConnection(peripheral)")

I've tried searching why it hangs on this point after the second time, but i couldn't find the source of the problem. I hope someone else has a clue as to what happens here.

Logs

(first retry)
D: [Callback] Central Manager did update state to: Powered ON
V: Connecting to device...
D: centralManager.connect(peripheral, options: nil)
W: Connection timeout!
D: centralManager.cancelPeripheralConnection(peripheral)
E: [Callback] Central Manager failed to connect to peripheral (timeout)
flutter: PlatformException(201, DFU FAILED: Device failed to connect, Address: (removed), Error type 201, null)
(second retry)
D: [Callback] Central Manager did update state to: Powered ON
V: Connecting to device...
D: centralManager.connect(peripheral, options: nil)
W: Connection timeout!
D: centralManager.cancelPeripheralConnection(peripheral)
(stops working from here)