Forum: GNU Radio USRP1 4 Channel Subdev Issue

Posted by Tom Hendrick (Guest)
on 2013-02-19 20:09
(Received via mailing list)
Hello all,


I am trying to make the USRP1 work with 4 independent real signal 
channels (not IQ) using two RX daughterboards. In the older versions of 
GNURadio I was able to make this work with a custom block I had found in 
a repository or from somebody on the mailing list.

I am using GRC to make scripts and in the newer UHD version I'm having 
trouble making this work with 4 channels. I can make 2 channels work by 
setting the Mb0:subdev specification in the UHD block to A:A A:B, or 
even A:B B:B, etc.
When I try to make all four work by setting A:A A:B B:A B:B (four 
independent real channels) I get the following error:

RuntimeError: ValueError: The subdevice specification "A:A A:B B:A B:B" 
is too long.
The user specified 4 channels, but there are only 2 rx dsps on mboard 0.


Does anyone know how I can properly call the subdevice specification and 
make this work without needing a custom block (I'm not skilled enough to 
write complicated blocks)? Again, in the older GNURadio version I was 
able to get 4 real RX channels to work independently with a custom block 
someone else had written. I don't think its compatible with the newer 
UHD version as it was done in 2009.

Thank you, - Tom
Posted by Marcus D. Leech (Guest)
on 2013-02-19 20:17
(Received via mailing list)
> or even A:B B:B, etc.
> version I was able to get 4 real RX channels to work independently
> with a custom block someone else had written.  I don't think its
> compatible with the newer UHD version as it was done in 2009.
>
> Thank you, - Tom
>
For 4 RX DSPs on the USRP1, you need the 4rx FPGA image:

http://files.ettus.com/uhd_docs/manual/html/usrp1....
Posted by Tom Hendrick (Guest)
on 2013-02-19 20:20
(Received via mailing list)
Oh ok I will try that out not sure why I didn't come across that in my 
search. Thanks so much Marcus!

-Tom




________________________________
 From: Marcus D. Leech <mleech@ripnet.com>
To: discuss-gnuradio@gnu.org
Sent: Tuesday, February 19, 2013 11:13 AM
Subject: Re: [Discuss-gnuradio] USRP1 4 Channel Subdev Issue


Hello all,
>RuntimeError: ValueError: The subdevice specification "A:A A:B B:A B:B" is too 
long.
>The user specified 4 channels, but there are only 2 rx dsps on
          mboard 0.
>
>
>
>Does anyone know how I can properly call the subdevice specification and make 
this work without needing a custom block (I'm not skilled enough to write 
complicated blocks)? Again, in the older GNURadio version I was able to get 4 real 
RX channels to work independently with a custom block someone else had written. I 
don't think its compatible with the newer UHD version as it was done in 2009.
>
>
>Thank you, - Tom
>
>
For 4 RX DSPs on the USRP1, you need the 4rx FPGA image:

http://files.ettus.com/uhd_docs/manual/html/usrp1....



--
Principal Investigator
Shirleys Bay Radio Astronomy Consortium
http://www.sbrac.org
Posted by Tom Hendrick (Guest)
on 2013-02-20 18:52
(Received via mailing list)
I tried the suggestion from Marcus and was able to get the USRP1 to work 
with 4 real channels. I have a simple GRC script which samples the USRP 
at 1MS/s and then resamples the signal to 500kS/s and then writes to a 
file. I am getting continuous Overruns with this GRC script on my 
laptop.

I have the same GRC script with the older GNURadio and when I ran it 
again on the same laptop (I booted up a prior version of ubuntu with an 
older gnuradio version that uses the USRP class not UHD) it writes to 
file with no Overruns at all. I saw that the custom quad channel USRP 
block has an fusb_block and fusb_nblocks setting. These are both set to 
512*32 but if I lower them to something like 64*32 I start to see the 
Overruns.

Are there similar type settings I can adjust on the 3.6.2 version of GRC 
or GNURadio python scripts to get rid of the overruns? I'm not sure if 
this is possible but I would like to not have to boot into an older 
ubuntu version when I need 4 real channels. The only thing that comes to 
mind is to adjust noutput_items and I tried this but it didn't eliminate 
the overruns.

Thank you, -Tom




________________________________
 From: Tom Hendrick <sdtom182@yahoo.com>
To: Marcus D. Leech <mleech@ripnet.com>; "discuss-gnuradio@gnu.org" 
<discuss-gnuradio@gnu.org>
Sent: Tuesday, February 19, 2013 11:19 AM
Subject: Re: [Discuss-gnuradio] USRP1 4 Channel Subdev Issue


Oh ok I will try that out not sure why I didn't come across that in my 
search. Thanks so much Marcus!

-Tom



