Skip to content

DoA X440 (main)

Jreitmei edited this page Aug 21, 2025 · 11 revisions

A Demo of Phase Synchronization Capability of Ettus Research's X440 USRP

Table of Contents

Introduction

This guide provides detailed instructions for evaluating the phase synchronization capabilities of the X440 USRP. The X440 supports high-precision phase coherent operations across multiple channels, with only minor, consistent relative phase offsets. In the following sections, we outline a straightforward method to assess the accuracy of the achieved phase synchronization. We then present a practical application that highlights the critical role of precise phase alignment in modern wireless communication systems.

Motivation

The X440 platform delivers advanced synchronization capabilities for multi-channel USRP (Universal Software Radio Peripheral) systems, addressing a critical requirement in applications such as MIMO, beamforming, and direction finding. Designed as a high-performance successor to earlier X Series radios, the X440 integrates two 4-channel daughterboards with a range from 30 MHZ TO 4 GHZ & 1.6 GHz Bandwidth.

Software

Basic Dependencies

UHD >= 4.8.0.0
gnuradio >= 3.11.0.0
armadillo >= 12.6.7

Dependencies Needed for QA Testing

octave (Tested 8.4.0)
octave-signal (Tested 1.4.6)
scipy (Tested 1.16.0)
oct2py (Tested 5.8.0)

OSs Tested

Ubuntu 24.04

Installation

$ git clone https://github.com/EttusResearch/gr-doa
$ cd gr-doa
$ mkdir build
$ cd build
$ cmake ..
$ make
$ make test
$ sudo make install
$ sudo ldconfig

Hardware that is needed

  • 1 Computer with GNU Radio & UHD installed + suitable interfaces (Ethernet)
  • 1 USRP X440
  • 1 USRP that covers the frequency range of interest. (e.g., USRP X310 with an UBX daughtercards)
  • 1 SMA-M to SMA-M cable to connect the splitter to the splitter.
  • 4 SMA-M to SMA-M cables. These need to be the same length. We used 2 meter long cables.
  • 4 MMPX to SMA cables. These need to be the same length. We used a 763576-0R152 (0.152cm) cable in the setup.
  • 1 four-way power splitter (e.g., Mini-Circuits ZFRSC-4-842+).
  • 4 VERT400 antennas (or other antennas of your choice. The choosen antennas should be isotrophic in the azimuth plane).
  • A linear array fixture with adjustable antenna element separation distances, equipped with four equal-length SMA-M to MMPX cables to connect the antennas—secured by the fixture—to the TX/RX ports of the X440.
  • (Optional) A filter dependent on your used frequency to prevent aliasing. We used the VLFG-400+ in our setup.

Relative Phase Offset Estimation and Correction

To fully leverage this capability in phase-sensitive applications such as beamforming or direction-of-arrival (DoA) estimation, the first step is to estimate the constant, repeatable relative phase offsets between the four receive channels. These offsets result from fixed hardware path differences and must be characterized for accurate signal processing. Be aware that this step only needs to be done once for the setup as long as your cables, device or filters don't change.

For this step the following items are needed:

  • 1 Computer with GNU Radio & UHD installed + suitable interfaces (Ethernet)
  • You find the installation guide & the dependencies for the oot module here
  • 1 USRP X440
  • Connect the X440 to the desktop using one RJ45 cable for control communication.
  • Use a QSFP28 connection to link the X440 to your desktop for data transfer.
  • Access the device via SSH.
  • Execute the following command:
  • uhd_image_loader --args type=x4xx,addr=127.0.0.1,fpga=X4_200
  • 1 USRP that covers the frequency range of interest. (e.g., USRP X310 with an UBX daughtercards)
  • 1 SMA-M to SMA-M cable to connect the splitter to the splitter.
  • 4 SMA-M to SMA-M cables. These need to be the same length. We used 2 meter long cables.
  • 4 MMPX to SMA cables. These need to be the same length. We used a 763576-0R152 (0.152cm) cable in the setup.
  • 1 four-way power splitter (e.g., Mini-Circuits ZFRSC-4-842+).
  • 1 30 dB attenuator.
  • (Optional) A filter dependent on your used frequency to prevent aliasing. We used the VLFG-400+ in our setup.

