This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nRF52 error during DFU process

Hi, 

I'm developing an nRF52 application based on SDK14 and S132 that require the DFU service.

The DFU is not performed using the nRF toolbox application on both of android and iOS with a different error message.

I got one of the error messages below: 

  • Enabling Indication failed : Under iOS_V10.3.2.
  • DFU device not bonded   : Under Android_V6.0.1.

When I tested with the DFU_Buttonless example from SDK14 the DFU performed correctly under Android.

Best Regards,

Mehdi.

Parents
  • Hi Mehdi,

    It seems to me like you did not bond in the application before attempting to do DFU, or that you removed the bond from the phones. Alternatively, simply that your application did not transfer the bonding information to the bootloader correctly. You can refer to the Buttonless DFU Template Application to see how to use DFU with bonding.

    In my opinion, removing the bond between the state when entering DFU mode and actually performing DFU is a significant risk with the bootloader which requires bonding. In this case, the nRF device would stay in bootloader mode, but you would not be able to upgrade it. In SDK 14 there is no timeout in the bootloader, so it would stay in the bootloader. Personally, I advice against using DFU with bonds for this reason, but you do not actually risk bricking the device as the SDK 14 bootloader introduced a inactivity timeout that restarts into the application after 120 seconds of inactivity.

    As an alternative could be to require pairing/bonding in order to write to the DFU characteristic to put the device in bootloader mode, but still use the bootloader without bonds. This way only the bonded phone would be able to put the device in bootloader mode, but any device would be able to upgrade. This in turn does not pose a practical risk, as only an upgrade image with the correct signature will be accepted.

    Best regards,

    Einar

Reply
  • Hi Mehdi,

    It seems to me like you did not bond in the application before attempting to do DFU, or that you removed the bond from the phones. Alternatively, simply that your application did not transfer the bonding information to the bootloader correctly. You can refer to the Buttonless DFU Template Application to see how to use DFU with bonding.

    In my opinion, removing the bond between the state when entering DFU mode and actually performing DFU is a significant risk with the bootloader which requires bonding. In this case, the nRF device would stay in bootloader mode, but you would not be able to upgrade it. In SDK 14 there is no timeout in the bootloader, so it would stay in the bootloader. Personally, I advice against using DFU with bonds for this reason, but you do not actually risk bricking the device as the SDK 14 bootloader introduced a inactivity timeout that restarts into the application after 120 seconds of inactivity.

    As an alternative could be to require pairing/bonding in order to write to the DFU characteristic to put the device in bootloader mode, but still use the bootloader without bonds. This way only the bonded phone would be able to put the device in bootloader mode, but any device would be able to upgrade. This in turn does not pose a practical risk, as only an upgrade image with the correct signature will be accepted.

    Best regards,

    Einar

Children
No Data
Related