usrp1 uhd frontend selection

395 views
Skip to first unread message

Simon IJskes

unread,
Apr 16, 2017, 2:53:30 PM4/16/17
to Pothos Users

I've got a USRP1 with both slots A en B populated.

A is populated with BasicRX and BasicTX
B is populated with WBX

When i execute:

SoapySDRUtil --probe="driver=uhd,type=usrp1"

it returns 1 tx channel and 1 rx channel with the specification from the
WBX board (Slot B:).

How do i connect to the A: slot?

G. Simon

----------------------------------------------------
-- Device identification
----------------------------------------------------
driver=usrp1
hardware=USRP1
mboard_id=USRP1
mboard_name=
mboard_serial=4cf3333
rx0_antenna=RX2
rx0_id=WBX, WBX + Simple GDB (0x0053)
rx0_serial=wbxrx2
rx0_subdev_name=WBXv2 RX+GDB
rx0_subdev_spec=B:0
tx0_antenna=TX/RX
tx0_id=WBX (0x0052)
tx0_serial=wbxtx2
tx0_subdev_name=WBXv2 TX+GDB
tx0_subdev_spec=B:0

----------------------------------------------------
-- Peripheral summary
----------------------------------------------------
Channels: 1 Rx, 1 Tx
Timestamps: YES
Clock sources: internal
Time sources: none
GPIOs: RXA, TXA, RXB, TXB






Josh Blum

unread,
Apr 16, 2017, 3:42:13 PM4/16/17
to pothos...@googlegroups.com
Simon,

Its only showing the one channel because the default subdev spec is only
reporting one channel from the call usrp::get_rx_num_channels() You may
have to do a little searching in the usrp1 driver docs, but basically
there is a string called "subdev spec" that is used to enable channels
and select the daughterboard frontends on the usrp1.

You can pass this string to SoapySDR via device args "rx_subdev" or
"tx_subdev":
https://github.com/pothosware/SoapyUHD/blob/master/SoapyUHDDevice.cpp#L40

You may need to double check this, but to see the second channel it
might be something like probe="driver=uhd,type=usrp1,rx_subdev=A:AB B:0"

Where A:AB means use the AB (both inputs on the Basic RX) for side A,
and B:0 means use the default input path for the WBX on side A. But,
check to the docs to confirm.

-josh

Simon IJskes

unread,
Apr 16, 2017, 4:05:38 PM4/16/17
to jo...@joshknows.com
Josh,

i think you are refering to:

https://www.ettus.com/content/files/kb/application_note_frontends_subdevices_antenna_ports.pdf

for the subdev specification.

i did try it first time in probe and could not see the tuning range change.

i tried it again, and

SoapySDRUtil --probe="driver=remote,tx_subdev=A:A"

SoapySDRUtil --probe="driver=remote,rx_subdev=A:A"

and i only selects the BasicTx (not the BasicRX) board. i'm including
just the rx0_* properties:

SoapySDRUtil --probe="driver=remote,rx_subdev=A:A"

rx0_antenna=RX2
rx0_id=WBX, WBX + Simple GDB (0x0053)
rx0_serial=wbxrx2
rx0_subdev_name=WBXv2 RX+GDB
rx0_subdev_spec=B:0
tx0_antenna=
tx0_id=Basic TX (0x0000)
tx0_serial=basictx1
tx0_subdev_name=BasicTX (A)
tx0_subdev_spec=A:A

the tx_subdev=A:A gives the same output.

G. Simon

Simon IJskes

unread,
Apr 16, 2017, 4:05:56 PM4/16/17
to jo...@joshknows.com
Interesting, when parameter errors are made, they are all attributed to
the tx subdevice.

G. Simon

sim@t520:~$ SoapySDRUtil --probe="driver=remote,tx_subdev=A:A,rx_subdev=A:"
######################################################
## Soapy SDR -- the SDR abstraction library
######################################################

Probe device driver=remote,tx_subdev=A:A,rx_subdev=A:
linux; GNU C++ version 5.4.0 20160609; Boost_105800;
UHD_003.010.001.001-release

[INFO] Opening a USRP1 device...
[INFO] Using FPGA clock rate of 64.000000MHz...
Error probing device: RemoteError: AssertionError: assertion failed:
A: is not a valid tx subdevice specification on mboard 0.
possible values are: [A:AB, A:BA, A:A, A:B, B:0].

sim@t520:~$ SoapySDRUtil --probe="driver=remote,tx_subdev=A:,rx_subdev=A:A"
######################################################
## Soapy SDR -- the SDR abstraction library
######################################################

Probe device driver=remote,tx_subdev=A:,rx_subdev=A:A
linux; GNU C++ version 5.4.0 20160609; Boost_105800;
UHD_003.010.001.001-release

[INFO] Opening a USRP1 device...
[INFO] Using FPGA clock rate of 64.000000MHz...
Error probing device: RemoteError: AssertionError: assertion failed:
A: is not a valid tx subdevice specification on mboard 0.
possible values are: [A:AB, A:BA, A:A, A:B, B:0].


Simon IJskes

unread,
Apr 16, 2017, 4:14:13 PM4/16/17
to jo...@joshknows.com
Aha, i see:

./SoapyUHDDevice.cpp: if (args.count("rx_subdev") != 0)
_dev->set_tx_subdev_spec(args.at("rx_subdev"));
./SoapyUHDDevice.cpp: if (args.count("tx_subdev") != 0)
_dev->set_tx_subdev_spec(args.at("tx_subdev"));

both do set_tx_subdev_spec.

G. Simon

Simon IJskes

unread,
Apr 16, 2017, 4:34:24 PM4/16/17
to pothos...@googlegroups.com
Fixed it, and:

SoapySDRUtil --probe="rx_subdev=A:A,tx_subdev=A:A"

returns both BasicRX and BasicTX.

rx0_antenna=
rx0_id=Basic RX (0x0001)
rx0_serial=basicrx1
rx0_subdev_name=BasicRX (A)
rx0_subdev_spec=A:A
tx0_antenna=
tx0_id=Basic TX (0x0000)
tx0_serial=basictx1
tx0_subdev_name=BasicTX (A)
tx0_subdev_spec=A:A

Josh, Thanks for your time!

G. Simon

Simon IJskes

unread,
Apr 16, 2017, 4:57:07 PM4/16/17
to Pothos Users
On 16-04-17 22:40, Josh Blum wrote:
> thanks! typo fixed on master now
>
> -josh

Thank you Josh!

A small pitch for this software:

I really like it, for the most part, i'm sitting in the living room,
with my laptop, building a pothos graph, for looking at the longwave,
while in attic my ettus usrp is running. the wifi is a bit busy, but it
is working! kudos!

G. Simon

Reply all
Reply to author
Forward
0 new messages