Nordic nRF51822 FOTA

The nRF51822-mKIT is a low cost ARM mbed enabled development board for Bluetooth® Smart designs with the nRF51822 SoC. The kit gives access to all GPIO pins via pin headers and incorporates a coin-cell battery holder for portability enabling in-situ evaluation and test

Bluetooth Smart is quickly becoming a key communication component for IoT devices and it's already supported in modern smartphones and tablets. It is designed for enabling short-range wireless connectivity to things like coin cell-powered accessories. This opens the door to things like Appcessories and a whole host of applications for interacting and configuring devices, where you can embed a Bluetooth Smart chip and bring your own device (BYOD).

We have now successfully enabled this device on mbed, including the Bluetooth Smart APIs in the mbed SDK, so you can create a Bluetooth Smart based device in a quick and productive manner.

This particular platform enables building of application firmware meant to be transferred to the target over the Bluetooth Smart link. This is also known as Firmware-Over-The-Air (or FOTA for short).

Firmware-Over-The-Air

As a start, applications meant for FOTA transfers don't get combined with Nordic's Bluetooth-Stack (a.k.a. Soft-Device). FOTA requires a resident DFU-Bootloader to be installed initially. The soft-device and the bootloader don't change during the updates; and therefore don't need to be combined with the firmware sent over the air.

The DFU-Bootloader handles the task of receiving, validating, and flashing the new firmware; the application simply forwards control to it when triggered on the 'control' characteristic of the DFUService.

Initial FOTA image

First, download the initial image to install the bootloader, which is bundled together with a default application. Then copy this image onto the mass-storage device and reset the board through the reset button.

Maintaining FOTA capability

The FOTA mechanism can update any DFU-service enabled application as long as the application and the DFU-service are running. If the application crashes, FOTA updates will not be possible until the application is restarted, or alternatively the initial FOTA image is reinstalled.

As a minimum, all healthy applications are expected to idle by calling ble.waitForEvent() as shown below; this ensures that the BLE stack is not obstructed from processing events and is able to react to a FOTA trigger.

    while (true) {
        ble.waitForEvent();
    }

FOTA can be triggered from any Android or iOS device, and soon will be enabled from Windows host that use compatible Nordic BLE platform.

nRF51822-mKIT Pinmap

More information about this platform is available on the Nordic nRF51822 mKIT page.

You can also find detailed information about this platform in the nRF51822-mKIT User Guide.

For any nRF51822 related questions you can search and post questions on NORDIC DEVELOPER ZONE

A team of summer interns at Nordic have recently developed a library for easier setup and prototyping of IoT devices for the nRF51822. Check it out!