________________________________
 From: Marcus D. Leech <mleech@ripnet.com>
To: discuss-gnuradio@gnu.org
Sent: Tuesday, February 19, 2013 11:13 AM
Subject: Re: [Discuss-gnuradio] USRP1 4 Channel Subdev Issue


Hello all,
>RuntimeError: ValueError: The subdevice specification "A:A A:B B:A B:B" is too 
long.
>The user specified 4 channels, but there are only 2 rx dsps on
          mboard 0.
>
>
>
>Does anyone know how I can properly call the subdevice specification and make 
this work without needing a custom block (I'm not skilled enough to write 
complicated blocks)? Again, in the older GNURadio version I was able to get 4 real 
RX channels to work independently with a custom block someone else had written. I 
don't think its compatible with the newer UHD version as it was done in 2009.
>
>
>Thank you, - Tom
>
>
For 4 RX DSPs on the USRP1, you need the 4rx FPGA image:

http://files.ettus.com/uhd_docs/manual/html/usrp1....



--
Principal Investigator
Shirleys Bay Radio Astronomy Consortium
http://www.sbrac.org
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Posted by Marcus D. Leech (Guest)
on 2013-02-20 18:55
(Received via mailing list)
> USRP block has an fusb_block and fusb_nblocks setting.  These are both
> Thank you, -Tom
>
>
http://files.ettus.com/uhd_docs/manual/html/transp...

The USB parameters shown there can be passed as device args
Posted by Tom Hendrick (Guest)
on 2013-02-20 21:24
(Received via mailing list)
Thanks for the suggestion Marcus.

I tried adjusting those settings by using the following command:

uhd_usrp_probe --args="serial=123456, 
recv_frame_size=4096,num_recv_frames=4096"
The 123456 is replaced with the actual serial number of the usrp1 when I 
run the command.


When I run that command it shows the USRP1 configuration settings and 
the daughtercard and then at the bottom it says "Segmentation fault 
(core dumped)". This happens with other values of recv_frame_size and 
num_recv_frames. Does anyone know what I'm doing wrong or is this even 
the right way to change those settings?

What are the default values in case I need to set them back to what they 
were? I couldn't find this anywhere in the UHD documentation.

Thank you, - Tom




________________________________
 From: Marcus D. Leech <mleech@ripnet.com>
To: Tom Hendrick <sdtom182@yahoo.com>
Cc: "discuss-gnuradio@gnu.org" <discuss-gnuradio@gnu.org>
Sent: Wednesday, February 20, 2013 9:53 AM
Subject: Re: [Discuss-gnuradio] USRP1 4 Channel Subdev Issue


I tried the suggestion from Marcus and was able to get the USRP1 to work 
with 4 real channels. I have a simple GRC script which samples the USRP 
at 1MS/s and then resamples the signal to 500kS/s and then writes to a 
file. I am getting continuous Overruns with this GRC script on my 
laptop.
>
>I have the same GRC script with the older GNURadio and when I
        ran it again on the same laptop (I booted up a prior version of
        ubuntu with an older gnuradio version that uses the USRP class
        not UHD) it writes to file with no Overruns at all. I saw that
        the custom quad channel USRP block has an fusb_block and
        fusb_nblocks setting. These are both set to 512*32 but if I
        lower them to something like 64*32 I start to see the Overruns.
>
>Are there similar type settings I can adjust on the 3.6.2
        version of GRC or GNURadio python scripts to get rid of the
        overruns? I'm not sure if this is possible but I would like to
        not have to boot into an older ubuntu version when I need 4 real
        channels. The only thing that comes to mind is to adjust
        noutput_items and I tried this but it didn't eliminate the
        overruns.
>
>Thank you, -Tom
>
>
>
>
http://files.ettus.com/uhd_docs/manual/html/transp...

The USB parameters shown there can be passed as device args
Posted by Josh Blum (Guest)
on 2013-02-21 01:35
(Received via mailing list)
On 02/20/2013 02:22 PM, Tom Hendrick wrote:
> What are the default values in case I need to set them back to what they were? 
I couldn't find this anywhere in the UHD documentation.
>

The values arent sticky, so you dont need to worry about that. The
default libusb xfer size if 16384 bytes.

I think the segfault comes from the number of frames. The default is 16,
and you can change this, but 4k is probably way more pending LUTs than
libusb can handle.

-josh
Posted by Tom Hendrick (Guest)
on 2013-02-21 23:21
(Received via mailing list)
Thanks Josh.
I've tried some different combinations of uhd_usrp_probe 
--args="serial=123456, recv_frame_size=16384,num_recv_frames=16" and 
varied recv_frame_size up to something really high like 1,000,000 and 
num_recv_frames up to 400 and didn't get the segementation fault error.

