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

Device Firmware Update (DFU) Over BLE and USB

Hi,

What is the procedure and source code required to enable Device Firmware Update over BLE and USB. We are using nRF51822 chipset. Assume that our requirement will be like as follows,

  1. Whenever the slave device connected to the master device (pc, smart phone..) either through BLE or USB, slave (nRF51822) should check for the firmware update,

2.If Firmware update is available, then the update should takes place.

Regards, Balaji

  • This is mostly something you'll have to find out yourself, depending on your requirements. However, SDK 4.4.1 includes an example of a BLE Bootloader, that can be used to upgrade the application running on an nRF51822 chip. Here is a discussion on how you can jump to this bootloader from your main application, for example when the Central device writes to a specific characteristic or similar.

    I do think that it will be easier for the Central device to check for an update, and then tell the nRF51822, than the other way around.

    Since there is no USB interface on the nRF51822, doing firmware upgrades will require a separate chip in addition. This could possibly be some kind of USB-to-UART chip, which could then use the UART bootloader to do the upgrade. Unfortunately, this isn't something I've tested, so I don't have much more information to give you on this.

  • Thanks for your reply. Yes, as you said, we are in the plan to use separate chip for USB interface. But in our case we are going to use the USB-to-SPI chip.

    Is it possible to use USB-to-SPI chip for firmware upgrade?

    If possible, what will be the procedure to do so?

    How to get SDK 4.4.1?

  • SDK 4.4.1 should be available from our web-site on the download tab of the kits, or under My products as normal.

    The SDK doesn't currently include an SPI implemenation for the bootloader, but this is something that should be possible for you to implement if you need it, just replacing the transport layers.

Related