Redistributing the nRF Connect SDK

This section is intended for users that would like to re-distribute the nRF Connect SDK with additions or changes to it. It can be useful if you are a software or hardware vendor that would like to augment the nRF Connect SDK with additional functionality, and still benefit from the infrastructure it provides.

The contents of this section is not comprehensive. You can rather consider it as suggestions for extending the nRF Connect SDK. You can use other mechanisms as long as they comply with the text in the LICENSE file located in the root of every Git repository in the nRF Connect SDK. If you need any help, reach out to Nordic Semiconductor.

Getting added to the main manifest

The simplest way to become part of the nRF Connect SDK is to be included in its official west manifest file. This way, your own module repository will automatically be part of the nRF Connect SDK official distribution and will be included in all releases.

This solution is reserved for selected vendors and requires a commercial agreement with Nordic Semiconductor. Contact your local representative if you wish to be considered for inclusion.

Some examples of this type of integration are:

  • Memfault. This functionality is present through the addition of a west project in the nRF Connect SDK manifest. The repository provided by Memfault is public. By default, nRF Connect SDK users will obtain a copy of it (as well as the integration code necessary for nRF Connect SDK based applications) when getting the code.

  • ANT protocol support. The code and documentation of this protocol is confidential, and access to the private module repository requires the GitHub user to be added to it. This is why the west project is disabled by default, using the project groups feature of west. This means that the ANT entry in the manifest is disabled by default through its presence in the manifest group filter. You will not get a copy of this repository when getting the code, and instead, need to enable the repository first using west itself to fetch it locally:

    west config manifest.group-filter +ant
    west update
    

Providing a Zephyr module

This approach is essentially identical to the previous one. However, the module repository you create will not be part of the nRF Connect SDK official distribution by default. Instead, you will need to host your own documentation explaining how to add the module you make available to user’s own manifest.

An example of this approach is the Golioth Firmware SDK, which is set up as a Zephyr module that a user can add to their own manifest.

Providing a west manifest

Instead of just providing a module repository like in the previous approach, you can also include a west manifest that imports the nRF Connect SDK in it, see Workflow 4: Workspace application repository (recommended). With this approach, you can import your manifest directly. It will then in turn import the nRF Connect SDK west manifest file.

A good starting point for such an approach is the Nordic-provided ncs-example-application repository. It contains all the necessary integration with nRF Connect SDK and example functionality (a driver, library, subsystem, test, etc.) to serve as a reference for your own distribution’s manifest repository. Just like in the previous approach, Golioth provides an example of such a west manifest, west-ncs.yml along with a guide document.

Forking the nRF Connect SDK

You can always fork all or parts of the nRF Connect SDK and then make all the changes required by your features.