[USRP-users] TwinRX + X300 Usage

Christian Hahn christian at kumunetworks.com
Wed Jul 26 17:27:07 EDT 2017

Hey USRP-users,

I am doing some experiments that involve a USRP x300 + (2) TwinRX
daughtercards.  I am observing some degraded performance and would like
some advice on the manner in which I am configuring the receivers /
mainboard / daughtercards.

The experiment I am conducting involves collection of high-dynamic range
channel-estimates: similar requirements to a direction-finding problem.  In
my setup, I have 1 remote transmitter, and 4 receivers.

I am least confident about how I am configuring the daughtercards since
there are no examples that I could find which use these relatively new

The observations I have made indicate abnormally high phase noise and poor
relative SNR between receivers.  For example, when injecting an identical
signal into all 4 receivers, receivers 0-1 and 2-3 are 45 dB matched,
respectively.  However, receivers across daughtercards are not!  This is
strange since in my configuration of the USRP I intended to share the same
LO across all four receivers.  Furthermore, the spectrum of each receiver
is quite spurious.  I am expecting more than 45 dB SNR, at least.  The
signal level into the receivers is -36 dBm (average).  The PAPR of the
signal is very low < 5 dB.

This is the code I am using to configure the USRP and take a capture of
samples.  It is using a thin wrapper written in Python around the
multi_usrp C++ API.

Thank you very much, any insight is much appreciated!


import uhd
import time

# Some parameters
freq = 1600.e6
gain = 60.
num_samples = int(10.e6)

# Create the USRP object
usrp = uhd.Uhd('type=x300,addr=,second_addr=')

# Configure mainboard
usrp.set_rx_subdev_spec('A:0 A:1 B:0 B:1')

# Configure receivers
source = ['internal', 'companion', 'external', 'external']
export = [True, False, False, False]
antenna = ['RX1', 'RX2', 'RX1', 'RX2']
for chan in range(usrp.get_rx_num_channels()):
    usrp.set_rx_lo_source(source[chan], 'all', chan)
    usrp.set_rx_lo_export_enabled(export[chan], 'all', chan)
    usrp.set_rx_antenna(antenna[chan], chan)
    usrp.set_rx_freq(freq, chan)
    usrp.set_rx_gain(gain, chan)


# Capture samples
samps = usrp.receive(num_samples, list(range(usrp.get_rx_num_channels())),
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/attachments/20170726/3debd739/attachment-0002.html>

More information about the USRP-users mailing list