When I run my 4 channel RX script after trying some different 
configurations I am still getting overruns. If I change the USRP 
sampling rate to 500kS/s but leave the file rate at 500kS/s the overruns 
go away however I want to sample the USRP at 1MS/s to have a flatter 
frequency response. This leads me to think the Overruns are not caused 
by the file writing part.

The fusb_block and  fusb_nblocks setting were both set to 512*32 in the 
older GNURadio version and custom USRP 4 channel source block. The same 
script in the older GNURadio version still runs with no Overruns even at 
1Ms/s for each of the 4 USRP channels.

Is there anything else I can try? Do I need to also alter the 
send_frame_size and num_send_frames in the uhd_usrp_probe calls?

Thank you, Tom




________________________________
 From: Josh Blum <josh@ettus.com>
To: Tom Hendrick <sdtom182@yahoo.com>; "Discuss-gnuradio@gnu.org" 
<Discuss-gnuradio@gnu.org>
Sent: Wednesday, February 20, 2013 4:34 PM
Subject: Re: [Discuss-gnuradio] USRP1 4 Channel Subdev Issue



On 02/20/2013 02:22 PM, Tom Hendrick wrote:
> What are the default values in case I need to set them back to what they were? I 
couldn't find this anywhere in the UHD documentation.
>

The values arent sticky, so you dont need to worry about that. The
default libusb xfer size if 16384 bytes.

I think the segfault comes from the number of frames. The default is 16,
and you can change this, but 4k is probably way more pending LUTs than
libusb can handle.

-josh
Posted by Tom Hendrick (Guest)
on 2013-02-25 18:34
(Received via mailing list)
I forgot to mention that I had set three channels to null and kept just 
one writing to a file. In this case I still see overruns.
Also if I drop the sampling rate to 500 MS/s on all four channels but 
leave them all writing to file at 500 kS/s I don't see any overruns at 
all. The problem is I want 1 MS/s sampling for a flatter frequency 
response.

Does anyone have advice on anything else I can try? Again in the older 
version of GNURadio/GRC, I could run four channels at 1MS/s and write 
all four to 500MS/s sampled files without any overruns at all.

Thank you, -Tom




________________________________
 From: Tom Hendrick <sdtom182@yahoo.com>
To: "josh@ettus.com" <josh@ettus.com>; "Discuss-gnuradio@gnu.org" 
<Discuss-gnuradio@gnu.org>
Sent: Thursday, February 21, 2013 2:20 PM
Subject: Re: [Discuss-gnuradio] USRP1 4 Channel Subdev Issue


Thanks Josh.
I've tried some different combinations of uhd_usrp_probe 
--args="serial=123456, recv_frame_size=16384,num_recv_frames=16" and 
varied recv_frame_size up to something really high like 1,000,000 and 
num_recv_frames up to 400 and didn't get the segementation fault error.

When I run my 4 channel RX script after trying some different 
configurations I am still getting overruns. If I change the USRP 
sampling rate to 500kS/s but leave the file rate at 500kS/s the overruns 
go away however I want to sample the USRP at 1MS/s to have a flatter 
frequency response. This leads me to think the Overruns are not caused 
by the file writing part.

The fusb_block and  fusb_nblocks setting were both set to 512*32 in the 
older GNURadio version and custom USRP 4 channel source block. The same 
script
 in the older GNURadio version still runs with no Overruns even at 1Ms/s 
for each of the 4 USRP channels.

Is there anything else I can try? Do I need to also alter the 
send_frame_size and num_send_frames in the uhd_usrp_probe calls?

Thank you, Tom




________________________________
 From: Josh Blum <josh@ettus.com>
To: Tom Hendrick <sdtom182@yahoo.com>; "Discuss-gnuradio@gnu.org" 
<Discuss-gnuradio@gnu.org>
Sent: Wednesday, February 20, 2013 4:34 PM
Subject: Re: [Discuss-gnuradio] USRP1 4 Channel Subdev Issue



On 02/20/2013 02:22 PM, Tom Hendrick wrote:
> What are the default values in case I need to set them back to what they were? I 
couldn't find this anywhere in the UHD documentation.
>

The
 values arent sticky, so you dont need to worry about that. The
default libusb xfer size if 16384 bytes.

I think the segfault comes from the number of frames. The default is 16,
and you can change this, but 4k is probably way more pending LUTs than
libusb can handle.

-josh

> Thank you, - Tom
>
>
>
>
> ________________________________
> From: Marcus D. Leech <mleech@ripnet.com>
> To: Tom Hendrick <sdtom182@yahoo.com>
> Cc: "discuss-gnuradio@gnu.org" <discuss-gnuradio@gnu.org>
> Sent: Wednesday, February 20, 2013 9:53
 AM
>     fusb_nblocks setting.
These are both set to 512*32 but if I
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.