Legacy DFU Failure on Newer App

We have a product created with the BMD350 from Ublox (formerly Rigado). It is based on the nRF52832. it uses SDK 12 and implements the Legacy DFU. Updating to a newer SDK is not an option.

We have a cross platform mobile app that has implemented the Legacy DFU process to update it.

The DFU process works fine on the current version of our app.

We are making changes to the app to do things a little differently, but the DFU process is identical. We are calling the DFU process a little differently, but I have not been able to diagnose what the difference really is.

When we want to start DFU we subscribe to indications on the DFU characteristic and then send the 01 OP code.

This works every time in the old app. In the new app it works sometimes.

When it does work there seems to be about 800ms between when we get the 20 01 01 response from the device and when we get the disconnect notification.

When it does NOT work there is about 100ms between when we get the 20 01 01 response from the device and the disconnect notification.

In both cases we get the response bytes and the device disconnects.

When it doesn't work the disconnect comes faster and the device keeps advertising the normal name instead of the DFU name. When it works the disconnect takes about 800ms and it then starts advertising the DFU name.

Can someone tell me what might be going on here?

Related