Bluetooth: DTM 2-wire
Overview
The DTM 2-wire sample is an implementation of the Bluetooth Direct Test Mode specified in the Bluetooth Core Specification Volume 6, Part F. This sample supports the non-HCI mode of operation. If the tester supports DTM over HCI, refer to the HCI UART sample, as this is fully compliant with the HCI specification.
Direct test mode 2-wire non-HCI is a lightweight BTLE radio testing protocol over a 2-wire (RX/TX) serial (UART) that uses a simple 2-byte (16 bit) framing protocol. This protocol is used when DTM over HCI (4 or 2-wires) is not available.
DTM is intended for systems (typically hostless) that can be tested without a host controller interface stack (HCI). The DTM test commands map to HCI-based BTLE radio test commands in the following way:
HCI LE_TRANSMITTER_TEST (ENH version support) —–> DTM LE Transmitter Test
HCI LE_RECEIVER_TEST (ENH version support) —–> DTM LE Receiver Test
HCI LE_TEST_END —–> DTM LE Test End
Where HCI uses command completion events, DTM uses TEST status and packet report messages.
Requirements
Atmosic EVK board with Bluetooth LE support
RF test equipment supporting DTM 2-wire protocol (e.g., Tescom TC-3000C)
UART connection between board and test equipment
Building and Running
This sample is built from openair/samples/bluetooth/dtm_2wire.
Build command:
west build -p always -b <BOARD> openair/samples/bluetooth/dtm_2wire --sysbuild -T samples.bluetooth.dtm_2wire.atm
Flash command:
west flash --skip-rebuild --device <DEVICE_ID> --jlink --fast_load [--erase_all]
Configuration
UART Configuration
DTM 2-wire UART device and settings are configured via devicetree overlay. Edit app.overlay:
/ {
chosen {
zephyr,dtm-2wire-uart = &uart0; /* or &uart1, &uart2, etc. */
};
};
&uart0 {
status = "okay";
current-speed = <115200>; /* Change baudrate: 115200, 57600, 38400, etc. */
/delete-property/ hw-flow-control; /* Disable flow control for DTM 2-wire */
};
&uart1 {
status = "okay";
current-speed = <115200>; /* Change baudrate: 115200, 57600, 38400, etc. */
/delete-property/ hw-flow-control; /* Disable hardware flow control for DTM 2-wire */
};
Connection to the Tester
The following signals should be connected to the RF tester:
DTM UART RX –> Tester UART TX
DTM UART TX –> Tester UART RX
GND –> GND
The tester UART settings should be configured to match the devicetree configuration:
Baud rate: As configured (default 115200 bps)
Data bits: 8
Stop bits: 1
Parity: None
Flow control: None (RTS/CTS disabled)
Testing
After flashing the sample to the board, the following message should appear:
*** Booting Zephyr OS build v3.x.x ***
[00:00:00.xxx,xxx] <inf> dtm_mgr: Initializing DTM manager
[00:00:00.xxx,xxx] <inf> dtm_mgr: DTM 2-wire NON-HCI Ready
[00:00:00.xxx,xxx] <inf> dtm_2wire_main: DTM 2-wire application started
Verification Steps:
Feature Query: Most testers provide an option to query the device’s supported features. Use this to verify communication. The device should report support for:
Data length extension
2M PHY
Coded PHY (S2/S8)
Basic Test: Try a simple RX or TX test to verify the DTM interface is working.
TRP/TIS Testing: Proceed with the planned TRP/TIS test procedures.
Compatibility
DTM 2-wire non-HCI has been tested with the following RF testers:
Tescom TC-3000C
However, DTM should be compatible with any BT5.0+ compliant tester that supports DTM 2-wire non-HCI mode.
Troubleshooting
Common Issues:
No response from device: Check UART connections and baud rate settings
Invalid commands: Ensure tester is configured for DTM 2-wire mode (not HCI mode)
Test failures: Verify antenna connections and RF environment