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

Android DFU library

答复 答复 转发 Android DFU library.msg

Hi!We used a 52832 to make a bracelet. Now some apps on Huawei phones can't be remotely upgraded by the ring. We have verified that Nordic's official Android DFU library throws a bug in the firmware upgrade. Therefore, during the upgrade process, whether the mobile phone is sent incompletely or the wristband is not completely received, our APP cannot be detected here.Before using nRF Sniffer to capture packets, there is no data during the upgrade process.Before using nRF Sniffer to capture packets, there is no data during the upgrade process.Above have our software testing environment, please check.
According to the log of nova 2s combined with the DFU library code analysis, the following is the error when the data is verified.
The error is as follows:
Sending Calculate Checksum command (Op Code = 3)
08-27 11:38:24.029 1637 1802 W bt_btif : HAL bt_gatt_callbacks->client->notify_cb
08-27 11:38:24.030 7911 8203 I DfuImpl : Checksum received (Offset = 256, CRC = 975ECD47)
08-27 11:38:24.030 7911 8203 W DfuImpl : 3840 bytes were lost!
08-27 11:38:24.031 7911 8203 I DfuImpl : CRC does not match! Expected 491D1F48 but found 975ECD47. Retrying...(3/3)
The program sends the data three times and reports the same error.
The judgment is that the receiving firmware data is incomplete and the upgrade fails.

Is DFU lib usage problem or data compatibility issue? Is there a solution?
Thank you for your reply!

Parents
  • Hi Hung Bui,

    The packet sent to you is indeed connected. Is it because the Bluetooth protocol layer is encrypted? Can we only use the sniffer to capture the broadcast packet? So what you see is the unconnected state.We don't have any other methods of capturing packets. If there is a way, please guide us.

    In addition, the pm_local_database_has_changed() you are talking about is not called in our program. If this is the case, what does the function do? Where is it called? Please explain.

    The CRC check in the original question is also the error reported when the DFU is upgraded to 4%. What is the problem?

    Thank you for your reply!

Reply
  • Hi Hung Bui,

    The packet sent to you is indeed connected. Is it because the Bluetooth protocol layer is encrypted? Can we only use the sniffer to capture the broadcast packet? So what you see is the unconnected state.We don't have any other methods of capturing packets. If there is a way, please guide us.

    In addition, the pm_local_database_has_changed() you are talking about is not called in our program. If this is the case, what does the function do? Where is it called? Please explain.

    The CRC check in the original question is also the error reported when the DFU is upgraded to 4%. What is the problem?

    Thank you for your reply!

Children
  • No, when the protocol is encrypted you should stil be able to see the connection before it's encrypted (connect request, encryption request etc ). Please try capture more trace. 

    I don't see the issue DFU getting to 4% in the video ? Are you saying that there are different issues ? 

    Please try explaining when you receive the "CRC issue" and when you get the "remote dfu not supported" ? 

    Please have a look at the description of pm_local_database_has_changed() to know how it works. But you need to make sure  IS_SRVC_CHANGED_CHARACT_PRESENT  is enabled. 

    Please have a look at the buttonless example at \examples\ble_peripheral\experimental_ble_app_buttonless_dfu to see how it works.

Related