Introduction

The nRF Connect SDK is a scalable and unified software development kit for building low-power wireless applications based on the Nordic Semiconductor nRF52, nRF53, nRF70, and nRF91 Series wireless devices. It offers an extensible framework for building size-optimized software for memory-constrained devices as well as powerful and complex software for more advanced devices and applications.

It integrates the Zephyr™ real-time operating system (RTOS) and a wide range of complete applications, samples, and protocol stacks such as Bluetooth® Low Energy, Bluetooth mesh, Matter, Thread/Zigbee, Wi-Fi®, and LTE-M/NB-IoT/GPS, TCP/IP. It also includes middleware such as CoAP, MQTT, LwM2M, various libraries, hardware drivers, Trusted Firmware-M for security, and a secure bootloader (MCUboot).

Repositories

The nRF Connect SDK is a combination of software developed by Nordic Semiconductor and open source projects, hosted as Git repositories in the nrfconnect GitHub organization.

The sdk-nrf repository is the manifest repository. It contains the SDK’s west manifest file that lists all the SDK’s repositories and their revisions. This code base is managed with the West tool.

Some notable repositories include:

  • sdk-nrf repository - Contains applications, samples, libraries, and drivers that are specifically targeted at Nordic Semiconductor devices.

  • sdk-nrfxlib repository - Contains closed-source libraries and modules in binary format. See the nrfxlib documentation.

  • sdk-zephyr repository - Contains a fork of the Zephyr project, which provides samples, libraries, and drivers for a wide variety of devices, including Nordic Semiconductor devices. See the documentation in Nordic Semiconductor’s Zephyr fork.

    Note

    The sdk-zephyr repository is a soft fork that Nordic Semiconductor maintains. It is not the same as Zephyr SDK, which is a set of installation tools used while installing the nRF Connect SDK.

  • sdk-mcuboot repository - Contains a fork of the MCUboot project, which provides a secure bootloader application. You can find the fork in bootloader/mcuboot after obtaining the nRF Connect SDK source code. See the documentation in Nordic Semiconductor’s MCUboot fork.

All repositories with the prefix sdk contain the nRF Connect SDK firmware and code. Every nRF Connect SDK release consists of a combination of all included repositories at different revisions. See the nRF Connect SDK repository revisions section for a comprehensive list of repositories and their current revisions. The revision of each of those repositories is determined by the current revision of the main (manifest) repository sdk-nrf.

Versions

The nRF Connect SDK uses a versioning scheme similar to Semantic versioning, but with important semantic differences. Every release of the nRF Connect SDK is identified with a version string in the MAJOR.MINOR.PATCH format. Version numbers are changed according to the following criteria:

  • MAJOR - When there is a large number of substantial changes across the board.

  • MINOR - When a new functionality is introduced.

  • PATCH - Whenever there is a minor or a bugfix release.

Occasionally, 99 can be added in place of PATCH to mark that a given release is happening between two major releases. Whenever a new functionality in the development state is introduced, devN postfix can be added at the end of the version number.

For a full description of versioning, see Versions and revisions.

Tools and configuration

The figure below visualizes the tools and configuration methods in the nRF Connect SDK. They are based on the Zephyr project. All of them have a role in the creation of an application, from configuring the libraries or applications to building them.

nRF Connect SDK tools and configuration

nRF Connect SDK tools and configuration methods

Git

Git is a free and open source distributed version control system that allows managing the changes in the code or other collections of information (set of files) over time.

Git offers a lot of flexibility in how users manage changes, and repositories are easily duplicated. In nRF Connect SDK, forking is the agreed-upon Git workflow. To contribute, the official public repository in GitHub is forked.

A fork can be hosted on any server, including a public Git hosting site like GitHub. It is, however, important to differentiate between the generic concept of a fork and GitHub’s concept of a GitHub fork. When you create a GitHub fork, GitHub copies the original repository and tags the downstream repository (the fork) with a flag that allows users to send pull requests from the fork to its upstream repository. GitHub also supports creating forks without linking them to the upstream repository. See the GitHub documentation for information about how to do this.

