What do I need for software updates (DFU) via BLE?

Hello,

we would like to update our application software. There is plenty documentation from Nordic all over the place, some relevant, some outdated, with boot loader, without, a BLE DFU service a.s.o. but we could not find any top level documentation what you really need. I do not want examples because our software is pretty much finished.

So what I would like to know is:

1. what do I need on the BLE peripheral side to do over the air application software update (we don't care about softdevice update and if it's possible without bootloader the better).

2. What do I need on the phone / desktop side? The nrfTollbox seems to have a DFU function but I could not get that to work; the file select leads to some obscure file manager download which eventually fails. I downloaded the nrf-connect (great name btw., same as you sdk now) for desktop and it works fine with an pca10056 DK but the desktop software does not seem to have any DFU built in. Have I missed that or is there an nrf-Toolbox for desktop available?

I have the feeling it's very easy and it's all there but I just cannot see it.

Kind Regards,

  • No, it wasn't in. But I get the same "macro 'SVCI_DECL"" error message when it is defined (I had taken it out to see if that makes a difference).

    To be honest: this is really frustrating, no proper documentation, not even a single sentence with most of their thousands of functions, about 5% of the infocenter links are dead (strangely enough always the ones I need), just sample code with an unbelievably bloated sdk and you can pull tiny fragments of information out of this forum.  I do not see this leading anywhere, this does not give me any confidence getting a reliably working product. I am tempted to pull the plug and start again; this time I will select the hardware manufacturer and not the customer and I will have a good look at their software first. How much market share in bluetooth devices does nordic have again?

    And once I'm at it: if one of my engineers would produce 9300 character long compiler commands with ../../../../../../ all over the place I would certainly send him back to engineering school.

  • Hi, 

    Do you have the preprocessor define "SVC_INTERFACE_CALL_AS_NORMAL_FUNCTION" set in your project configuration?

    Have a look at this case

    -Amanda

  • Hello Amanda,

    no, I did not have this definition. Adding it makes no difference, same error message.

    Or do I have to remove the NRF_DFU_SVCI_ENABLED and NRF_DFU_TRANSPORT_BLE=1 then?

    Why don't you have Makefiles (as in proper Makefiles, not those useless IDE generated ones) for your example software (since you decided example software instead of proper documentation is the way to go)? Then a user could at least compare the Makefiles of the two projects and see what the differences are. With this IDE (that you decided to use for your sdk and which imho is the most inefficient and time wasting way to work) you have to click through hundreds of dialog boxes and even better: in two projects which you cannot even open simultaneously with this segger IDE.

    Kind Regards,

    p.s.: the SVC_INTERFACE_CALL_AS_NORMAL_FUNCTION is not defined in the ble_app_buttonless_dfu example that I used to copy the relevant parts (and where I probably missed half of the stuff that is required).

  • Hello Amanda,

    I found the compile problem, there was a stray ':' character in the file. I must have hit a key by mistake because I never use any IDEs for file editing.

    Please accept my sincerest apologies for causing the confusion and for wasting your time.

    it compiles fine with NRF_DFU_SVCI_ENABLED and NRF_DFU_TRANSPORT_BLE=1 only, the additional definition you suggested is not necessary (or is it?).

    My suggestion as for the Makefiles remain; the .emProject file contains lines too long to handle with an editor.

    Kind Regards,

  • Great that you figured it out!

    I was about to write a response to your post yesterday, saying that I don't get where that colon comes from. I tried checking that yesterday but didn't post as I got nowhere with it.

    he additional definition you suggested is not necessary (or is it?).

    I don't think it should be defined. But if you for some reason had had that defined it might have explained the error messages about the SVCI_ -macros.

Related