Skip to content
NDN IoT Package for Nordic nRF58240 and Android Phone
Branch: master
Clone or download
Latest commit 75133a3 May 12, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples Update submodule May 12, 2019
nRF-IEEE-802.15.4-radio-driver @ f513b9e Update submodule May 12, 2019
ndn-lite @ 0d5ac00 Update submodule May 5, 2019
third-party Updated submodules Mar 28, 2019
toolchain Updated submodules Mar 28, 2019
.gitignore Updated submodules Mar 25, 2019
.gitmodules Updated submodules Mar 28, 2019 Update Mar 31, 2019

NDN IoT Package

This project aims at providing a m-in-one package for those who want to try a new networking protocol, the Named Data Networking (NDN), with their IoT apps on constrained devices, e.g., Nordic nRF58240 boards. Here "m" stands for the following 4 parts, from bottom to top:

  1. communication adapation layer, which handles different communication mediums with the support from operating system (like RIOT), software development kit (like Nordic SDK), or even the raw device drivers.

  2. basic NDN layer, which offers basic networking layer functionalities, including the basic security support, following the latest NDN specification.

  3. application support layer, which includes some useful buliding blocks to NDN applications, such as security bootstraping, service discover as well as access control.

  4. an example application, where two parties are invovled: a network controller (runs on a android phone) and two devices (Nordic nRF58240 boards).

The first 3 parts together make the NDN-Lite library, while the example application, as a reference, shows how to develop a simple application with the NDN-Lite library. Details of NDN-Lite library can be found in:


Here follows a step-by-step instruction on how to compile the whole package and how to run the example application with the NDN-Lite library. As currently the library only contains full support for the nRF52840 board, the following instructions will be based on using ndn-lite and the example applications with the recommended IDE for nRF52840 board development, Segger Embedded Studio. It will also assume that Android Studio is used for Android development.


  1. One or more nRF52840 boards
  2. An Android phone
  3. Make sure that Segger Embedded Studio ( and Android Studio ( are installed and properly functioning on the machine you would like to use for development.

Step One: Download and compile NDN-Lite into a Segger Embedded Studio project

a) Download the example Segger Embedded Studio project, or start a new Segger Embedded Studio project

A guide for that is here:

b) Import the NDN-Lite library into your Segger Embedded Studio Project and Compile it

First you will need to download NDN-Lite; you can do so from here:

Whether you choose to start a new Segger Embedded Studio project or start from the example (which can be downloaded here, you will have to import the NDN-Lite library into your project in order to compile it. The guide for starting a new Segger Embedded Studio project linked in part a) above contains help for accomplishing this (particularly steps 3, 4, and the "Extra Advice" section).

Step Two: Download the example applications

There is a pair of example applications meant to demonstrate how the NDN-Lite library can be used for Android to board and board to board communication.

a) Download the Android example application

You can find the Android example application and instructions for installing / using it here:

b) Download the nRF52840 example application

You can find the nRF52840 example application and instructions for installing / using it here:


Please note the following things when building your application using the nRF5 SDK with ndn-lite:


This will initialize all things needed for the ndn-lite library over nRF5 SDK to function properly.


The ndn-lite library uses the nRF5 SDK's app_timer library (i.e., a multi-timer abstraction built on top of RTC1) in order to keep system time. DO NOT REINITIALIZE THIS app_timer LIBRARY WITH A CALL TO app_timer_init(). THIS WILL STOP THE NDN-LITE'S SYSTEM TIME IMPLEMENTATION FROM WORKING PROPERLY.

You can see for yourself that the app_timer library is initialized in the ndn_lite_over_nrf_sdk_startup() function.

You can’t perform that action at this time.