MATLAB Answers

Transmit on 2 different frequencies with USRP B210

38 views (last 30 days)
Terrance Pat
Terrance Pat on 13 Nov 2018
Answered: Khyati Rao on 26 Aug 2020
USRP Hardware Support Package docs and help pages say in several places that it supports being able to set the Tx or Rx frequency independently for the dual-channel Ettus B210 radios. The main documentation page for the comm.SDRuTransmitter object, near the top, says very explicity that I should be able to set a different CenterFrequency on each channel:
  • B210, X300, and X310 radios support two channels that you can use to send data with the comm.SDRuTransmitter System object. You can use both channels or only a single channel (either channel 1 or 2). The comm.SDRuTransmitter System object receives a matrix signal, where each column is a channel of data of fixed length.You can set the CenterFrequency, LocalOsillatorOffset, and Gain properties independently for each channel. Alternatively, you can apply the same setting to both channels. All other System object property values apply to both channels.
and this example also details that this is possible, and expected for the B210.
Now, I'm here because mine won't do that ... it throws an error in comm.internal.SDRuBase. I can set the LocalOscillatorOffset and Gain properties to a 1x2 vector, after changing ChannelMapping to [1 2], but it will not allow me to change CenterFrequency. Here is a brief example, including my error:
>> tx = comm.SDRuTransmitter('Platform','B210','SerialNum','31554F5');
>> tx.ChannelMapping = [1 2];
>> tx.Gain = [79 81];
>> tx.LocalOscillatorOffset = [0 0];
>> tx.CenterFrequency = [2.50e9 2.55e9];
Error using comm.internal.SDRuBase
Expected CenterFrequency to be a scalar.
Error in comm.internal.SDRuBase/set.CenterFrequency
If I print it out here, the object looks as expected, with the other properties set as I asked, and CenterFrequency is still a scalar. Can anyone else try this out and see what they get, please?
I've tried digging through source code, but any relevant parts are obnoxiously buried in binary files, AFAIK, so I can't sort out if this is actually intended, or is simply an oversight. Would really love to fix it myself, if possible. Will also be looking for bug-reporting systems next, I'm new.
So, \*shrug\* ... I'd really like it to behave as advertised. Any help is greatly appreciated!
HW/SW setup, briefly:
  • MATLAB 2018b
  • USRP Support Package version posted 12 Sept 2018, all dependencies installed
  • Ettus B210 board rev 4, FW ver 8.0, FPGA ver 14.0 (according to 'probesdru' command)
  • Running on current-enough Ubuntu

  1 Comment

Terrance Pat
Terrance Pat on 13 Nov 2018
Note that there are a TON of examples, such as this one, which talk about how to transmit over two antennas. But every one I've seen has both channels transmit on the same CenterFrequency:
radio.ChannelMapping = [1 2]; % Use both TX channels
radio.CenterFrequency = 900e6;
which is the radio equivalent of punching yourself in the face. :P

Sign in to comment.

Answers (1)

Khyati Rao
Khyati Rao on 26 Aug 2020
On the USRP B210, for the MIMO case, both receive frontends share the RX LO, and both transmit frontends share the TX LO. Each LO is tunable between 50 MHz and 6 GHz.
Hence, the center frequency for USRP B210 with MIMO must be a scalar.
Following link might be useful:


Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!