[USRP-users] Tuning resolution of TwinRX + DDC?

2019-03-22 Thread Paul Boven via USRP-users

Hi everyone,

We recently did VLBI observations centered at 1332.49 MHz, using a X310 
with TwinRX. The USRP was locked to external references for 10MHz and 
PPS for this. To get the best phase noise, I used 'integer-N' tuning. We 
noticed that overall, our receiver frequency was off by 0.118 Hz. This 
causes the phase of the recorded signal to rotate in about 9 seconds, 
compared to the other stations participating.


As far as I understand, when using integer-N tuning, the DDC simply 
takes care of the remaining offset. What would be the tuning resolution 
of the TwinRX itself (using int-N), and what is the resolution of the 
DDC which corrects for this?


Regards, Paul Boven.

___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


[USRP-users] Recording the full X3x0 bandwidth

2019-03-09 Thread Paul Boven via USRP-users

Hi,

I'm trying to record the full X310 bandwidth, for a few hours, without 
any missed samples. Which of course is a bit of a challenge - does 
anyone here already achieve this?


We're using a TwinRX, so initially I wanted to record 2x 100MS/s (from 
both channels), which amounts to 800MB/s, 6.4Gb/s. At first I tried 
uhd_rx_cfile, but have been unable to get it to a good state without 
showing an 'O' every few seconds at these speeds.


As a recorder I have a SuperMicro 847 chassis with 36 disks (Seagate 
Ironwolf 8TB T8000VN0022, 7200rpm). In this particular server, the disks 
are connected through an 'expander' backplane, from a single HBA (LSI 
3008). CPU is dual Xeon 4110, 2.1 GHz, 64 GB of ram.


At first I tried a 6 disk pool (raidz1), and eventually ended up 
creating a huge 36 disk ZFS stripe, which in theory should have no 
trouble with the throughput, but certainly kept dropping packets.


Note that recording to /dev/shm/file works perfectly without dropping 
packets, until the point that the memory is full.


Given that ZFS has quite a bit of (good) overhead to safeguard your 
data, I then switched to creating a mdadm raid-0 with 18 of the disks 
(Why not 36? I was really running out of time!)


At that point I also found 'specrec' from gr-analyze, which seems more 
suitable. But, even after enlarging its circular buffer to the largest 
supported values, it would only average a write speed of about 300MB/s.


In the end I had to settle for recording at only 50MS/s (200MB/s) from 
only a single channel, a far cry from the 2x 6.4Gb/s I'm ultimately 
looking to record. Although I did get more than an hour of perfect data 
out of it, over time the circular buffer did get fuller in bursts, and 
within 2 hours it exited due to exhausting the buffers. Restarting the 
application made it work like fresh again, with the same gradual decline

in performance.

Specrec, even when tweaking its settings, doesn't really take advantage 
of the large amount of memory in the server. As a next step, I'm 
thinking of adapting specrec to use much larger buffers, so that writes 
are at least in the range of MB to tens of MB. From earlier experiences, 
it is also important to flush your data to disk often, so the 
interruptions due to this are more frequent, but short enough to not 
cause receive buffers to overflow.


In terms of network tuning, all recording was done with MTU 9000, with 
wmem and rmem at the recommended values. All recordings were done as 
interleaved shorts.


Does anyone have hints or experiences to share?

Regards, Paul Boven.

___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


Re: [USRP-users] Passing arguments to an RFNOC block

2019-03-01 Thread Paul Boven via USRP-users

Hi again,

After way too much time spent trying to debug my issues, and renaming 
all the variables, I wasn't getting anywhere. Then I discovered xmllint 
which pointed out a few (!) more xml errors in a completely different 
section of the rfnocblock XML file. After fixing this, I've got the 
resampler part working.


Regards, Paul Boven.

On 28/02/2019 10:30, Paul Boven via USRP-users wrote:

Hi Jonathon,

Thanks for looking at the block, and spotting the mistake.
Unfortunately that doesn't stop the swig part from failing, so I'll keep 
digging further.


Regards, Paul Boven.

On 28/02/2019 04:19, Jonathon Pendlum wrote:

Hi Paul,

Your Nocscript has an error on line 47, you are a missing a comma: 
LE($config 1) should be LE($config, 1). That may not be the source of 
your issue, but try fixing that first.


Jonathon

On Thu, Feb 28, 2019 at 1:14 AM Paul Boven via USRP-users 
mailto:usrp-users@lists.ettus.com>> wrote:


    Hi everyone,

    As part of the VLBI[1] backend that I'm making in RFNOC, my first 
step

    is to make a rational resampler. It takes the 100MS/s signal from a
    TwinRX, and reduces it to 80MS/s. This can be done with a 5:4
    resampler.
    In order to make this work, I'm using the axi_rate_change block.

    Although the block works in simulation, I keep running into problems
    with the GRC integration, in particular SWIG throwing run-time 
