Using nrfConnect 4.5.3 on Android - with a .zip package generated using nrfutil ~3.5.1 I am seeing an error reported at the end of a DFU session. When the update reaches 100%, the device remains in DFU mode and nrfConnect starts the update over again. The update/retry sequence repeats indefinitely. The log from nrfConnect at the end of a DFU cycle shows the following:
The .zip package was generated sometime ago and I'm fairly certain that previous versions of nrfConnect were able to perform the update.
nrfConnect Version 4.24.3Device Name: Pixel 4Android Version: 11Manufacturer: GoogleBuild Version RQ1A.210105.003
It's strange that it consistently reaches 100%, but then fails to activate the new app. Maybe it's failing in the post validation step where the bootloader validates the integrity check of the received FW image. Could you please try to update the same DFU package with our nRF toolbox, or with a different phone and see if it gives the same result?
The .zip loads successfully from users of the iOS nrfConnect (not specifically sure what version) and also with our own linux DFU implementation. Will try with nrfToolbox.
Thanks for confirming, so it seems like the DFU package is valid at least. It would be good to know if you get the same result with the nRF toolbox to narrow down the problem a bit. I do not recall seeing reports of similiar behaviour before.
Thanks for the suggestion. We have tried with nrf Toolbox and are able successfully DFU with the same setup. What are the implementation differences for the DFU process between nrf Toolbox and nrf Connect?
It may be a different Dfu lib version in the apps. But the invalid object error is returned from the device. The only reason why would a different status be returned, apart from different zip file or initial conditions, is some difference in timing on both apps.
Thanks again for confirming. I suspect the INVALID_OBJECT error (older bootloader version did not have extended error range) is indicating a failure in the post-validation step in this case, but it is not clear why it happens. Could you try enabling "Packets receipt notification" with one packet in nRF connect -> Settings -> Dfu options to see if make any difference.
I used the following setup to try replicate the issue:
- Pixel 2 Android 11
- nRF Connect 4.24.3
- nRF5 SDK 12.3.0
- nRF52 DK
When I took a look in the settings, the PRN was already enabled. With PRN disabled, the same behavior occurs.
Does it not work with PRN enabled either? In that case, what was the PRN set to, and have you tried to test with '1' (will make DFU really slow).