Question of dual transmitter/receiver

Hi all,

I’d like to ask some questions about dual transmitter/receiver on USRP1.

I want to make dual transmitter/receiver
by remodeling benchmark_tx/rx.py.

In detail,
I want to use two daughterboard (two FLEX400) on one USRP1.
The pair of side-A transmit and receive on 412MHz,
and the pair of side-B transmit and receive on 420MHz.

USRP1(tx only) USRP1(rx only)
±-----------+ ±-----------+
| | | |
|db1: | 420MHz |db1: |
| FLEX400(A)------------FLEX400(A) |
| | | |
|db2: | |db2: |
| FLEX400(B)------------FLEX400(B) |
| | 412MHz | |
±-----------+ ±-----------+

Now I made tx-node’s program like attachment file,
and execute this file.

$ sudo python dual_tx.py -f 412M

However, I got the following error.

user:/usr/share/gnuradio/examples/digital$ sudo python dual_tx.py -f
412M
{‘verbose’: False, ‘discontinuous’: False, ‘samples_per_symbol’: 2,
‘usrpx’: None, ‘interp’: None, ‘fusb_block_size’: 0, ‘megabytes’: 1.0,
‘rx_freq’: 412000000.0, ‘size’: 1500, ‘show_tx_gain_range’: False,
‘log’: False, ‘tx_subdev_spec’: (0, 0), ‘fusb_nblocks’: 0, ‘lo_offset’:
None, ‘tx_gain’: None, ‘which’: 0, ‘modulation’: ‘gmsk’, ‘excess_bw’:
0.34999999999999998, ‘bt’: 0.34999999999999998, ‘interface’: ‘eth0’,
‘freq’: None, ‘bitrate’: 100000.0, ‘from_file’: None, ‘tx_freq’:
420000000, ‘mac_addr’: ‘’, ‘tx_amplitude’: 0.25, ‘gray_code’: True}

gr_fir_fff: using SSE
Requested TX Bitrate: 100k Actual Bitrate: 125k
@@@@@
{‘verbose’: False, ‘discontinuous’: False, ‘samples_per_symbol’: 2,
‘usrpx’: None, ‘interp’: None, ‘fusb_block_size’: 0, ‘megabytes’: 1.0,
‘rx_freq’: 412000000.0, ‘size’: 1500, ‘show_tx_gain_range’: False,
‘log’: False, ‘tx_subdev_spec’: (1, 0), ‘fusb_nblocks’: 0, ‘lo_offset’:
None, ‘tx_gain’: None, ‘which’: 0, ‘modulation’: ‘gmsk’, ‘excess_bw’:
0.34999999999999998, ‘bt’: 0.34999999999999998, ‘interface’: ‘eth0’,
‘freq’: None, ‘bitrate’: 100000.0, ‘from_file’: None, ‘tx_freq’:
412000000, ‘mac_addr’: ‘’, ‘tx_amplitude’: 0.25, ‘gray_code’: True}
usrp_open_interface:usb_claim_interface: failed interface 1
could not claim interface 1: Device or resource busy
usrp_basic_tx: can’t open tx interface
Traceback (most recent call last):
File “dual_tx.py”, line 150, in
main()
File “dual_tx.py”, line 109, in main
tb = my_top_block(mods[options.modulation], options)
File “dual_tx.py”, line 54, in init
self.txpath_b = usrp_transmit_path.usrp_transmit_path(modulator,
options)
File “/usr/share/gnuradio/examples/digital/usrp_transmit_path.py”,
line 67, in init
self._setup_usrp_sink(options)
File “/usr/share/gnuradio/examples/digital/usrp_transmit_path.py”,
line 76, in _setup_usrp_sink
self.u = usrp_options.create_usrp_sink(options)
File “/usr/share/gnuradio/examples/digital/usrp_options.py”, line 119,
in create_usrp_sink
gain=options.tx_gain,
File “/usr/share/gnuradio/examples/digital/generic_usrp.py”, line 199,
in init
_generic_usrp_base.init(self, **kwargs)
File “/usr/share/gnuradio/examples/digital/generic_usrp.py”, line 57,
in init
elif usrpx == ‘1’ or self._subdev_spec:
self._setup_usrpx(USRP1_TYPE)
File “/usr/share/gnuradio/examples/digital/generic_usrp.py”, line 76,
in _setup_usrpx
if self._type == USRP1_TYPE: self._setup_usrp1()
File “/usr/share/gnuradio/examples/digital/generic_usrp.py”, line 229,
in _setup_usrp1
fusb_nblocks=self._fusb_nblocks)
File “/usr/lib/python2.6/dist-packages/gnuradio/usrp/usrp_swig.py”,
line 2412, in sink_c
return _usrp_swig.sink_c(*args, **kwargs)
RuntimeError: can’t open usrp
user:/usr/share/gnuradio/examples/digital$