errors.


    The problem seems to be in the way that the arguments (N, M, config)
    are
    passed around, but studying other blocks like the DDC block hasn't
    provided the clues for me to get past this hurdle.

    The resampler itself does work, which I tested by having it emit 
zeroes

    instead of the 'deleted' samples, and using a 'keen 1 in N' in GRC
    itself.

    At the moment, the block exits in VLBI_swig.py in set_arg:
    return _VLBI_swig_resamplerd5x4_sptr_set_arg(self, *args)
    RuntimeError: SyntaxError: Parsing Stopped at: $N, 5)

    If you're familiar with RFNOC, can you please have a look at:

    http://www.jive.nl/~boven/rfnoc-VLBI

    It contains the source, and also a compiled bitfile for the X310 for
    your convenience (but use at your own risk, of course).

    Regards, Paul Boven.

    [1] Very Long Baseline Interferometry

    ___
    USRP-users mailing list
    USRP-users@lists.ettus.com <mailto:USRP-users@lists.ettus.com>
    http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com



___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


Re: [USRP-users] Passing arguments to an RFNOC block

2019-02-28 Thread Paul Boven via USRP-users

Hi Jonathon,

Thanks for looking at the block, and spotting the mistake.
Unfortunately that doesn't stop the swig part from failing, so I'll keep 
digging further.


Regards, Paul Boven.

On 28/02/2019 04:19, Jonathon Pendlum wrote:

Hi Paul,

Your Nocscript has an error on line 47, you are a missing a comma: 
LE($config 1) should be LE($config, 1). That may not be the source of 
your issue, but try fixing that first.


Jonathon

On Thu, Feb 28, 2019 at 1:14 AM Paul Boven via USRP-users 
mailto:usrp-users@lists.ettus.com>> wrote:


Hi everyone,

As part of the VLBI[1] backend that I'm making in RFNOC, my first step
is to make a rational resampler. It takes the 100MS/s signal from a
TwinRX, and reduces it to 80MS/s. This can be done with a 5:4
resampler.
In order to make this work, I'm using the axi_rate_change block.

Although the block works in simulation, I keep running into problems
with the GRC integration, in particular SWIG throwing run-time errors.

The problem seems to be in the way that the arguments (N, M, config)
are
passed around, but studying other blocks like the DDC block hasn't
provided the clues for me to get past this hurdle.

The resampler itself does work, which I tested by having it emit zeroes
instead of the 'deleted' samples, and using a 'keen 1 in N' in GRC
itself.

At the moment, the block exits in VLBI_swig.py in set_arg:
return _VLBI_swig_resamplerd5x4_sptr_set_arg(self, *args)
RuntimeError: SyntaxError: Parsing Stopped at: $N, 5)

If you're familiar with RFNOC, can you please have a look at:

http://www.jive.nl/~boven/rfnoc-VLBI

It contains the source, and also a compiled bitfile for the X310 for
your convenience (but use at your own risk, of course).

Regards, Paul Boven.

[1] Very Long Baseline Interferometry

___
USRP-users mailing list
USRP-users@lists.ettus.com <mailto:USRP-users@lists.ettus.com>
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com



___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


[USRP-users] Passing arguments to an RFNOC block

2019-02-27 Thread Paul Boven via USRP-users

Hi everyone,

As part of the VLBI[1] backend that I'm making in RFNOC, my first step 
is to make a rational resampler. It takes the 100MS/s signal from a 
TwinRX, and reduces it to 80MS/s. This can be done with a 5:4 resampler. 
In order to make this work, I'm using the axi_rate_change block.


Although the block works in simulation, I keep running into problems 
with the GRC integration, in particular SWIG throwing run-time errors.


The problem seems to be in the way that the arguments (N, M, config) are 
passed around, but studying other blocks like the DDC block hasn't 
provided the clues for me to get past this hurdle.


The resampler itself does work, which I tested by having it emit zeroes 
instead of the 'deleted' samples, and using a 'keen 1 in N' in GRC itself.


At the moment, the block exits in VLBI_swig.py in set_arg:
return _VLBI_swig_resamplerd5x4_sptr_set_arg(self, *args)
RuntimeError: SyntaxError: Parsing Stopped at: $N, 5)

If you're familiar with RFNOC, can you please have a look at:

http://www.jive.nl/~boven/rfnoc-VLBI

It contains the source, and also a compiled bitfile for the X310 for 
your convenience (but use at your own risk, of course).


Regards, Paul Boven.

[1] Very Long Baseline Interferometry

___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


Re: [USRP-users] Can I use chained DDCs?

2018-12-09 Thread Paul Boven via USRP-users