West

The Zephyr project includes a tool called west. The nRF Connect SDK uses west to manage the combination of multiple Git repositories and versions.

Some of west’s features are similar to those provided by submodules of Git and Google’s Repo tool. But west also includes custom features required by the Zephyr project that were not sufficiently supported by the existing tools.

West’s workspace contains exactly one manifest repository, which is a main Git repository containing a west manifest file. Additional Git repositories in the workspace managed by west are called projects. The manifest repository controls which commits to use from the different projects through the manifest file. In the nRF Connect SDK, the main repository sdk-nrf contains a west manifest file west.yml, that determines the revision of all other repositories. This means that sdk-nrf acts as the manifest repository, while the other repositories are projects.

When developing in the nRF Connect SDK, your application will use libraries and features from folders that are cloned from different repositories or projects. The west tool keeps control of which commits to use from the different projects. It also makes it fairly simple to add and remove modules.

See Getting started for information about how to install the nRF Connect SDK and about the first steps. See Development model for more information about the nRF Connect SDK code base and how to manage it.

Applications

To start developing your application you need to understand a few fundamental concepts. Follow the Zephyr guide to Application Development and browse through the included reference applications in the nRF Connect SDK to get familiar with the basics.

You also need to decide how to structure your application. You can choose from a few alternative user workflows, but having the application as the manifest repository is recommended. An ncs-example-application repository is provided to serve as a reference or starting point.

Licenses

Licenses are located close to the source files. You can find a LICENSE file, containing the details of the license, at the top of every nRF Connect SDK repository. Each file included in the repositories also has an SPDX identifier that mentions this license.

If a folder or set of files is open source and included in nRF Connect SDK under its own license (for example, any of the Apache or MIT licenses), it will have either its own LICENSE file included in the folder or the license information embedded inside the source files themselves.

You can use the west ncs-sbom utility to generate a license report. It allows you to generate a report for the nRF Connect SDK, built application, or specific files. The tool is highly configurable. It uses several detection methods, such as:

  • Search based on SPDX tags.

  • Search license information in files.

  • The Scancode-Toolkit.

Depending on your configuration, the report is generated in HTML or SPDX, or in both formats. See the Software Bill of Materials documentation for more information.

Documentation pages

The documentation consists of several inter-linked documentation sets, one for each repository.

The entry point is the nRF Connect SDK documentation that you are currently reading. The local Zephyr documentation is a slightly extended version of the official Zephyr Project documentation, containing some additions specific to Nordic Semiconductor. The local MCUboot documentation is a slightly extended version of the official MCUboot documentation, containing some additions specific to Nordic Semiconductor.

You can switch between these documentation sets by using the navigation bar at the top of the page.

To access different versions of the nRF Connect SDK documentation, use the version drop-down in the top right corner. The documentation versions follow the Versions and revisions of the SDK.

The nRF Connect SDK documentation contains all information that is specific to the nRF Connect SDK and describes our libraries, samples, and applications. API documentation is extracted from the source code and included with the library documentation.

For instructions about building the documentation locally, see Building the nRF Connect SDK documentation. For more information about the documentation conventions and templates, see About this documentation.

nRF Connect SDK repository revisions

The following table lists all the repositories (and their respective revisions) that are included as part of nRF Connect SDK 2.4.0 release:

Project

Revision

zephyr

v3.3.99-ncs1

nrfxlib

v2.4.0

mcuboot

v1.10.0-ncs1

trusted-firmware-m

v1.7.0-ncs1

find-my

v2.4.0

homekit

v2.4.0

matter

v2.4.0

nrf-802154

v2.4.0

mbedtls

v3.3.0-ncs1

memfault-firmware-sdk

0.43.3

hostap

c54b1efd0eb37ace8e44d6002398c348a7581648

qcbor

b0e7033268e88c9f27146fa9a1415ef4c19ebaff

dragoon

6dfb5a0c9ed62b9ff28b865276ee4fce67066156

cjson

c6af068b7f05207b28d68880740e4b9ec1e4b50a

