I am performing a BLE DFU update on an nRF52840 using the nRF Connect Android app (v4.29.1). The app successfully uploads the DFU package and reports that the update is completed. However, after rebooting the device, the firmware remains unchanged when checking the version.
The same DFU package works correctly on an iPhone using the nRF Connect iOS app, so the issue seems to be specific to the Android version of the app.
I am using MCUBoot as the bootloader. The DFU package (.zip
) is automatically generated when building the project and contains:
app_update.bin
manifest.json
Setup Details:
- Device: nRF52840
- SDK Version: 2.5.2
- Bootloader: MCUBoot
- DFU Package:
- Generated directly during the build process (not manually created with
nrfutil
orwest
). - Contains
app_update.bin
andmanifest.json
.
- Generated directly during the build process (not manually created with
- nRF Connect for Android Version: 4.29.1
- nRF Connect for iOS Version: 2.7.16
Observed Behavior:
-
Android App (v4.29.1):
- DFU process completes successfully.
- After reboot, the firmware version remains the same (update not applied).
-
iOS App (v2.7.16):
- DFU process completes successfully.
- After reboot, the firmware version updates correctly.
Troubleshooting Attempted:
Tried different Android devices.
Cleared cache and reinstalled nRF Connect for Android.
Restarted Bluetooth and toggled Airplane Mode before DFU.
Verified that MCUBoot settings are properly updated.
Manually checked firmware version post-update.
Compared logs between Android and iOS (Android logs show DFU as successful).
Request for Support:
- Has anyone experienced similar behavior with MCUBoot + nRF Connect Android v4.29.1?
- Are there known differences in how DFU is handled between iOS and Android?
- Any suggestions on additional debugging steps or fixes?
Any help would be appreciated!