Hi Support Team,
For the recent DFU issue "some Android 10 can not connect to the device during the DFU" (https://github.com/NordicSemiconductor/Android-DFU-Library/issues/262),
I've done a workaround "delete dfu_app_peer_data_set in application of firmware" since our product is SDK11 and Single-Bank (can not update bootloader), as Nordic suggested.
Then our product can work well with the Android.
Though I found it can not work with the latest IOS-DFU-Library V4.8.0, which can be replicated easily by Nordic product without our device:
app: the example app in "https://github.com/NordicSemiconductor/IOS-Pods-DFU-Library/" V4.80;
device: "PCA10040 V1.1.0" with "dfu_dual_bank_ble_s132_pca10040.hex" and "\SDK11\examples\ble_peripheral\ble_app_hrs\pca10040\s132_with_dfu\arm4".
When I delete dfu_app_peer_data_set, the example app will report an error "Error 201: Device failed to connect".
Can IOS-DFU-Library V4.8.0 work with firmware no matter it deletes dfu_app_peer_data_set or not?
FYI: it seems that the latest Android DFU library will try to scan the DFU device by both "+1 address" and "not +1", so it can work well with firmware with/without dfu_app_peer_data_set. This is compatiable and elegant, which is what we need.
Have a look at this PR: https://github.com/NordicSemiconductor/IOS-Pods-DFU-Library/pull/374
It added this flag: https://github.com/NordicSemiconductor/IOS-Pods-DFU-Library/blob/fc7e0fb2d4cb28df4590028a0a2b91e02e3894ba/iOSDFULibrary/Classes/Implementation/DFUServiceInitiator.swift#L191 which needs to be set to true if the lib is to look for a new MAC address in Legacy DFU.
I tried this PR before but it only works with the firmware which has deleted dfu_app_peer_data_set.
So, when we suggest our iPhone users to DFU the product for this "delete dfu_app_peer_data_set" workaround, it will be a very bad experience that they need DFU our product firmware first, then update our iOS app for the PR you mentioned for the future DFU.
What we need is a iOS DFU library which can work automatically with BOTH firmware that delete dfu_app_peer_data_set and not, to avoid 1 star of our product and companion app in App Store.
Thank you very much!
You may be right. When the peer data are passed, the bootloader advertises directly with empty adv data, which will without not be reported to the app at all, or at least will fail to pass the Dfu peripheral selector test, making it impossible to comment in any of the cases.
I'll improve the lib today to and will ask you to try it before I will release, is that ok for you?
You may test next week of course, if didn't make it before end of your day.
Oh really appreciate your help.
Will wait this improvement.