Then,

  • Connect the USRP X310 to the input port of the power splitter using an SMA cable with a 30 dB attenuator.
  • Connect the four output ports of the power splitter to four SMA-M to SMA-M cables.
  • Connect each SMA-M to SMA-M cable to its respective filter.
  • Connect each filter to the corresponding MMPX to SMA cable.
  • Connect the MMPX to SMA cables to the X440 using the four MMPX to SMA connections.
  • Connect the MMPX cables to the X440’s input ports in sequential order, starting from the left. For example:
  • When using 4-channels: connect to A0, A1, A2, A3 with length matched cables.
  • Before proceeding with the next steps, ensure that the USRPs have reached their operating temperature to eliminate any temperature drift.
  • In the host PC connected to the transmitter, open run_DoA_transmitter.grc in gr-doa/apps. Adjust the tone frequency, sample rate, and center frequency according to your specific use case, then execute the flowgraph.
  • Parameters used for the PMR446 Band:
  • Tone Frequency: 5 kHz
  • sample rate: 1 MHz
  • center frequency: 446031250 Hz
  • In the host PC connected to the receiver, open estimate_constant_phase_offsets_and_save.grc in gr-doa/apps. Ensure that tone frequency, sample rate and center frequency are the same as those at the transmitter. Configure the IP address of the radio and the path where the config file containing phase offset values will be stored. Execute the flowgraph.
  • In the host PC connected to the receiver, open view_op_with_corrected_phase_offsets.grc in gr-doa/apps. Ensure that parameters such as sample rate, tone frequency etc. are the same values as estimate_constant_phase_offsets_and_save.grc. Run the flowgraph and verify that the phases offsets are corrected.
  • Open calculate_phase_sync_accuracy.grc in gr-doa/apps. Ensure that parameters such as sample rate, tone frequency etc. are the same values as estimate_constant_phase_offsets_and_save.grc. Configure the path where the config file containing corrected phase offset values will be stored. Run the flowgraph and open the config file to determine the accuracy of phase offset correction.
Figure 1: View the X440 received streams with corrected phase offsets
Figure 1: view_op_with_corrected_phase_offsets.grc

The relative phase offsets between antenna ports are now estimated and stored for use in an applicaiton for the X440. It can now receive signals to be processed by any array signal processing application that requires accurate phase synchronization between receive channels. To demonstrate this feature, we will show two direction-of-arrival (DoA) estimation algorithms in action.

Direction-of-arrival Estimation: An Application

In the following section D refers to the number of transmitters or directions. A plane wave is an RF wave observed in the far field. The following section provides a brief overview of the MUSIC and RootMUSIC algorithms. For more detailed information, please refer to the whitepaper.

Multiple Signal Classification (MUSIC) was one of the earliest algorithms developed for DoA estimation. It requires that the following assumptions are satisfied:

1. the received waveform is narrowband,
2. the received waveform consists of D plane-wave signals plus uncorrelated noise, 
3. the number of plane-wave signals, D is known,
4. the number of antenna elements, N is at least equal to D+1 and
5. the inputs received across the antenna array for the purpose of DoA estimation are phase-aligned.

MUSIC processes the sample correlation matrix constructed using samples received by an antenna array, determines the noise subspace of the matrix and estimates the DoA of a target to be the arg-max. of a pseudo-spectrum. Root-MUSIC, which is a variant of MUSIC algorithm estimates the DoA of a target to be a root of a polynomial function constructed using the correlation matrix and satisfies certain criteria.

The modules that implement MUSIC and Root-MUSIC algorithm utilize the relative phase offsets computed in the previous step. They are developed using GNU Radio framework. For a simulation example that demonstrates the application of MUSIC algorithm, please see gr-doa/apps/run_MUSIC_simulation.grc. For a simulation example that demonstrates the application of Root-MUSIC algorithm, please see gr-doa/apps/run_RootMUSIC_simulation.grc.