Hi Jason,

I'm currently on the rfnoc-devel branch of uhd/host as well. And having 
the same problem: Changing frequency on the DDC or radio causes hangs. 
However, on 'master', the data format out of the rfnoc blocks didn't 
even get accepted by the flowchart.


Could you please provide the details on how you configured and compiled 
your uhd to support rfnoc on 'master' ?


Which versions of uhd, gr and gr-ettus are you using?

Regards, Paul Boven.

On 03/12/2018 21:12, Jason Matusiak via USRP-users wrote:

Brian,
It looks like switching from rfnoc-devel to the head of master cleaned 
up my issues (Once I realized a clock rate of 120MHz was no longer 
supported).  Not sure what was the problem, but I won't worry about it 
at this point.

I think you are right on the DDC, I will need to look into that more next.

- Original Message -
Subject: RE: Re: Re: [USRP-users] Can I use chained DDCs?
From: "Jason Matusiak" 
Date: 12/3/18 12:08 pm
To: "Brian Padalino" 
Cc: "USRP-users@lists.ettus.com" 

Brian,
No.  I am leaving it alone on startup.  I was running off of the
rfnoc_devel branch.  I just changed to master and am attempting to
rebuild with RFNOC enabled to see if something else has been
introduced to it.  I should try to roll back a version or two and
see what that does for me as well. Thanks!

- Original Message -
Subject: Re: Re: [USRP-users] Can I use chained DDCs?
From: "Brian Padalino" 
Date: 12/3/18 12:03 pm
To: "Jason Matusiak" 
Cc: "USRP-users@lists.ettus.com" 

Hey Jason,
On Mon, Dec 3, 2018 at 11:50 AM Jason Matusiak
mailto:ja...@gardettoengineering.com>> wrote:

Brian,
I am not sure what the issue is here.  I don't think it is
the chained DDC anymore as I can see the issue with the
single DDC using multiple different bitfiles.
I wasn't re-tuning the Fc anywhere, I was just dropping the
sample rate from 120MHz down to something I could handle. 
Right now I am not touching the CORDIC modifications at all.


Are you trying to change the samplerate at runtime after
starting the stream?  In my experience, ever since around the
time the the DDC moved from a CORDIC to using a DDS, dynamically
changing the samplerate at runtime after starting a stream is
broken and causes strange behavior.  In my experiences, it's
been timeouts.

What version of UHD are you running for your applications?

I think I settled on 3.13.0.1 release as my stable base, and I
have a few patches applied.
Brian


___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com



___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


Re: [USRP-users] Firmware images for X310-RFNOC?

2018-11-26 Thread Paul Boven via USRP-users

Hi Marcus, everyone,

On 25/11/2018 19:47, Marcus D. Leech via USRP-users wrote:

OK, just tried the attached flow-graph in the lab, using:

[mleech@lab ~]$ uhd_usrp_probe --args addr=192.168.10.2
[INFO] [UHD] linux; GNU C++ version 4.8.3 20140911 (Red Hat 4.8.3-7); 
Boost_105400; UHD_4.0.0.rfnoc-devel-702-geec24d7b


The above text suggested to try the rfnoc-devel branch instead of the 
master branch for uhd/host.  With that, I've gotten RFNOC to work, thanks!


Below some further details on what I managed to piece together for now, 
in case anyone wants to comment.


I'm using the default FPGA image for the X310, which has only the radio 
and the DDC/DUC blocks for RFNOC, as the images with more blocks are 
currently unavailable.


RFNOC receiving (with TwinRX) works, but often the frequency doesn't get 
set correctly on startup. Changing the frequency (e.g. via a QT range 
slider) regularly causes the command link from PC to USRP to die. 
Samples from USRP to PC keep flowing, that part is quite stable.


For the TwinRX, the data rate seems to be 100MS/s complex, so the RFNOC 
Radio block already takes care of converting the samples (real samples, 
second Nyquist zone on either I or Q ADC input) into complex values.


As a first test, I used the RFNOC Radio Block and DDC to make a tunable 
WBFM radio, using the 'CORDIC' input to the DDC block to select the 
station. This works very well now (apart from the issues noted above).


Build process:
Host: Ubuntu 18.04 LTS

1) UHD:
git clone http://github.com/EttusResearch/uhd
cd uhd/host
git checkout rfnoc-devel
mkdir build; cd build
cmake -DENABLE_RFNOC=ON -DCMAKE_INSTALL_PREFIX=/usr ..
make package
sudo dpkg -i uhd_4.0.0.rfnoc-devel-702-geec24d7b_Ubuntu-18.04-x86_64.deb

