Installing manually
The recommended way to get started with the nRF Connect SDK is to install using nRF Connect for Desktop, which is described on the Installing automatically page. However, if you prefer to install the toolchain manually, follow the instructions described below.
To manually install the nRF Connect SDK, you must first install all the required tools and clone the nRF Connect SDK repositories.
The nRF Connect SDK toolchain includes the Zephyr SDK and then adds on top of it tools and modules required to build nRF Connect SDK samples and applications. If you already have your system set up to work with Zephyr OS, based on Zephyr’s Getting Started Guide, it means you have most of the requirements for the nRF Connect SDK installed. However, you still need to install a set of additional tools, including Python dependencies and the nRF Connect for VS Code extension (the default IDE for the nRF Connect SDK). You might also need the GN tool if you are interested in creating Matter applications.
Update your operating system
Before you start setting up the nRF Connect SDK toolchain, install available updates for your operating system. See Requirements for information on the supported operating systems and Zephyr features.
Install the required tools
The installation process is different depending on your operating system.
Note
You will be asked to reboot after installing some of the tools. You can skip these notifications and reboot only once after you complete the installation of all tools.
The recommended way of installing the required tools on Windows is to use Chocolatey, a package manager for Windows. Chocolatey installs the tools so that you can use them from a Windows command-line window.
To install the required tools, complete the following steps:
Open a
cmd.exe
window as Administrator. To do so, press the Windows key, type “cmd.exe”, right-click the result, and choose Run as Administrator.Disable global confirmation to avoid having to confirm the installation of individual programs:
choco feature enable -n allowGlobalConfirmation
Use
choco
to install the required dependencies:choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System' choco install ninja gperf python git dtc-msys2 wget 7zip
Ensure that these dependencies are installed with their versions as specified in the Required tools table. To check the list of installed packages and their versions, run the following command:
choco list -lo
To install the required tools on Ubuntu, complete the following steps:
If using an Ubuntu version older than 22.04, it is necessary to add extra repositories to meet the minimum required versions for the main dependencies listed above. In that case, download, inspect and execute the Kitware archive script to add the Kitware APT repository to your sources list. A detailed explanation of
kitware-archive.sh
can be found here kitware third-party apt repository:wget https://apt.kitware.com/kitware-archive.sh sudo bash kitware-archive.sh
Use
apt
to install the required dependencies:sudo apt install --no-install-recommends git cmake ninja-build gperf \ ccache dfu-util device-tree-compiler wget \ python3-dev python3-pip python3-setuptools python3-tk python3-wheel xz-utils file \ make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1
Verify the versions of the main dependencies installed on your system by entering:
cmake --version python3 --version dtc --version
Ensure that these dependencies are installed with their versions as specified in the Required tools table. Refer to the Install Linux Host Dependencies page for additional information on updating the dependencies manually. If you are using other Linux-based operating systems, see the Install Requirements and Dependencies section in the Zephyr documentation.
To install the required tools, complete the following steps:
Install Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Use
brew
to install the required dependencies:brew install cmake ninja gperf python3 ccache qemu dtc wget libmagic
Ensure that these dependencies are installed with their versions as specified in the Required tools table. To check the installed versions, run the following command:
brew list --versions
Also see macOS alternative setup instructions in the Zephyr documentation for additional information.
If you want to build Matter applications, additionally install the GN meta-build system. This system generates the Ninja files that the nRF Connect SDK uses.
To install the GN tool, complete the following steps:
Download the latest version of the GN binary archive for Windows from the GN website.
Extract the
zip
archive.Ensure that the GN tool is added to your
PATH
environment variable. For the exact instructions, see Environment Variables.
To install the GN tool, complete the following steps:
Create the directory for the GN tool:
mkdir ${HOME}/gn && cd ${HOME}/gn
Download the GN binary archive and extract it by using the following commands:
wget -O gn.zip https://chrome-infra-packages.appspot.com/dl/gn/gn/linux-amd64/+/latest unzip gn.zip rm gn.zip
The wget tool is installed when installing the required tools on Linux.
Add the location of the GN tool to the system
PATH
. For example, if you are usingbash
, run the following commands:echo 'export PATH=${HOME}/gn:"$PATH"' >> ${HOME}/.bashrc source ${HOME}/.bashrc
To install the GN tool, complete the following steps:
Create the directory for the GN tool:
mkdir ${HOME}/gn && cd ${HOME}/gn
Install the wget tool:
brew install wget
Download the GN binary archive and extract it by using the following commands:
For 64-bit ARM (M1 and M2) host architecture:
wget -O gn.zip https://chrome-infra-packages.appspot.com/dl/gn/gn/mac-arm64/+/latest unzip gn.zip rm gn.zip
For 64-bit AMD (Intel) host architecture:
wget -O gn.zip https://chrome-infra-packages.appspot.com/dl/gn/gn/mac-amd64/+/latest unzip gn.zip rm gn.zip
Add the location of the GN tool to the system
PATH
. For example, if you are usingbash
, run the following commands:Create the
.bash_profile
file if you do not have it already:touch ${HOME}/.bash_profile
Add the location of the GN tool to
.bash_profile
:echo 'export PATH=${HOME}/gn:"$PATH"' >> ${HOME}/.bash_profile source ${HOME}/.bash_profile
Install west
To manage the combination of repositories and versions, the nRF Connect SDK uses Zephyr’s west.
To install west, reopen the command prompt window as an administrator to ensure that Python is initialized, and complete the following step:
Enter the following command in a command-line window:
pip3 install west
Note
Ensure the west location is added to the path in environmental variables.
Enter the following command in a terminal window:
pip3 install --user west
echo 'export PATH=~/.local/bin:"$PATH"' >> ~/.bashrc
source ~/.bashrc
Enter the following command in a terminal window:
pip3 install west
You only need to do this once.
Get the nRF Connect SDK code
Every nRF Connect SDK release consists of a combination of Git repositories at different revisions. The revision of each of those repositories is determined by the current revision of the main (or manifest) repository, sdk-nrf.
Note
The latest state of development is on the main
branch of the sdk-nrf repository.
To ensure a usable state, the sdk-nrf repository defines the compatible states of the other repositories.
However, this state is not necessarily tested.
For a higher degree of quality assurance, check out a tagged release.
Unless you are familiar with the development process, you should always work with a specific release of the nRF Connect SDK.
For more information about the repository and development model, see the development model section.
To clone the repositories, complete the following steps:
Create a folder named
ncs
. This folder will hold all nRF Connect SDK repositories.Determine the identifier of the revision of the nRF Connect SDK you want to work with. The recommended way is to work with a specific release.
To work with a specific release, the identifier is the corresponding tag (for example,
v2.4.4
). You can find the tag in the Release notes of the release.To work with a development tag, the identifier is the corresponding tag (for example,
v1.2.99-dev1
)To work with a branch, the identifier is the branch name (for example,
main
to work with the latest state of development).To work with a specific state, the identifier is the SHA (for example,
224bee9055d986fe2677149b8cbda0ff10650a6e
).
On the command line, go to the
ncs
folder (cd ncs
) and initialize west with the revision of the nRF Connect SDK that you want to check out, replacing nRFConnectSDK_revision with the identifier:west init -m https://github.com/nrfconnect/sdk-nrf --mr nRFConnectSDK_revision
For example, to check out the v2.4.4 release, enter the following command:
west init -m https://github.com/nrfconnect/sdk-nrf --mr v2.4.4
Note
If you get an error message when running west, update west to the latest version. See Troubleshooting West in the Zephyr documentation for more information.
Initializing west with a specific revision of the manifest file does not lock your repositories to this version. Checking out a different branch or tag in the sdk-nrf repository and running
west update
changes the version of the nRF Connect SDK that you work with.To check out the latest state of development, enter the following command:
west init -m https://github.com/nrfconnect/sdk-nrf --mr main
This will clone the manifest repository sdk-nrf into
nrf
.Enter the following command to clone the project repositories:
west update
Depending on your connection, this might take some time.
Export a Zephyr CMake package. This allows CMake to automatically load the boilerplate code required for building nRF Connect SDK applications:
west zephyr-export
Your directory structure now looks similar to this:
ncs
|___ .west
|___ bootloader
|___ modules
|___ nrf
|___ nrfxlib
|___ zephyr
|___ ...
This is a simplified structure preview. There are additional folders, and the structure might change over time. The full set of repositories and folders is defined in the manifest file.
Install additional Python dependencies
The nRF Connect SDK requires additional Python packages to be installed.
Use the following commands to install the requirements for each repository.
Enter the following command in a command-line window in the ncs
folder:
pip3 install -r zephyr/scripts/requirements.txt pip3 install -r nrf/scripts/requirements.txt pip3 install -r bootloader/mcuboot/scripts/requirements.txt
Enter the following command in a terminal window in the ncs
folder:
pip3 install --user -r zephyr/scripts/requirements.txt pip3 install --user -r nrf/scripts/requirements.txt pip3 install --user -r bootloader/mcuboot/scripts/requirements.txt
Enter the following command in a terminal window in the ncs
folder:
pip3 install -r zephyr/scripts/requirements.txt pip3 install -r nrf/scripts/requirements.txt pip3 install -r bootloader/mcuboot/scripts/requirements.txt
Install the Zephyr SDK
The Zephyr Software Development Kit (SDK) contains toolchains for each of Zephyr’s supported architectures. Each toolchain provides a compiler, assembler, linker, and some, but not all, of the rest of the programs required to build Zephyr applications. The Zephyr SDK also includes additional host tools, such as custom QEMU and OpenOCD builds. It is at the base of the nRF Connect SDK toolchain, which adds on top of it several tools and modules of its own.
Note
When updating the Zephyr SDK, verify the Zephyr SDK variables.
Make sure that the zephyr
toolchain is selected, not gnuarmemb
.
Open a
cmd.exe
window by pressing the Windows key typing “cmd.exe”.Download the latest Zephyr SDK bundle:
cd %HOMEPATH% wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.0/zephyr-sdk-0.16.0_windows-x86_64.7z
Extract the Zephyr SDK bundle archive:
7z x zephyr-sdk-0.16.0_windows-x86_64.7z
Note
It is recommended to extract the Zephyr SDK bundle at one of the following locations:
%HOMEPATH%
%PROGRAMFILES%
The Zephyr SDK bundle archive contains the
zephyr-sdk-0.16.0
directory and, when extracted under%HOMEPATH%
, the resulting installation path will be%HOMEPATH%\zephyr-sdk-0.16.0
.Run the Zephyr SDK bundle setup script:
cd zephyr-sdk-0.16.0 setup.cmd
Note
You only need to run the setup script once after extracting the Zephyr SDK bundle.
You must rerun the setup script if you relocate the Zephyr SDK bundle directory after the initial setup.
Download and verify the latest Zephyr SDK bundle:
cd ~ wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.0/zephyr-sdk-0.16.0_linux-x86_64.tar.xz wget -O - https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.0/sha256.sum | shasum --check --ignore-missing
If your host architecture is 64-bit ARM (for example, Raspberry Pi), replace
x86_64
withaarch64
in order to download the 64-bit ARM Linux SDK.Extract the Zephyr SDK bundle archive:
tar xvf zephyr-sdk-0.16.0_linux-x86_64.tar.xz
Note
It is recommended to extract the Zephyr SDK bundle at one of the following locations:
$HOME
$HOME/.local
$HOME/.local/opt
$HOME/bin
/opt
/usr/local
The Zephyr SDK bundle archive contains the
zephyr-sdk-0.16.0
directory and, when extracted under$HOME
, the resulting installation path will be$HOME/zephyr-sdk-0.16.0
.Run the Zephyr SDK bundle setup script:
cd zephyr-sdk-0.16.0 ./setup.sh
Note
You only need to run the setup script once after extracting the Zephyr SDK bundle.
You must rerun the setup script if you relocate the Zephyr SDK bundle directory after the initial setup.
Install udev rules, which allow you to flash most Zephyr boards as a regular user:
sudo cp ~/zephyr-sdk-0.16.0/sysroots/x86_64-pokysdk-linux/usr/share/openocd/contrib/60-openocd.rules /etc/udev/rules.d sudo udevadm control --reload
Download and verify the latest Zephyr SDK bundle:
cd ~ wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.0/zephyr-sdk-0.16.0_macos-x86_64.tar.xz wget -O - https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.0/sha256.sum | shasum --check --ignore-missing
If your host architecture is 64-bit ARM (Apple Silicon, also known as M1), replace
x86_64
withaarch64
in order to download the 64-bit ARM macOS SDK.Extract the Zephyr SDK bundle archive:
tar xvf zephyr-sdk-0.16.0_macos-x86_64.tar.xz
Note
It is recommended to extract the Zephyr SDK bundle at one of the following locations:
$HOME
$HOME/.local
$HOME/.local/opt
$HOME/bin
/opt
/usr/local
The Zephyr SDK bundle archive contains the
zephyr-sdk-0.16.0
directory and, when extracted under$HOME
, the resulting installation path will be$HOME/zephyr-sdk-0.16.0
.Run the Zephyr SDK bundle setup script:
cd zephyr-sdk-0.16.0 ./setup.sh
Note
You only need to run the setup script once after extracting the Zephyr SDK bundle.
You must rerun the setup script if you relocate the Zephyr SDK bundle directory after the initial setup.
Install nRF Connect for VS Code extension
To open and compile projects in the nRF Connect SDK, install and use the recommended nRF Connect for VS Code extension.
The nRF Connect for VS Code extension is a complete IDE for developing applications compatible with the nRF Connect SDK. This includes an interface to the compiler and linker, an RTOS-aware debugger, a seamless interface to the nRF Connect SDK, and a serial terminal. For installation and migration instructions, see How to install the extension. For other instructions related to the nRF Connect for VS Code extension, see the nRF Connect for Visual Studio Code documentation site.
Set up the command-line build environment
In addition to Visual Studio Code, you can also build and program your application from the command line. You have to set up your build environment by defining the required environment variables every time you open a new command-line or terminal window.
See Important Build System Variables for more information about the various relevant environment variables.
Define the required environment variables as follows, depending on your operating system:
Navigate to the ncs
folder and enter the following command: zephyr\zephyr-env.cmd
If you need to define additional environment variables, create the file %userprofile%zephyrrc.cmd
and add the variables there.
This file is loaded automatically when you run the above command.
See Option 3: Using zephyrrc files for more information.
Navigate to the ncs
folder and enter the following command: source zephyr/zephyr-env.sh
If you need to define additional environment variables, create the file ~/.zephyrrc
and add the variables there.
This file is loaded automatically when you run the above command.
See Option 3: Using zephyrrc files for more information.
Navigate to the ncs
folder and enter the following command: source zephyr/zephyr-env.sh
If you need to define additional environment variables, create the file ~/.zephyrrc
and add the variables there.
This file is loaded automatically when you run the above command.
See Option 3: Using zephyrrc files for more information.
You must also make sure that nrfjprog (part of the nRF Command Line Tools) is installed and its path is added to the environment variables. The west command programs the development kit by using nrfjprog by default. For more information on nrfjprog, see Programming SoCs with nrfjprog.