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

nRf Toolbox dfu service not found

Hi, there! nRf Toolbox drove me crazy!! can anyone help me?

  1. I flash "s130_nrf51_2.0.0_softdevice.hex" to the pca10028 board.
  2. I compile the bootloader example "nRF5_SDK_11.0.0_89a8197\examples\dfu\bootloader\pca10028\dual_bank_ble_s130",and flash it to pca10028 board.
  3. I open nRf Toolbox on my Iphone,enter DFU, enter select file , and selected "hrs_dfu_s130_2_0_0_7a_sdk_11.zip" from "App Files".
  4. pressed "SELECT DEVICE", and selected "DfuTarg".
  5. pressed "Upload",it can upload successfully.
  6. and then, I selected another file "myApp.zip".
  7. this time I connect to "Nordic_HRM".
  8. pressed "Upload", and error occurred "DFU Service not found"!

I don't know why, the app file I selected in step 3 has a DFU service.

To make sure this, I compiled the example

"nRF5_SDK_11.0.0_89a8197\examples\ble_peripheral\ble_app_hrs\pca10028\s130_with_dfu", and made a .zip file used

"nrfutil dfu genpkg --application ./hex/nrf51422_xxac_s130.hex ./hex/hrs_with_dfu.zip"

command.I selected "hrs_with_dfu.zip" in step 3,the app worked normally, but when I want to upload "myApp.zip", the same error occurred!

But I can Switch to bootloader/DFU mode used nrf51 dongle and sent command on pc followed this " infocenter.nordicsemi.com/index.jsp image description I really don't know how to use nRF Toolbox to update my app. Thank you !

well, it is embarrassed! it works on android phone, so I think it is a bug on iphone!!

Parents
  • @Manhull: it's the nRFConnect on Android you can test with. DFU mode available after you connect and do service discovery.

    My suspicion for the issue is that you haven't got the service changed characteristic (IS_SRVC_CHANGED_CHARACT_PRESENT) set to 1 in your application before you flash the bootloader to the device.

    Without the IS_SRVC_CHANGED_CHARACT_PRESENT = 1 the iOS/Android device when connected to your device will think that your device won't change and won't do service discovery when connect again.

    This may explain why it couldn't find the DFU service when you test. (note that the bootloader automatically change the address, so it doesn't have the issue with this cached attribute table).

    My suggestion is to change IS_SRVC_CHANGED_CHARACT_PRESENT to 1 in your application, also try to delete bond (forget this device) on the phone, and restart the phone before you test again.

    You can try to use nRFConnect on Android to open and test, it will erase the cached attribute table on the phone every time you connect.

Reply
  • @Manhull: it's the nRFConnect on Android you can test with. DFU mode available after you connect and do service discovery.

    My suspicion for the issue is that you haven't got the service changed characteristic (IS_SRVC_CHANGED_CHARACT_PRESENT) set to 1 in your application before you flash the bootloader to the device.

    Without the IS_SRVC_CHANGED_CHARACT_PRESENT = 1 the iOS/Android device when connected to your device will think that your device won't change and won't do service discovery when connect again.

    This may explain why it couldn't find the DFU service when you test. (note that the bootloader automatically change the address, so it doesn't have the issue with this cached attribute table).

    My suggestion is to change IS_SRVC_CHANGED_CHARACT_PRESENT to 1 in your application, also try to delete bond (forget this device) on the phone, and restart the phone before you test again.

    You can try to use nRFConnect on Android to open and test, it will erase the cached attribute table on the phone every time you connect.

Children
Related