Thread certification
Thread Group requires certification for devices using the Thread protocol. You can follow different scenarios to assure that your Nordic Semiconductor device based on the nRF Connect SDK becomes a Thread-certified product.
For general information about the certification process, check the Thread Group’s certification information.
Thread certification options
The OpenThread pre-built libraries, which are available in the nrfxlib repository, are certified by Thread Group for various Nordic Semiconductor devices.
You can find the certification information for the SoC or the SiP you are using in the relevant Compatibility Matrix’s “Thread CIDs” section.
Depending on your development approach, you have several certification options when using Nordic Semiconductor devices.
You will need to analyze the OpenThread build report to check that there is a proper Thread version and library used for the certification process and that there are no changes that may affect the certification by inheritance. Additionally, you may be asked to include the build report during the certification process.
Certification by inheritance without modifications to binaries
If you are developing a Thread product with the nRF Connect SDK, you can apply for certifying this product by inheritance as an official Thread certified product. As long as you do not modify the functionality of the certified binary libraries, your product is eligible for certification by inheritance.
This scenario offers the most simplified and potentially the shortest certification process at the lowest cost. It is available to Thread Group members at Implementer tier or higher.
Certification by inheritance with modifications to binaries
If your solution uses the same version of the OpenThread stack as the one used in the precompiled, certified binaries, but you made modifications within the operating parameters defined by Thread Group, you need to contact Thread Group to check if certification by inheritance is still possible.
You must officially list all changes with a detailed explanation in your application. Based on this list, Thread Group can accept or reject your application for certification by inheritance.
Certification at ATL
If your solution modifies the certified functionality of the stack, or if Thread Group rejects your application for certification by inheritance, you need to undergo the full certification procedure at an Authorized Test Lab (ATL). Only Contributor and Sponsor tier members of Thread Group can apply for certification by an ATL.
Thread Test Harness integration
To certify a Thread product, all certification test cases must be run on the Thread Test Harness software.
A detailed description of how to assemble and configure a Thread Test Bed and run the Thread Test Harness can be found on the Thread Group’s Confluence wiki page. Access to this information is only available to members of the Thread Group, and access to the Thread Test Harness depends on the membership tier.
Note
The following procedure references the nRF52840 Development Kit. The same procedure can be used to run the certification using other development kits.
Complete the following steps to prepare for the certification tests:
Build the certification image.
Use the Thread: CLI sample as a base and apply the
ci
andmultiprotocol
Snippets. If you are building for thenrf5340dk/nrf5340/cpuapp
target, also set the additional FILE_SUFFIX CMake option toble
. See Custom configurations and Providing CMake options for more information.If building on the command line, use the following command:
cd ncs/nrf/samples/openthread/cli/ west build -b nrf52840dk/nrf52840 -- -Dcli_SNIPPET="ci;multiprotocol" -DCONFIG_OPENTHREAD_LIBRARY=y
If building using Visual Studio Code, you must first create and build the application using the CLI sample. Add the following lines to the Additional CMake arguments text field:
-Dcli_SNIPPET="ci;multiprotocol" -DCONFIG_OPENTHREAD_LIBRARY=y
Note
The configuration option selects the precompiled OpenThread libraries. The
multiprotocol
snippet and the FILE_SUFFIX CMake option set toble
enables the multiprotocol support with Bluetooth® LE advertising.Prepare Thread Test Harness.
Copy the provided
ncs/modules/lib/openthread/tools/harness-thci/OpenThread.py
file intoC:\GRL\Thread1.2\Thread_Harness\THCI\nRF_Connect_SDK.py
.Copy the provided
ncs/nrf/samples/openthread/cli/harness-thci-1-3/nRF_Connect_SDK_1_3.py
file intoC:\GRL\Thread1.2\Thread_Harness\THCI\nRF_Connect_SDK_1_3.py
.Copy images of your choice to
C:\GRL\Thread1.2\Web\images\nRF_Connect_SDK.jpg
andC:\GRL\Thread1.2\Web\images\nRF_Connect_SDK_1_3.jpg
.
You can use the same image for both.
Edit
C:\GRL\Thread1.2\Thread_Harness\THCI\nRF_Connect_SDK.py
as follows:>> Thread Host Controller Interface >> Device : OpenThread THCI >> Class : OpenThread
to
>> Thread Host Controller Interface >> Device : nRF_Connect_SDK THCI >> Class : nRF_Connect_SDK
and
class OpenThread(OpenThreadTHCI, IThci):
to
class nRF_Connect_SDK(OpenThreadTHCI, IThci):
Edit
C:\GRL\Thread1.2\Web\data\deviceInputFields.xml
and prepend the following code:<DEVICE name="nRF Connect SDK" thumbnail="nRF_Connect_SDK.jpg" description = "Nordic Semiconductor: NCS Baudrate:115200" THCI="nRF_Connect_SDK"> <ITEM label="Serial Line" type="text" forParam="SerialPort" validation="COM" hint="eg: COM1">COM </ITEM> <ITEM label="Speed" type="text" forParam="SerialBaudRate" validation="baud-rate" hint="eg: 115200">115200 </ITEM> </DEVICE> <DEVICE name="nRF Connect SDK 1.3" thumbnail="nRF_Connect_SDK_1_3.jpg" description = "Nordic Semiconductor: NCS Baudrate:115200" THCI="nRF_Connect_SDK_1_3"> <ITEM label="Serial Line" type="text" forParam="SerialPort" validation="COM" hint="eg: COM1">COM </ITEM> <ITEM label="Speed" type="text" forParam="SerialBaudRate" validation="baud-rate" hint="eg: 115200">115200 </ITEM> </DEVICE>
The device with name “nRF Connect SDK” is intended to be used for Thread 1.1 and Thread 1.2 Certification Programs tests. The device with name “nRF Connect SDK 1.3” is intended to be used for Thread 1.3 Certification Program tests.
See the following links for more information on OpenThread:
Thread Test Harness with nRF52840 DK
Thread Test Harness does not correctly identify the nRF52840 DK (PCA10056) out-of-the-box.
Due to a collision of USB PID:VID with another vendor, Nordic devices are not automatically added to the device list. This is valid only for Nordic Semiconductor development kits with a J-Link virtual COM port.
To add an nRF52840 DK, drag the nRF52840 DK and drop it on the test bed configuration page. After that, the device is configured and the proper baud rate (115200) and COM port are set.
OpenThread build report
The OpenThread build report contains information about:
The current nRF Connect SDK and OpenThread revisions.
The Thread feature set and Thread library path.
Changes in the nrfxlib repository in comparison to the latest nRF Connect SDK release.
The report is generated to the output console log, and stored as an additional build artefact in the application build directory.
Generating the OpenThread report is enabled by default if the CONFIG_NET_L2_OPENTHREAD
Kconfig option is set to y
.
This means that it is enabled for all samples that use the Thread stack.
To disable the generation, set the CONFIG_OPENTHREAD_REPORT
kconfig option to n
.
By default, the build artefact name is set as ot_report.txt
, but you can specify a different name by setting the CONFIG_OPENTHREAD_REPORT_BUILD_ARTEFACT_NAME
kconfig value to the new one.
Depending on if you build the application using the OpenThread pre-built libraries or if you build the application and Thread stack from the source files, you will see the following logs in your build console:
################### OPENTHREAD REPORT ###################
+ Target device: nrf52840
+ Thread version: v1.3
+ OpenThread library feature set: Minimal Thread Device (MTD)
+ Thread device type: Sleepy End Device (SED)
+ OpenThread Library: openthread/lib/cortex-m4/soft-float/v1.3/mtd/
+ OpenThread NCS revision: thread-reference-20230706-819-gd60aaab22
+ OpenThread NCS SHA: d60aaab22
+ NCS revision: v2.7.99-cs1-41-g26ef793b91-dirty
+ NCS SHA: 26ef793b91
+ No differences in the used Thread library in comparison to the NCS v2.7.0 release.
################### END ###################
The generated build artefact will also include the list of the nrfxlib repository changes between the current revision and the latest nRF Connect SDK release. The resulting report can be useful when applying for certification by inheritance. See Thread certification options for more details.
An example of the changes detected in the Thread library:
################### OPENTHREAD REPORT ###################
+ Target device: nrf52840
+ Thread version: v1.3
+ OpenThread library feature set: Minimal Thread Device (MTD)
+ Thread device type: Sleepy End Device (SED)
+ OpenThread Library: openthread/lib/cortex-m4/soft-float/v1.3/mtd/
+ OpenThread NCS revision: thread-reference-20230706-819-gd60aaab22
+ OpenThread NCS SHA: d60aaab22
+ NCS revision: v2.7.99-cs1-41-g26ef793b91-dirty
+ NCS SHA: 26ef793b91
+ Found differences in the nrfxlib repository in comparison to the NCS v2.7.0 release. See the ot_report.txt report file to learn more.
################### END ###################
You can look at the report file located in the application build directory to see the full list of changes.
For example, for the Thread: CLI sample, you can find a report file in the default location: cli/build/cli/ot_report.txt
.
################### OPENTHREAD REPORT ###################
+ Target device: nrf52840
+ Thread version: v1.3
+ OpenThread library feature set: Minimal Thread Device (MTD)
+ Thread device type: Sleepy End Device (SED)
+ OpenThread library has been built from sources
+ OpenThread NCS revision: thread-reference-20230706-819-gd60aaab22
+ OpenThread NCS SHA: d60aaab22
+ NCS revision: v2.7.99-cs1-41-g26ef793b91-dirty
+ NCS SHA: 26ef793b91
################### END ###################
The information shows that the Thread library has been build from sources, so it cannot be used for Certification by inheritance without modifications to binaries.