Running OFDM on USRP2

Hello,
I was trying to run following OFDM command on USRP2, however, I
got a
bunch of “SSSSStime out” at the receiver side.

./benchmark_ofdm_tx.py -f 2.4G -i 512 --fft-length=64
–occupied-tones=32
–cp-length=4
./benchmark_ofdm_rx.py -f 2.4G -d 256 --fft-length=64
–occupied-tones=32
–cp-length=4

I wonder if there is any one successfully running OFDM on USRP2, what
are
the command parameters you are using and if there is any modification in
the
code, can you let me know.

Thanks,
Bin

Hi,

I have gnuradio 3.2.2 installed on Ubintu 9.10 and I’m using USRP2s
with XCVR2450 daughterboards.
I tried your example but I changed the interpolation to correspond to
the decimation at the receiver:

./benchmark_ofdm_tx.py -f 2.4G -i 256 --fft-length=64
–occupied-tones=32 --cp-length=4
./benchmark_ofdm_rx.py -f 2.4G -d 256 --fft-length=64
–occupied-tones=32 --cp-length=4

And it works fine.
When I tested the example I played with tx and rx gains and the
tx-amplitude to find the best setting.

Cheers,

Veljko

2010/1/27 bin zan [email protected]:

Thanks Veljko, Did you do any modification on the gnuradio 3.2.2 code?
(Because at my side the interpolation/decimation was not the problem, I
forgot to change the value in the email)

Bin

Hi Anupama

Unfortunately, I can’t offer a solution at this stage. However, I had
similar error messages a few days ago. I thought perhaps these python
scripts were to be used exclusively for the original USRPs, though I
think in one or two posts I have seen, people mentioned successfully
running them for USRP2s.

Ian.

Hi,

The example provided with the gnuradio codebase requires small
modifications in order to work with USRP2. You can try with the
modifications I made:

www.cs.ucsb.edu/~veljko/downloads/ofdm_example.tar.gz

In my case with XCVR2450 daughter boards running the following works
fine:

transmitter:
benchmark_ofdm_tx_new.py -f 2.45G --tx-amplitude 0.9 -M 8 -s 200 -m
bpsk --fft-length=512 --occupied-tones=80 -i 64 --tx-gain=10
–cp-length=128

receiver:
benchmark_ofdm_rx_new.py -e eth1 -f 2.45G -m bpsk --fft-length=512
–occupied-tones=80 -d 64 --rx-gain=30 --cp-length=128

You can try with the transmitter only first and usrp2_fft.py on the
other end, just to see if there’s something getting transmitted and if
it looks like OFDM.

cheers,

veljko

2010/2/2 Ian H. [email protected]:

Thanks Veljko

Actually, the problems I had were not with the OFDM case, but just
benchmark_tx.py and benchmark_rx.py. Are similar modifications necessary
for those scripts?

Ian.

Hi,

The example provided with the gnuradio codebase requires small
modifications in order to work with USRP2. You can try with the
modifications I made:

www.cs.ucsb.edu/~veljko/downloads/ofdm_example.tar.gz

In my case with XCVR2450 daughter boards running the following works fine:

transmitter:
benchmark_ofdm_tx_new.py -f 2.45G --tx-amplitude 0.9 -M 8 -s 200 -m
bpsk --fft-length=512 --occupied-tones=80 -i 64 --tx-gain=10
–cp-length=128

receiver:
benchmark_ofdm_rx_new.py -e eth1 -f 2.45G -m bpsk --fft-length=512
–occupied-tones=80 -d 64 --rx-gain=30 --cp-length=128

You can try with the transmitter only first and usrp2_fft.py on the
other end, just to see if there’s something getting transmitted and if
it looks like OFDM.

cheers,

veljko

2010/2/2 Ian H. [email protected]:

Hi,
We did try the below command on two USRP2s coneected via a SMA Cable
(Tx-Rx)
with freq = 25M however it returned the following error on both sides

At Rx side it shows like the below -

[root@GNURADIO1 ofdm]# ./benchmark_ofdm_rx.py -f 25M -d 256
–fft-length=64
–occupied-tones=32 --cp-length=4
usrp: failed to find usrp[0]
Traceback (most recent call last):
File “./benchmark_ofdm_rx.py”, line 210, in
main()
File “./benchmark_ofdm_rx.py”, line 199, in main
tb = my_top_block(rx_callback, options)
File “./benchmark_ofdm_rx.py”, line 51, in init
self._setup_usrp_source()
File “./benchmark_ofdm_rx.py”, line 70, in _setup_usrp_source
fusb_nblocks=self._fusb_nblocks)
File “/usr/lib/python2.6/site-packages/gnuradio/usrp/usrp_swig.py”,
line
1699, in source_c
return _usrp_swig.source_c(*args, **kwargs)
RuntimeError: can’t open usrp

