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

Error 10: Operation Failed – iOS DFU Failure

Hi,

I am trying to implement OTA updates on iOS. Where can I find out what error 10 means?

Below is the log of events from my app. Please don't hesitate with questions that can help you in understanding the issue. 

ShineTech[14626:3909209] 5: Connected to DfuTarg

2019-09-02 20:03:05.519948-0700 ShineTech[14626:3909209] 5: Services discovered

2019-09-02 20:03:05.520129-0700 ShineTech[14626:3909209] 1: Starting Secure DFU...

2019-09-02 20:03:05.521587-0700 ShineTech[14626:3909209] 5: Connected to DfuTarg

2019-09-02 20:03:05.521720-0700 ShineTech[14626:3909209] 5: Services discovered

2019-09-02 20:03:05.521811-0700 ShineTech[14626:3909209] 1: Secure DFU Service found

2019-09-02 20:03:05.522008-0700 ShineTech[14626:3909209] 1: Discovering characteristics in DFU Service...

2019-09-02 20:03:05.522112-0700 ShineTech[14626:3909209] 0: peripheral.discoverCharacteristics(nil, for: FE59)

2019-09-02 20:03:05.522997-0700 ShineTech[14626:3909209] 0: [Callback] Central Manager did connect peripheral

2019-09-02 20:03:05.523089-0700 ShineTech[14626:3909209] 5: Connected to DfuTarg

2019-09-02 20:03:05.523197-0700 ShineTech[14626:3909209] 1: Discovering services...

2019-09-02 20:03:05.523383-0700 ShineTech[14626:3909209] 0: peripheral.discoverServices([FE59])

2019-09-02 20:03:05.524913-0700 ShineTech[14626:3909209] 5: Services discovered

2019-09-02 20:03:05.525012-0700 ShineTech[14626:3909209] 1: Secure DFU Service found

2019-09-02 20:03:05.525136-0700 ShineTech[14626:3909209] 1: Discovering characteristics in DFU Service...

2019-09-02 20:03:05.525185-0700 ShineTech[14626:3909209] 0: peripheral.discoverCharacteristics(nil, for: FE59)

2019-09-02 20:03:05.526360-0700 ShineTech[14626:3909209] 5: DFU characteristics discovered

2019-09-02 20:03:05.527671-0700 ShineTech[14626:3909209] 1: Enabling notifications for 8EC90001-F315-4F60-9FB8-838830DAEA50...

2019-09-02 20:03:05.527772-0700 ShineTech[14626:3909209] 0: peripheral.setNotifyValue(true, for: 8EC90001-F315-4F60-9FB8-838830DAEA50)

2019-09-02 20:03:05.585626-0700 ShineTech[14626:3909209] 1: Notifications enabled for 8EC90001-F315-4F60-9FB8-838830DAEA50

2019-09-02 20:03:05.586023-0700 ShineTech[14626:3909209] 10: Secure DFU Control Point notifications enabled

2019-09-02 20:03:05.586371-0700 ShineTech[14626:3909209] 1: Writing to characteristic 8EC90001-F315-4F60-9FB8-838830DAEA50...

2019-09-02 20:03:05.588179-0700 ShineTech[14626:3909209] 0: peripheral.writeValue(0x0200, for: 8EC90001-F315-4F60-9FB8-838830DAEA50, type: .withResponse)

2019-09-02 20:03:05.645977-0700 ShineTech[14626:3909209] 5: Data written to 8EC90001-F315-4F60-9FB8-838830DAEA50

2019-09-02 20:03:05.647078-0700 ShineTech[14626:3909209] 5: Notification received from 8EC90001-F315-4F60-9FB8-838830DAEA50, value (0x): 600601000100008900000008fc891b

2019-09-02 20:03:05.647874-0700 ShineTech[14626:3909209] 10: Command object info (Max size = 256, Offset = 137, CRC = 1B89FC08) received

2019-09-02 20:03:05.648604-0700 ShineTech[14626:3909209] 10: Received CRC match Init packet

2019-09-02 20:03:05.648902-0700 ShineTech[14626:3909209] 1: Writing to characteristic 8EC90001-F315-4F60-9FB8-838830DAEA50...

2019-09-02 20:03:05.649157-0700 ShineTech[14626:3909209] 0: peripheral.writeValue(0x01, for: 8EC90001-F315-4F60-9FB8-838830DAEA50, type: .withResponse)

2019-09-02 20:03:05.705344-0700 ShineTech[14626:3909209] 5: Data written to 8EC90001-F315-4F60-9FB8-838830DAEA50

2019-09-02 20:03:05.705906-0700 ShineTech[14626:3909209] 5: Notification received from 8EC90001-F315-4F60-9FB8-838830DAEA50, value (0x): 030000

2019-09-02 20:03:05.706108-0700 ShineTech[14626:3909209] 20: Error 10: Operation failed

2019-09-02 20:03:05.706358-0700 ShineTech[14626:3909209] 1: Disconnecting...

2019-09-02 20:03:05.706442-0700 ShineTech[14626:3909209] 0: centralManager.cancelPeripheralConnection(peripheral)

2019-09-02 20:03:05.708788-0700 ShineTech[14626:3909209] 0: [Callback] Central Manager did disconnect peripheral

  • Hello,

     

    I am trying to implement OTA updates on iOS. Where can I find out what error 10 means?

     Do you mean that you try to perform the OTA update on nRF Connect for iOS, or are you trying to create your own iOS application that performs DFU?

    Either way, I suggest that you read through this guide:

    https://devzone.nordicsemi.com/nordic/nordic-blog/b/blog/posts/getting-started-with-nordics-secure-dfu-bootloader

    Make sure that you have a working pair of bootloader with keys that match the signed DFU image. 

    BR,

    Edvin

  • Hi Edvin,

    Thanks for your prompt reply and this guide but they do not answer my question. Yes, I do mean the OTA/DFU updates. Ultimately updating the firmware on our product which is NRF51-based via our custom app. Our app is in Objective-C on iOS. It is not one of your sample apps. I'm fairly familiar with the OTA/DFU process and have programmed many NRF51 chips via this process. We have always used your sample apps that we slightly modified for various purposes. 

    Now we are building out OTA updates in our own app for our customers to use in the field. I am getting the very-cryptic above error. "Error 10: Operation failed" -- what does that mean? 

  • Make sure that you have a working pair of bootloader with keys that match the signed DFU image. 

    Is it definitely the keys? Is that what the error means? Slight smile

    Thanks again for your help!

  • george said:
    Our app is in Objective-C on iOS. It is not one of your sample apps. I'm fairly familiar with the OTA/DFU process and have programmed many NRF51 chips via this process.

     Good. Just wanted to check that you are familiar with the process, so we know what we are dealing with.

    What error 10 means depend on where it comes from. Are you able to find from the source code in your custom app where it prints this, and what function/callback that returns 10? If you can see that, maybe you can see in the header files what that error means as well?

    Can you also please specify what library (dfu library) you use, and what version of that library you are using?

Related