Table of Contents
If you’re building a Bluetooth-enabled product, you’re likely aware that regulatory certification is a crucial step in the go-to-market journey. Recently, I enabled Direct Test Mode (DTM) on the Nordic nRF5340 SoC using the nRF Connect SDK (NCS) to facilitate FCC testing for a product with Bluetooth LE enabled.
This blog post provides a practical overview of what DTM is, why it’s essential for certification, and how we implemented it on the dual-core nRF5340 SoC using Zephyr-based NCS. Whether you’re an engineer integrating DTM into firmware, or a product manager navigating certification requirements, this guide aims to demystify the process.
What is Direct Test Mode (DTM)?
Direct Test Mode is a Bluetooth SIG-defined interface (Vol 6, Part F) that allows external RF test equipment to control a BLE radio. It puts the radio into defined transmit or receive states, which are required for regulatory certification such as FCC, CE, and TELEC.
DTM allows lab engineers to measure key RF parameters like:
- Transmit power
- Receiver sensitivity
- Frequency stability
- Packet error rate
Traditionally, a host (e.g., test PC) communicates DTM commands over a UART
or HCI
interface to the device under test.
Why is DTM Required for FCC Testing?
To legally operate in the 2.4 GHz ISM band, your product must meet FCC compliance under Part 15 Subpart C. Certification includes tests for:
- Controlled out-of-band emissions
- Consistent transmit power output
- Spectrum usage and hopping behavior
- Stability under worst-case operational conditions
DTM allows manual or automated control over the device’s RF behavior, such as continuous transmission or reception on specific channels—capabilities that are indispensable during these certification tests.
How We Implemented DTM on the nRF5340 with NCS
1. Choosing the Right Sample: direct_test_mode
The nRF Connect SDK provides a sample project at:
nrf/samples/bluetooth/direct_test_mode
This sample configures the network core of the nRF5340 as a Bluetooth Controller capable of accepting DTM commands over UART/HCI. The application core remains idle (or in bootloader mode).
Key Configuration Steps:
- Enable:
CONFIG_BT_CTLR_DTM_HCI=y
- Set UART parameters to match test equipment (typically
115200 8N1
) - Build for:
BOARD=nrf5340dk_nrf5340_cpunet
(network core only)
We then extended this by:
- Migrating the DTM communication interface from UART/HCI to USB
- Wrapping DTM commands in a proprietary protocol
- Transferring commands via IPC from the application core to the network core
- Network core utilizing
dtm.c
/dtm.h
implementation to put device in the requested RF state
Flow Summary:
- Host sends a DTM command using our proprietary USB protocol
- Application core interprets and forwards it to the network core over IPC
- Network core executes the command and returns the response
2. Validating DTM Functionality
We tested the integration using Nordic’s nRF Connect for Desktop (Direct Test Mode app) with two setups:
Requirements:
- nRF5340 DK running stock
direct_test_mode
firmware, connected to the PC running nRF Connect for Desktop (Direct Test Mode app) - Device under test (DUT) connected to the PC (could be same or different) running proprietary software
Testing:
TX Testing:
-
Setup: nRF5340 DK in RX mode (single channel), DUT in TX mode on same channel
- Result: RX packets were observed only on the configured channel
-
Setup: nRF5340 DK in RX mode (single channel), DUT in TX mode on different channel
- Result: RX packets were not observed on the configured channel
-
Setup: nRF5340 DK in RX mode (sweep channel), DUT in TX mode on any channel
- Result: RX packets were observed only on the configured channel
RX Testing:
-
Setup: nRF5340 DK in TX mode on a defined channel, DUT in RX mode on same channel
- Result: Successful packet reception observed via console logs
-
Setup: nRF5340 DK in TX mode on a defined channel, DUT in RX mode on different channel
- Result: No packet reception observed via console logs
These tests confirmed interoperability and protocol reliability.
3. Delivering to the Certification Lab
We handed off a robust and easy-to-use test suite, which included:
- A pre-built merged
.hex
firmware for the device under test - A host-side application to initiate Direct Test Mode
- Clear documentation on how to operate the test firmware
This reduced back-and-forth with the lab and accelerated certification readiness.
Lessons Learned
- The stock DTM sample can be easily integrated into custom firmware
- While Nordic’s reference uses UART/HCI, DTM commands can be routed over any peripheral (e.g., USB) with minimal effort
- A development board like the nRF5340 DK can act as a reference device for functional testing using Nordic’s desktop tools
Conclusion
Enabling Direct Test Mode for FCC testing on the nRF5340 using Nordic’s SDK was a valuable learning experience. With thoughtful integration and planning, you can streamline the certification process and deliver lab-ready firmware with confidence.
If you’re developing a Bluetooth product and need help with firmware integration, RF testing, or certification preparation — Croxel’s engineering team has extensive experience with Nordic platforms and FCC certification processes. We can help accelerate your product’s path to market while ensuring regulatory compliance.
Related Topics
About the Author

Anuj Pathak
Senior Firmware Developer
Firmware engineer with expertise in Zephyr RTOS, embedded systems, and IoT product development. Brings extensive experience in medical device firmware, wireless connectivity solutions, and real-time embedded systems across diverse industry applications. Anuj is skilled in translating complex technical requirements into robust, production-ready firmware solutions for resource-constrained devices.