At Tx side -
root@gnu2 ofdm]# ./benchmark_ofdm_tx.py -f 25M -i 512 --fft-length=64
–occupied-tones=32 --cp-length=4
usrp: failed to find usrp[0]
Traceback (most recent call last):
File “./benchmark_ofdm_tx.py”, line 217, in
main()
File “./benchmark_ofdm_tx.py”, line 190, in main
tb = my_top_block(options)
File “./benchmark_ofdm_tx.py”, line 51, in init
self._setup_usrp_sink()
File “./benchmark_ofdm_tx.py”, line 66, in _setup_usrp_sink
fusb_nblocks=self._fusb_nblocks)
File
“/usr/local/lib/python2.5/site-packages/gnuradio/usrp/usrp_swig.py”,
line 2415, in sink_c
return _usrp_swig.sink_c(*args, **kwargs)
RuntimeError: can’t open usrp

May we request somebody to support us at the earliest to resolve the
above
issue with either software or hardware .

Thanks again,
Anupama

bin zan wrote:

[email protected]
Discuss-gnuradio Info Page


View this message in context:
http://old.nabble.com/running-OFDM-on-USRP2-tp27342376p27427749.html
Sent from the GnuRadio mailing list archive at Nabble.com.

Hi,
Thanks, we would try the below in our modifications .

however is someone is aware if the below script works with Basic
TX/Basic
Rx Daughter Boards, that would be really helpful

On Tue, Feb 2, 2010 at 4:34 PM, Anu000 [email protected]
wrote:

Traceback (most recent call last):
return _usrp_swig.source_c(*args, **kwargs)
tb = my_top_block(options)
issue with either software or hardware .

Thanks again,
Anupama

This is because you do not have the right permissions set to talk to
the USRP2 as a non-root user. See the USRP2 FAQs on the GNU Radio web
page for how to fix this.

Tom

Hi Tom ,
Thanks , we did try the updated script from Veljko . It works though we
have
missing packets after a while ( as suggested in the forum we would play
with
the interpolation and decimation ) though the 2 USRP2s are directly
connected .

We are still probing into the permissions issue as indicated though we
ran
with root permissions
( may be not in totality) , would keep posted on the later if we find
something on the same

Thanks again ,

/Regards

Hi Tom,
In our case, even with script from Veljko, the OFDM receiver doesn’t
show
any thing. And we always see “usrp2: failed to enable realtime
scheduling”.
Do you think that will cause problem?

Thanks,
Bin

On Wed, Feb 3, 2010 at 12:57 PM, Anupama Purohit

On Wed, Jan 27, 2010 at 11:21 AM, bin zan [email protected] wrote:

the command parameters you are using and if there is any modification in the
code, can you let me know.

Thanks,
Bin

The ‘S’ appear because you’re missing packets. Using the interpolation
and decimation rates you specified shouldn’t be taxi/ng your CPU,
which is a common cause of these problems. Are you running the USRP2
through a switch or is it directly connected?

The “time out” occurs when the receiver sees the preamble symbol of
the OFDM stream but nothing else. So what is probably happening is
that you get some of the symbols through, including the preamble
symbol, but you’re dropping other packets (causing the Ses), which
will trigger the “time out” message.

Tom

On Thu, Feb 04, 2010 at 07:25:47AM -0600, Tom R. wrote:

No, that message is just telling you that you don’t have permissions
to run it at the highest priority. It means you won’t be able to run
as fast, but that shouldn’t be the cause of your problems.

Tom

To enable real-time scheduling (highly recommended), do this:

Ensure that you are in the “usrp” group, and then add
this line to the end of /etc/security/limits.conf:

@usrp - rtprio 50

Log out, then back in, and the message should go away.

Eric

I have been inactive on this for some time due to other issues with my
USRP2s. However, I have been able to look into this again now, with
Veljko’s modified code. I run as root, and also had the realtime
scheduling enabled, however on the receive side I see nothing until the
transmitter stops transmitting, at which time I see timeout.

This seems to be the same problem that Bin had (except without the
realtime scheduling issue). Bin, did you end up resolving this issue?

Cheers

Ian.

Ian,
Yes, we use usrp2_fft.py to find and set the property rx_gain first.

Bin

On Wed, Feb 3, 2010 at 1:55 PM, bin zan [email protected] wrote:

Hi Tom,
In our case, even with script from Veljko, the OFDM receiver doesn’t show
any thing. And we always see “usrp2: failed to enable realtime scheduling”.
Do you think that will cause problem?

Thanks,
Bin

No, that message is just telling you that you don’t have permissions
to run it at the highest priority. It means you won’t be able to run
as fast, but that shouldn’t be the cause of your problems.

Tom