I think, I couldn’t make two txpath.
(I can make “txpath_a”, but can’t make “txpath_b”)
But we can make two path ( txpath and rxpath) in tunnel.py.
Why I can’t make two txpath like this way?

I can’t make dual transmit path like this way.

Does anyone has some idea to make ?
If you know, please tell me dual transmit path technique.

Thanks,
youhei

Hi,

It seems you have two daughterboards on one USRP1, and you want to
communicate with these two daughterboards.
Maybe you could take a look at fm_tx_2_daughterboards.py first(in
/gnuradio-examples/python/usrp/.).
From your code, I think you didn’t modify the USRP setting that causes
your
code fail.

Hope that helps,

Fisheep

YouheiFujii wrote:

The pair of side-A transmit and receive on 412MHz,
| FLEX400(B)------------FLEX400(B) |
However, I got the following error.

gr_fir_fff: using SSE
usrp_open_interface:usb_claim_interface: failed interface 1
File “/usr/share/gnuradio/examples/digital/usrp_transmit_path.py”,
_generic_usrp_base.init(self, **kwargs)
line 2412, in sink_c

    options.tx_freq = 420000000

options)
/////////////////////////////////////////////////////////////////////////////
expert_grp = parser.add_option_group(“Expert”)
parser.add_option(“-M”, “–megabytes”, type=“eng_float”, default=1.0,
for mod in mods.values():
parser.print_help(sys.stderr)
print “Warning: failed to enable realtime scheduling”
while n < nbytes:
tb.txpath_b.send_pkt(payload) #0724#
tb.wait() # wait for it to finish
Discuss-gnuradio Info Page


View this message in context:
http://old.nabble.com/question-of-dual-transmitter-receiver-tp29253936p29266247.html
Sent from the GnuRadio mailing list archive at Nabble.com.

Hi,

Thank you for your advice.

It seems you have two daughterboards on one USRP1, and you want to
communicate with these two daughterboards.
Yes, that’s right.

I want to use my dual-db program in /usr/share/example/digital.
I saw “fm_tx_2_daughterboards.py”, but that program isn’t use digital’s
py-files and modules.

When I search, I saw the function “set_mux”.
I tried use “set_mux”, but I didn’t do that well.

If does anyone have experience of making program which on dual-db on
1-USRP1,
please give me advice.

I have to do well in few days ;-

Thanks,
youhei

Hi,

Sorry for my unclear suggestion before.
In the “fm_tx_2_daughterboards.py” code, just refer to the code of USRP
setting and make the same change for benchmark_tx.py.
The code start from

----------------------------------------------------------------

Set up USRP to transmit on both daughterboards

self.u = usrp.sink_c(nchan=2) # say we want two channels

self.subdev = (self.u.db(0, 0), self.u.db(1, 0))

self.u.set_mux(0xba98)

----------------------------------------------------------------

And the setting of USRP1 of benchmark_tx.py
(/gnuradio-examples/python/digital/.) is in usrp_transmit_path.py.
But I remember that the new version of gnuradio hides the USRP setting
in
the files of usrp_options.py (/gnuradio-core/src/python/.) and
generic_usrp.py (/gnuradio-core/src/python/blks2impl/.)
If you want to modify these two files, I think it is a little bit
difficult.
Maybe you have to construct a new USRP setting in usrp_transmit_path.py.

The setting of “set_mux” seems different for tx and rx, but I don’t know
the
exact reason. Sorry.

I am not sure whether this information is what you want. Hope this
helps.

Fisheep

YouheiFujii wrote:

I saw “fm_tx_2_daughterboards.py”, but that program isn’t use digital’s

/gnuradio-examples/python/usrp/.).
Discuss-gnuradio mailing list
[email protected]
Discuss-gnuradio Info Page


View this message in context:
http://old.nabble.com/question-of-dual-transmitter-receiver-tp29253936p29266829.html
Sent from the GnuRadio mailing list archive at Nabble.com.