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:
Bootloaders and DFU/FOTA - The page is a part of the Nordic Developer Academy courses and offers is an introduction to bootloaders, DFU, and various transport features available in the nRF Connect SDK.
Adding Device Firmware Update (DFU/FOTA) Support in nRF Connect SDK - The webinar provides an overview of fundamental principles and best practices for adding DFU/FOTA support in an nRF Connect SDK-based firmware.
Documentation
For more in-depth understanding of bootloader’s capabilities, such as upgradable bootloader or encryption, refer to the following documentation:
Device-specific guides:
Using DFU with cloud providers:
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:
API |
Description |
Supported transfer |
---|---|---|
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) |
|
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.
|
|
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) |
|
API that enables applications to access shared data from a bootloader. |
– |
|
API that enables applications to trigger bootloader mode. |
– |
Task-specific guides
The section lists step-by-step guides on solving specific tasks:
The encrypted images documentation page in the Introduction to MCUboot.
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:
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) |
---|---|---|---|---|---|---|---|---|
Yes |
No |
No |
Yes |
Dual-slot direct-xip |
||||
Yes |
Yes (only with NSIB as first-stage) |
No |
Yes |
Yes |
Image swap - single primary Dual-slot direct-xip |
Tools
You can use the following tools to interact with DFU:
DFU method |
Description |
Supported transfer |
---|---|---|
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.
|
Wired (SMP over UART or USB) and OTA (SMP over Bluetooth® LE). |
Mobile application designed for sending SMP updates over Bluetooth® LE.
It also supports additional SMP features.
|
OTA (SMP over Bluetooth® LE) |
|
General purpose mobile application for sending SMP updates over Bluetooth® LE and other functionalities. |
OTA (SMP over Bluetooth® LE) |
|
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) |