The detailed list of steps for MUSIC and Root-MUSIC demonstration using Ettus Research USRP X440, is shown below. In addition to the list of items indicated in the calibration step, we also require:

  1. 4 x VERT400 antennas (or other antennas of your choice. The choosen antennas should be isotrophic in the azimuth plane).
  2. A metallic ground plane for the antennas
  3. A transmitter for a continouous narrow band signal. We used a Baofeng-Bf-88e-Series for the 446 MHz range.
  4. A linear array fixture with adjustable antenna element separation distances, equipped with four equal-length SMA-M to MMPX cables to connect the antennas—secured by the fixture—to the TX/RX ports of the X440.

IMPORTANT: It is strongly recommended that the antenna element separation is half-wavelength or lower depending on the tone center-frequency. Arranging antenna elements at larger distances leads to an aliasing effect and compromises the angle resolution capability of the DoA algorithms. The detailed list of steps for DoA demonstration are as follows:

  1. Disconnect the cables connecting the transmitter and the receiver. Position the transmitter at a distance from the receiver antenna array and at a known angle.
  2. In the host PC connected to the transmitter, open run_DoA_transmitter.grc in gr-doa/apps. Provide values for tone frequency, sample rate and center frequency. Provide the IP address of the radio. Execute the flowgraph. You can also choose to use a different transmitter if preferred.
  3. In the host PC connected to the receiver, open calibrate_lin_array.grc. Configure the flowgraph settings by providing the pilot target's DoA, the radio's ip-address etc. in input_variables. Choose the same parameters as in the Relative Phase Offset Estimation and Correction step. Select the path and config filename where the antenna array calibration coefficients will be stored. Execute the flowgraph.
  4. Now, change the position of the transmitter and note the geometrical angle that is to be expected.
  5. In the host PC connected to the receiver, open run_MUSIC_calib_lin_array.grc in gr-doa/apps. Configure the flowgraph input_variables by providing with the same parameters as in the steps before. Make sure that the RelativePhaseOffsets & AntennaCalibration files are available. Please see the documentation tab of the blocks for more information on the arguments needed. Execute the flowgraph.
  6. Verify that the angle of arrival as shown by the Number Sink. When conducting this experiment with a linear array, note that the visibility region is 0 to 180 degrees.
Interpretation of the direction compared to the compass
Figure 2: Interpretation of the direction compared to the compass

Actuator-control

The actuator is an additional hardware component included in the gr-doa oot module. This robotic arm platform receives information about the transmitter through a serial USB connection, allowing it to track and follow the transmitter's location. Required Hardware:

Alternatively, you may use another platform to control the servo motors.

When assembling the Waveshare 4-DOF Metal Robot Arm, ensure that the servo is positioned to operate exclusively within the horizontal plane.

The microbit folder contains the following files:

  1. microbit_makecode_with_ID.hex
  2. microbit_makecode_with_ID.py
  3. servo_controller

Files 1 and 2 contain the firmware for the Micro:bit. To use the code: Simply drag and drop the .hex file onto your Micro:bit device. To modify the code: Open the .hex file in the Micro:bit MakeCode editor. The servo control functionality uses the pxt-Servo library, which you can explore or adapt to your platform.
File 3 is a Python script for controlling the servos via serial communication. This is mainly for debugging and testing

This setup enables you to control the robot arm actuators using the Micro:bit and the provided code. To use it, connect the arm to the float output of the flowgraph as shown in Figure X. Be sure to adapt the serial port settings to match your operating system. Once the flowgraph is initiated, the actuator will begin to move and track the DoA estimation.
grafik
Figure 3: Serial Connection

Conclusion

This page summarized the step-by-step process involved in calibrating a USRP X440 for constant relative phase offsets using the GNU Radio flowgraphs provided. As a follow-up, detailed steps for direction of arrival estimation, an application that fundamentally depends on accurate phase offset calibration across the receive streams have been provided.

References

  1. Synchronization and MIMO Capability with USRP Devices
Clone this wiki locally