2) GNU Radio:
git clone --recursive http://github.com/gnuradio/gnuradio
cd gnuradio
git checkout maint-3.7
mkdir build; cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCPACK_DEBIAN_ARCHIVE_TYPE=gnutar ..
make package
sudo dpkg -i gnuradio_3.7.13.4_Ubuntu-18.04-x86_64.deb

3) GR-Ettus:
git clone http://github.com/EttusResearch/gr-ettus
cd gr-ettus
mkdir build; cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
make

gr-ettus doesn't have a 'make package' target in the Makefile, so I 
created a package by hand using "fakeroot DESTDIR=`pwd`/fakeroot make 
install" and then building a Debian package out of that.


Next steps: build an FPGA image with a few more interesting RFNOC blocks.

Regards, Paul Boven.

___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


Re: [USRP-users] Firmware images for X310-RFNOC?

2018-11-25 Thread Paul Boven via USRP-users

Hi again,

On 11/22/18 6:45 PM, Marcus D. Leech via USRP-users wrote:
Your radio block is set to a sample rate of 100e6, whereas the X310 uses 
a sample clock of 200e6.   This may be why things are getting

   stuffed up.


I've now tried 200 MHz for the radio block. Still getting the same error 
messages, and nothing in the FFT plot.


Regards, Paul Boven.

___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


Re: [USRP-users] Firmware images for X310-RFNOC?

2018-11-22 Thread Paul Boven via USRP-users

Hi,

On 22/11/2018 16:20, Marcus D. Leech via USRP-users wrote:

On 11/22/2018 09:26 AM, Paul Boven via USRP-users wrote:


A simple flowgraph (see attached image) using RFNOC:Radio, RFNOC:DDC 
and a QT GUI frequency, together with Device3, starts and runs but no 
data is produced. Instead, it generates a lot of error messages, 
"timeout on chan 0" and "ValueError: Bad CHDR or packet fragment".


Check your ethernet MTUs and the packet sizes setup in your device3 
block.  I had this issue the other day, and the MTU on my ethernet 
interface had been set larger than it could actually support, resulting in 
truncated-by-the-interface packets.


Thanks for the quick reply.

The MTU of the network doesn't seem to be the issue. I've tried on two 
different network cards on my PC (both Intel 1G cards).


The MTU of the Ethernet card is set to 9000, and this is known to work.
uhd_usrp_probe chooses a packet size of 8000 bytes. When running tcpdump 
at the same time, I can see that packets of 8000 bytes are being received.


It looks like it sends about 1 second of data in 8000 bytes packets from 
UDP port 49153 to port 33894, and then the remaining traffic is just 16 
byte packets being exchanged between PC and USRP.


Regards, Paul Boven.

___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com


[USRP-users] Firmware images for X310-RFNOC?

2018-11-22 Thread Paul Boven via USRP-users

Hi everyone,

After quite a bit of trial and error, I've managed to build a GNU Radio 
environment that includes RFNOC. My environment consists of:


uhd-3.14, gnuradio-3.7.13.4, gr-ettus (master).

uhd_usrp_probe shows that the X310 is detected, and has the expected 
RFNOC blocks on board (DmaFIFO_0, Radio_0, Radio_1, DDC_0/1, DUC_0/1).


The USRP in question is an X310 with a TwinRX board.

A simple flowgraph (see attached image) using RFNOC:Radio, RFNOC:DDC and 
a QT GUI frequency, together with Device3, starts and runs but no data 
is produced. Instead, it generates a lot of error messages, "timeout on 
chan 0" and "ValueError: Bad CHDR or packet fragment".


Is my expectation correct that such a simple flowgraph should work?

Is the fact that the TwinRX has two radios (one on I, one on Q) perhaps 
a problem here?


Am I missing something obvious still?

The way I built and installed the software is documented below, comments 
very much appreciated.


1) Remove anything gnuradio/uhd related.

2) Build UHD:
git clone https://github.com/EttusResearch/uhd
cd uhd/host
mkdir build; cd build
cmake -DENABLE_RFNOC=ON -DCMAKE_PREFIX=/usr ..
make package
sudo dpkg -i uhd_3.14.0.0-220-g97933b15_Ubuntu-18.04-x86_64.deb

3) Build GNU Radio:
git clone --recursive https://github.com/gnuradio/gnuradio
cd gnuradio
checkout maint-3.7
mkdir build; cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCPACK_DEBIAN_ARCHIVE_TYPE=gnutar ..
make package
sudo dpkg -i gnuradio_3.7.14.4_Ubuntu-18.04-x86_64.deb

4) Build gr-ettus:
git clone https://github.com/EttusResearch/gr-ettus
cd gr-ettus
mkdir build; cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
make
(manually created a package using PREFIX and fakeroot)
dpkg -i gr-ettus*.deb

The above results in a seemingly working gnuradio-companion which 
includes RFNOC blocks


Regards, Paul Boven.


___
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com