Quick start guide

This guide is intended to assist you in the initial setup and deployment of bootloaders within your project. It covers essential concepts, practical steps for implementation, and references to further detailed documentation.

Note

You can use this quick start guide in case you are not familiar with bootloaders and Device Firmware Update (DFU). Otherwise, refer to further articles in the MCUboot and NSIB documentation.

Learning resources

In case you do not have experience with bootloaders, we recommend going through the following learning resources first:

Documentation

For more in-depth understanding of bootloader’s capabilities, such as upgradable bootloader or encryption, refer to the following documentation:

Samples

Explore MCUboot functionality using the samples provided. Note that some samples are located in the sdk-nrf repository, while others are in sdk-zephyr. All supported samples are regularly tested to ensure reliability.

We recommend beginning with the SMP server sample and using MCUmgr for interaction from a host. This setup supports both UART and Bluetooth® LE connections.

The following samples are supported:

APIs

The following APIs are essential for interacting with the bootloader or implementing alternative methods for transferring images to your device:

Bootloaders supported by nRF Connect SDK

API

Description

Supported transfer

MCUmgr

Library in Zephyr that implementing the Simple Management Protocol (SMP), which is used to receive or send updates over different protocols.

Wired (SMP over UART or USB virtual serial port) and OTA (SMP over Bluetooth® LE)

DFU target

Library in the nRF Connect SDK used to perform DFU for data from any source.

The application provides the data and is responsible for receiving updates.
Transport mechanisms are application-specific.

FOTA download

Library in the nRF Connect SDK providing functions for downloading firmware files as upgrade candidates to the DFU target.
It is commonly used by IoT libraries, including the nRF Cloud library.

OTA (LTE, Wi-Fi)

Bootloader Information

API that enables applications to access shared data from a bootloader.

Retention System

API that enables applications to trigger bootloader mode.

Task-specific guides

The section lists step-by-step guides on solving specific tasks:

Supported features and configurations

MCUboot is a customizable bootloader designed to meet specific requirements. This page outlines the tested configurations. For production builds, we recommend using the same set of configurations.

The following table is an overview of the currently supported bootloaders:

Bootloaders supported by nRF Connect SDK

Bootloader

Can be first-stage

Can be second-stage

Key type support

Public key revocation

SMP updates by the application

Downgrade protection

Versioning

Update methods (supported by nRF Connect SDK)

nRF Secure Immutable Bootloader

Yes

No

See list

Yes

No

Yes

Monotonic (HW)

Dual-slot direct-xip

MCUboot

Yes

Yes (only with NSIB as first-stage)

See imgtool

No

Yes

Yes

Monotonic (HW), Semantic (SW)

Image swap - single primary Dual-slot direct-xip

Tools

You can use the following tools to interact with DFU:

DFU tools

DFU method

Description

Supported transfer

nRF Util

Multi-purpose command line tool that can be used to send, for example, SMP-formatted updates to MCUmgr.

Wired (SMP over UART or USB).

Cloud interfaces

Each cloud has its own interface for sending updates to devices.
For details, refer to the documentation for nRF Cloud, AWS FOTA, or Azure FOTA.

Wired (SMP over UART or USB) and OTA (SMP over Bluetooth® LE).

nRF Connect Device Manager

Mobile application designed for sending SMP updates over Bluetooth® LE.
It also supports additional SMP features.

OTA (SMP over Bluetooth® LE)

nRF Connect for Mobile

General purpose mobile application for sending SMP updates over Bluetooth® LE and other functionalities.

OTA (SMP over Bluetooth® LE)

SMP Protocol Specification

SMP Client operates on a microcontroller.
For a Bluetooth® LE example, refer to Bluetooth: Central SMP Client.
SMP Client can also be implemented using the MCUmgr library.

Wired (SMP over UART or USB) and OTA (SMP Client over Bluetooth® LE)