nRF Radio Test
This example is a shell-controlled MAC-level radio test for nRF boards. It uses
nullnet and explicit unicast MAC transmissions with link-layer ACK requested.
It is intended for bring-up and debugging of the nrf_802154 integration,
especially when you need to separate:
payload loss
ACK timing / ACK validation failures
retry behavior under different power, length, and channel settings
Manual use
Build and flash on each board:
gmake -C examples/platform-specific/nrf/radio-test TARGET=nrf BOARD=nrf54l15/dk radio-test.flash -j4
gmake -C examples/platform-specific/nrf/radio-test TARGET=nrf BOARD=nrf54l15/xiao radio-test.flash -j4
Useful shell commands:
radio-test status
radio-test status-brief
radio-test target <mac>
radio-test clear-target
radio-test start
radio-test stop
radio-test once
radio-test interval <ms>
radio-test len <bytes>
radio-test txmax <n>
radio-test channel [n]
radio-test power [dbm]
radio-test verbose <0|1>
radio-test reset
status-brief prints a single RTSTAT ... line intended for scripts.
Automated runner
The helper script run-radio-test.py drives two serial consoles, configures
both nodes, runs the requested test matrix in both directions, and prints a
summary.
Constraints:
both boards must already run the
radio-testfirmwareno other program should hold the serial ports open
the script uses only Python standard library modules
Auto-discover exactly two radio-test nodes:
examples/platform-specific/nrf/radio-test/run-radio-test.py
Use explicit ports:
examples/platform-specific/nrf/radio-test/run-radio-test.py \
--ports /dev/tty.usbmodem0010577532811 /dev/tty.usbmodemC4073FDF3
Run a small sweep and save JSON results:
examples/platform-specific/nrf/radio-test/run-radio-test.py \
--count 20 \
--powers 0,8 \
--channels 26,20 \
--lengths 20,50,100 \
--txmax-values 1,3 \
--json-out /tmp/nrf54l15-radio-test.json
Summary classification:
pass: sender saw noNOACK/ERRack-path: sender sawNOACK, receiver still reported payload RXpayload-loss: sender sawNOACK, receiver reported no payload RXother: anything else