Skip to content

Quick Start Guide

Setup

Begin by installing the nRF SDK, version 1.6.0. Note: If you already have the nRF SDK installed, it is still recommended to read through each step in this guide.

Nordic provides an excellent environment setup guide found here. Using the nRF Connect Toolchain Manager to install will automate checking out the nRF SDK, a supported toolchain for building source code, the SEGGER Embedded Studio (SES) IDE, and all necessary development tools. This allows an isolated development environment whose dependencies will not interfere with your machine's configuration nor encounter issues if you change local configurations on your machine.

Note: Earlier versions of SES contain an issue that prevents some NimbeLink SDK CMake steps from running properly. Please ensure you are using at least version 5.50 of SES. It's recommended by NimbeLink to install at least version 1.6.0 of the nRF SDK, which contains SES 5.50c.

Nordic states that you "must" use SES to build and debug nRF SDK projects, but this is not accurate. If you prefer to build from the command line, you can still follow the guide and use the Toolcahin Manager to install. When it comes time to build, instead of using SES you will use the Toolchain Manager to open either a Bash terminal or a Windows command prompt.

If you prefer to install tools manually, you can follow Nordic's "manual" nRF SDK installation process, which will include installing necessary command line tools and downloading a toolchain for compiling source code. Warning: it's not recommended to use Windows Subsystem for Linux (WSL) for Nano development, as WSL does not have proper support for USB and will prevent you from being able to interact with Nano devices from within WSL.

Some steps will require running commands using a command line terminal. Once you have opened the terminal, keep it open, as commands in subsequent steps will assume any directory changes from previous steps have already occurred.

Once the nRF SDK repository is checked out, you will need to switch to NimbeLink's fork. If you used Toolchain Manager, open it, find your installation, and use the dropdown item "Open bash". If you installed manually, open your command line of choice. Then run:

cd nrf
git remote add nimbelink https://github.com/NimbeLink/fw-nrfconnect-nrf.git
git fetch nimbelink
git checkout nlsdk/v1.4.0
cd ..

You are now switched to NimbeLink's nRF SDK fork, which includes an updated west.yml file and patches for building applications and using the nRF SDK's libraries with a Skywire Nano.

Update the dependency repositories using west:

west update

The NimbeLink SDK is now checked out locally. The NimbeLink SDK contains a west sub-command called nano. Before using it, install the NimbeLink SDK Python requirements:

pip install -r skywire_nano_sdk/scripts/requirements.txt

You can now use it from the command line:

west nano --help

Project Setup

Navigate to the project you want to build:

cd nrf/samples/nrf9160/<project>

If you do not already know which project you are building, NimbeLink recommends starting with the "AT client" sample.

Run the one-time app setup process:

west nano app setup

This will generate signing and encrypting keys for you project, as well as configure your local environment to point to these keys. Note: If you switch to a different project, you will need to run this setup process again for that project.

Build Project

You can now build your project. If you are using SES, open the IDE and follow Nordic's instructions here for selecting the project to build, the board to use, and how to build your application firmware image.

When selecting the board to use, you will need to manually add the skywire_nano_app board, which is found in the skywire_nano_sdk/boards/arm/skywire_nano directory.

If you are building from the command line, you will need to specify the board to use during the first build:

west build -b skywire_nano_app

v1.0.x Firmware Compatibility

For both SES and command line building, if you are using the older v1.0.x firmware on a Skywire Nano -B device variant, you will need to select the skywire_nano_app_v1_0_x board. You will also need to configure the ARM "veneers" file to link against. In your project's prj.conf file, set the follow configuration:

CONFIG_ARM_ENTRY_VENEERS_LIB_NAME="../../../../../skywire_nano_sdk/libentryveneers_v1_0_x.a"

If your project uses a different directory structure, you will need to adjust the path to the NimbeLink SDK file accordingly.

Initialize Skywire Nano Device

Perform the one-time initialization of your Skywire Nano device for your project:

west nano device -x <port> initialize

You will need to find the serial port enumerated on your operating system that the Skywire Nano kernel logging is shown on, and use that as the <port> value above. On Windows, serial ports are enumerated as COMx, where x is an integer value. On Linux, serial ports are enumerated under /dev/ttyACMx, where x is an integer value.

First-Time Flash

Flash your firmware image onto your Skywire Nano at least once using the command line:

west nano device flash

The flashing process typically takes 10-20 seconds, depending on the size of your application and the speed of your host machine.

Reset your Skywire Nano, and your application should be running on boot!