In this blog, I would like to introduce the method how to test on the RF (Radio) on the NRF5 Series.
It would covers the following topics.
- nRF Connect RSSI Viewer
- Simple Radio Test
- Direct Test Mode
nRF Connect RSSI Viewer
Simple app for nRF Connect that shows a visualization of RSSI data. The app shows dBm per frequency in the 2400-2480 MHz range, and allows the user to tweak settings like sweep delay and animation duration. The app can be installed from the Add/remove apps screen in nRF Connect.
The following devices are supported:
- PCA10040 nRF52832 Development Kit
- PCA10059 nRF52840 Dongle
https://github.com/NordicSemiconductor/pc-nrfconnect-rssi

Radio Test Example
The Radio Test Example demonstrates how to configure the radio as the constant RX or TX carrier, the modulated TX carrier, or the RX or TX sweep.
The tests are controlled with Command Line Interface (CLI) by the serial port. At any time during the tests, you can set the radio parameters output power, bit rate, and channel. You can also set the time on each channel in the sweep mode, in steps of 1 millisecond to 99 milliseconds, every 1 millisecond. The application also allows you to send a data pattern to another board.
The application starts with enabling the high frequency crystal oscillator and configuring CLI. Calling a console command causes the appropriate action.
CLI commands
The following table lists the available main CLI commands, in alphabetical order.
| Command | Argument | Description |
|---|---|---|
cancel | Cancel the sweep or the carrier. | |
data_rate | <sub_cmd> | Set the data rate. |
end_channel | <channel> | End the channel for the sweep. |
output_power | <sub_cmd> | Output power set. |
parameters_print | Print current delay, channel, and other parameters. | |
print_rx | Print the received RX payload. | |
start_channel | <channel> | Start the channel for the sweep or the channel for the constant carrier. |
start_duty_cycle_modulated_tx | <duty_cycle> | Duty cycle in percent (two decimal digits, between 01 and 99). |
start_rx | Start RX. | |
start_rx_sweep | Start the RX sweep. | |
start_tx_carrier | Start the TX carrier. | |
start_tx_modulated_carrier | Start the modulated TX carrier. | |
start_tx_sweep | Start the TX sweep. | |
time_on_channel | <time> | Time on each channel (between 1 ms and 99 ms). |
toggle_dcdc_state | <state> | Toggle DC/DC converter state. |
transmit_pattern | <sub_cmd> | Set transmission pattern. |
You can find the source code and the project file of the example in the following folder: <InstallFolder>\examples\peripheral\radio_test
Direct Test Mode (DTM)
The main function of a production test is to verify that all the components are mounted correctly and have correct values after assembling a device. To perform a production test on a Bluetooth® low energy application, it is preferable to use a builtin function called Direct Test Mode (DTM). The DTM enables testing of the RF parameters and is also used for end-product qualification testing of the RF physical layer (RF PHY). Bluetooth low energy products of Nordic include a UART interface that gives access to the Direct Test Mode (DTM).
The DTM has two main modes of operation; the transmit test mode and the receive test mode. In transmit test mode, the Device Under Test (DUT) generates a predefined set of test packets. In receive test mode, the DUT counts the number of test packets received.