azure-sdk-for-c

308c171cb4b5eed266649012a68406487ec81fb2

cirrus

9f6b3812237fbb0d4157ba3584c13f1644fcbe3a

openthread

d9abe3071c0131a4adb5d7e7451319b735e6d855

cmock

f65066f15d8248e6dcb778efb8739904a4512087

ant

01087e4e6d2a9c4dec759ad6223d39e0cfb2bfa2

bsim

908ffde6298a937c6549dbfa843a62caab26bfc5

canopennode

dec12fa3f0d790cafa8414a4c2930ea71ab72ffd

chre

b7955c27e50485b7dafdc3888d7d6afdc2ac6d96

cmsis

74981bf893e8b10931464b9945e2143d99a3f0a3

edtt

64e5105ad82390164fb73fc654be3f73a608209a

fatfs

427159bf95ea49b7680facffaa29ad506b42709b

hal_nordic

140140ea047f441fe076d26f79eb54dc9a38bcb6

hal_st

5948f7b3304f1628a45ee928cd607619a7f53bbb

hal_wurthelektronik

24ca9873c3d608fad1fea0431836bc8f144c132e

libmetal

efa2ace6028290ddee494a78ade772a0b112ab83

liblc3

448f3de31f49a838988a162ef1e23a89ddf2d2ed

littlefs

ca583fd297ceb48bced3c2548600dc615d67af24

loramac-node

ce57712f3e426bbbb13acaec97b45369f716f43a

lvgl

1557cb3e4d5c8dc7bb2e8610b686b5acb157903c

lz4

8e303c264fc21c2116dc612658003a22e933124d

mipi-sys-t

0d521d8055f3b2b4842f728b0365d3f0ece9c37f

nanopb

42fa8b211e946b90b9d968523fce7b1cfe27617e

net-tools

e0828aa9629b533644dc96ff6d1295c939bd713c

nrf_hw_models

bad9877e997b2c2a78dd74eec8978181f4655d14

open-amp

aedcc262f93bbb1b0c2f58026911575729b7465c

picolibc

93b5d5f2ad44867b60267417cd6d6250dbf68983

segger

4bfaf28a11c3e5ec29badac744fab6d2f342749e

tinycrypt

3e9a49d2672ec01435ffbf0d788db6d95ef28de0

TraceRecorderSource

bc839bf94904bcdb91b33760e918afbef82e3ab4

tf-m-tests

0f80a65193ddbbe3f0ac38b33b07b26138c11fa7

psa-arch-tests

6a17330e0dfb5f319730f974d5b05f7b7f04757b

uoscore-uedhoc

e8920192b66db4f909eb9cd3f155d5245c1ae825

zcbor

0.6.0

zscilib

0035be5e6a45e4ab89755b176d305d7a877fc79c

babblesim_base

02838ca04c4562e68dc876196828d8121679e537

babblesim_ext_2G4_libPhyComv1

9018113a362fa6c9e8f4b9cab9e5a8f12cc46b94

babblesim_ext_2G4_phy_v1

cf2d86e736efac4f12fad5093ed2da2c5b406156

babblesim_ext_2G4_channel_NtNcable

20a38c997f507b0aa53817aab3d73a462fff7af1

babblesim_ext_2G4_channel_multiatt

e09bc2d14b1975f969ad19c6ed23eb20e5dc3d09

babblesim_ext_2G4_modem_magic

cb70771794f0bf6f262aa474848611c68ae8f1ed

babblesim_ext_2G4_modem_BLE_simple

ce975a3259fd0dd761d371b60435242d54794bad

babblesim_ext_2G4_device_burst_interferer

5b5339351d6e6a2368c686c734dc8b2fc65698fc

babblesim_ext_2G4_device_WLAN_actmod

9cb6d8e72695f6b785e57443f0629a18069d6ce4

babblesim_ext_2G4_device_playback

85c645929cf1ce995d8537107d9dcbd12ed64036

babblesim_ext_libCryptov1

eed6d7038e839153e340bd333bc43541cb90ba64