The DTM is specified on the bluetooth core specification (available from this site) in Vol 6, Part F.
In addition, you can have a look at the python scripts that implements DTM from bluetooth v4.0 in nAN-34:
nAN34 – Setting up production test using DTM
DTM enables a set of RF PHY test cases, which are defined by the Bluetooth Special Interest Group (SIG) in the documents from the sections called “TCRL Release Table” and “Core – Test Requirements for v4.0 or later” found at the beginning of the https://www.bluetooth.com/specifications/qualification-test-requirements web page.
Note: The following information was updated in the first half of 2017. For current information, refer to the newer TCRL 2017-1, that is, to the corresponding 2017-1 TCRLs-1.zip file containing the newer RF-PHY.TS.5.0.1.
The Capability tests (as defined in the standard ISO subgroups) are organized in levels and groups representing protocol services, functional modules, and purposes, the latter being divided in operating conditions for the transmitter and the receiver. All the relevant RF PHY tests are in accordance to the test specifications RF-PHY.TS.4.2.3 or the updated RF-PHY.TS.5.0.0 and are shown in the RFPHY sheet of the Excel file called Core.TCRL.2016-2.xlsx found inside the 2016-2 TCRLs.zip.
Below are examples of test cases for the Physical Layer Conformance. They are referred to by their identifiers, where TP stands for
Test Purpose and TRM-LE and RCV-LE stand for LE Transmitter and LE Receiver test respectively.
• TP/TRM-LE/CA/BV-01-C [Maximum peak and average output power]
• TP/TRM-LE/CA/BV-03-C [In-band spectral emissions]
• TP/TRM-LE/CA/BV-05-C [Modulation Characteristics]
• TP/TRM-LE/CA/BV-06-C [Carrier frequency offset and carrier drift]
• TP/RCV-LE/CA/BV-01-C [Receiver sensitivity]
• TP/RCV-LE/CA/BV-03-C [C/I and Receiver Selectivity Performance] [Additional blocker needed to generate co-/adjacent channel interference]
• TP/RCV-LE/CA/BV-04-C [Blocking Performance] [Additional blocker needed to generate interference outside the 2400MHz –
2483.5MHz band]
• TP/RCV-LE/CA/BV-05-C [Intermodulation Performance] [2 x additional blocker needed to generate both a sinusoidal/un-modulated
and a continuous/modulated carrier]
• TP/RCV-LE/CA/BV-06-C [Maximum input signal level]
• TP/RCV-LE/CA/BV-07-C [PER Report Integrity]
Additional test cases have been introduced since the release of Bluetooth 5. A few examples of the many new test cases are listed
below:
• TP/TRM-LE/CA/BV-08-C [In-band emissions at 2 Ms/s]
• TP/TRM-LE/CA/BV-10-C [Modulation Characteristics at 2 Ms/s]
• TP/RCV-LE/CA/BV-08-C [Receiver sensitivity at 2 Ms/s]
• TP/RCV-LE/CA/BV-10-C [Blocking performance at 2 Ms/s]
Two Wire Commands through DTM
Command Packet

Command packet test setup

Command Packet – TX / RX (and Nordic Vendor Specify)

TX Power on NRF52832

2-Wire Event Packet

Test Status Response

Example command on the UART for DTM
Basic commands
- RESET: 0x00 0x00
- TEST END: 0xC0 0x00
Transmit test
- Channel 0, i.e. 2402MHz pure carrier
- 0x00 0x00 0x80 0x07
- Channel 19, i.e. 2440MHz 10 byte PRBS9 payload
- 0x00 0x00 0x93 0x28
The above commands will send packets until TEST END is received
To sweep channels, make a loop of RF channel increment.
Receive test
- Channel 19, i.e. 2440MHz
- 0x00 0x00 0x53 0x00
The above command receives all types of payload continuously until TEST END command is received.
Bluetooth 5 Example (DTM)
Nordic Specific
Basic commands
- RESET: 0x00 0x00
- TEST END: 0xC0 0x00
Transmit Test:
Channel 19, i.e. 2440MHz 10 bytes PRBS9 payload
- 0x00 0x00 0x09 0x28
Set TX Power +4dBm
- 0x84 0x0B
Channel 0 i.e. 2402MHz carrier
- 0x80 0x03
Channel 19 37bytes PRBS9 payload
- 0x93 0x94
Check feature supported
- 0x04 0x00
Set 2Mbps mode
- 0x93 0x94
Receive test:
Channel 19, i.e. 2440MHz
- 0x00 0x00 0x53 0x000
If you need to get the tool on PC for DTM, you can download it from https://github.com/olleheugene/nRF-DTM.

The nRF_DTM is UI based test tool that helping to RF test by easy control
- UI based RF test tool
- Support Bluetooth 5 features (2Mbps/Coded S8/Coded S2/1Mbps)
- Support 3 Different channels testing (High/Mid/Low)
- Configurable Tx Power
- Support PER measurement
- Support configurable log level in order to check test sequence and detiails
- Support direct command on terminal and command line interface on shell
Thanks for your interests on my blog. Since 2019, I have created this blog and shared the idea how to do some funny stuffs. I am very pleasure that I get quite a lot of positive feedback. I really hope that this blog helps your own embedded solution development. May I get support from you to keep it in order to maintain the wordpress host service? Your appreciation would be very helpful.
https://jimmywongiot.com/2021/05/26/asking-for-support/

Thanks for ones marvelous posting! I definitely enjoyed reading it, you will be
a great author.I will ensure that I bookmark your blog and will coe back down the road.
I want to encourage continue your great posts,
have a nice morning!
LikeLike
Hey! This is my first visit tto your blog! We are a team
of volunteers and starting a new initiative in a community
in the same niche. Your blog provided us valuable information to work on. You have
done a marvellous job!
LikeLike
Very good information. Lucky me I came across your site by chance (stumbleupon).
I have saved it for later!
LikeLike
I like the valuable information you provide for your articles.
I wikll bookmark your blog and take a look at again here regularly.
I am slightly certain I’ll bee informed plenty of new stuff right right here!
Goodd luck for the next!
LikeLike
I just like the valuable info you provide in your articles.
I’ll bookmark your bblog and check again right here regularly.
I’m rather certain I will be informed lots oof new stuff right here!
Goodd luck forr the next!
LikeLike
I have been surfing online more than three hours today,
yet I never found any interesting aticle like yours.
It is pretty worth enough for me. In my opinion, if
all site owners and bloggers made god content as you did, the web will be a lot more usefuil than ever before.
LikeLike
I waas able to find good info from your blog articles.
LikeLike
great publish, very informative. I ponde why the other specialists of this sector doo not notice this.
You should proceed your writing. I am sure, you have a great
readers’ base already!
LikeLike
Thank you for thhe auspicious writeup. It in fact was once a enjoyment account it.
Look complicated to more added agreeable from you!
However, how could we keep iin touch?
LikeLike
If you want to improve your familiarity only
keep visiting this website and be updated with the latest news update posted
here.
LikeLike
I’m now not certain where you are getting your information, however
good topic. I must spend some time learning much more or understanding more.
Thank you for wonderful info I used to be on the lookout for this info for my mission.
LikeLike
I have been surfing on-line more than 3 hours as of late, but I never
discovered any fascinating article like yours.
It is lovely worth sufficient for me. Personally, if all
site owners and bloggers made just right content material as you probably did, the net can be a lot more helpful than ever
before.
LikeLike
Greate post. Keep posting such kind of info on your site.
Im really impressed by your site.
Hey there, You have performed a great job. I’ll definitely digg it and
for my part suggest to my friends. I’m sure they’ll
be benefited from this website.
LikeLike
Everything is very open with a clear clarification of the challenges.
It was definitely informative. Your website is very helpful.
Many thanks for sharing!
LikeLike
Very rapidly this website will be famous among all
blogging users, due to it’s nice articles
LikeLike
I think this is among the most vital info for me.
And i’m glad reading your article. But should remark on some general
things, The web site style is wonderful, the articles
is really nice : D. Good job, cheers
LikeLike
Very nice post. I just stumbled upon your blog and wished to say that I have truly enjoyed surfing around your blog posts.
In any case I’ll be subscribing to your rss feed and I hope you write again soon!
LikeLike
Helpful information. Fortunate me I found your site accidentally, and I’m stunned why this accident didn’t came about earlier!
I bookmarked it.
LikeLike
Hi there, I enjoy reading all of your article. I like to write a little
comment to support you.
LikeLike
It’s going to be ending of mine day, except before end I am reading this fantastic post to
increase my experience.
LikeLike
great issues altogether, you simply won a emblem new
reader. What could you recommend about your put up that you simply made some days in the past?
Any positive?
LikeLike
I read this article completely concerning the comparison of latest and earlier
technologies, it’s amazing article.
LikeLike
Wonderful goods from you, man. I have understand your stuff previous to
and you’re just too excellent. I really like what you have acquired here, really like what
you are stating and the way in which you say it.
You make it enjoyable and you still care for to keep it smart.
I can not wait to read far more from you. This is really a terrific
website.
LikeLike
After going over a few of the blog articles on your website, I really like your way of blogging.
I added it to my bookmark webpage list and will be checking back soon. Please check out my web site too and let me know how you feel.
LikeLike
Greetings! Very helpful advice in this particular article!
It is the little changes that produce the largest changes.
Thanks for sharing!
LikeLike
Thanks for a marvelous posting! I certainly enjoyed
reading it, you happen to be a great author.I will make sure to bookmark your blog and may come back
in the future. I want to encourage you to ultimately continue your great writing,
have a nice day!
LikeLike
It’s wonderful that you are getting thoughts from this piece of writing as well
as from our discussion made at this time.
LikeLike
I go to see everyday some blogs and sites
to read content, but this website provides quality based
posts.
LikeLike