discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Stop making unneeded improvements


From: Johannes Demel
Subject: Re: Stop making unneeded improvements
Date: Tue, 5 Jan 2021 15:24:07 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0

Hi Glen,

I fully understand your frustration to make things work long term and constant breakage.

There are, however, reasons why breaking changes are unavoidable. Some examples are:
1. GRC used Cheetah with XML for block definitions BUT:
Cheetah got unmaintained for years. Cheetah is only available for Python2. Python2 support ran out. Instead of relying on an unmaintained project, GRC switched to Mako which uses YAML instead.

2. With Ubuntu 20.04, it would probably be impossible to do a "simple" install of GR 3.7 because it requires Python2 and 20.04 basically dumped Python2 in favor of Python3. Thus, it was important to move to a newer Python version. You might be able to install 3.7 on that system BUT you might very well break it for other applications. Ubuntu 20.04 is actually a very good reason to move to a newer GR version because it cuts off a lot of dependencies GR 3.7 has. e.g. Python2, Qt4, etc. That also exemplifies why GNU Radio must evolve because the ecosystem around it evolves as well.

3. There has been a lot of discussion if and how SWIG might be replaced by a different system. SWIG seemed like a good solution when it was introduced. But it turned out to be extremely frustrating whenever there are problems to fix.

4. Deprecating blocks seems like an annoying thing to do as well. Unfortunately, sometimes things that seemed like a good idea turn out to be a dead end. In this case, we all like a better alternative and some time to move in case we must.

I know that a lot of package maintainers do a fantastic job to make GR available for their respective systems. I hope that helps to get the installation process going. I'd like to refer to Geof Nieboers recent email where he explains all the difficulties that come up with old software.

Of course, developers tend to be eager to adopt new technology and learn how to use it. Just like Radio astronomers want to discover and learn about new signals. Personally, I think Marcus is doing a fantastic job and balancing things between long term usability and progressive changes. Also, you'd be very welcome to join discussions about the future of GNU Radio and make sure it is as good as possible for you too.

Cheers
Johannes

On 23.12.20 02:21, Glen Langston wrote:
Hello GNuradio Superheros,

I have to say, after 5 years with gnu radio, I’m either tool old or
something has to change.

I’ve been trying to produce some tools for High School teacher to do radio 
astronomy.
and for that gnuradio 3.7 was perfectly fine.  However some people are 
continuing
to make “improvements” that break everything.   I used to really like gnuradio.

I like the SDRPlay device, but it can not be used in gnuradio 3.8.  According 
to the web.
But the web indicates it might be usable in 3.9
So I installed 3.9 only to find that swig has been replace by pybind.  This 
breaks all my
existing C++ modules.   The modules worked fine, but if using ubuntu 20.40 the 
students can not
easily install gnuradio 3.7.  The pybind instructions are puzzling.  gr-modtool 
all the
modules copy something or other.   This is for no good reason that I’m aware of.
Either make the equivalent of pythons “2to3” or do not make the gnuradio 
fundamental changes.

Stop making useless changes that break all code!

We do NOT need these changes.  The advice on the web, after I’ve spent 2 days 
building 3.9
on a Raspberry pi is use 3.8.  This is frustrating.

The documentation is falling apart because of all these variants.

It is good to make changes that ADD tool capabilities.  It is NOT good to make 
changes that
make small improvements and break such large fractions of the code.

Sorry for the Rant.

Best regards Glen






On Dec 22, 2020, at 3:43 PM, Adam Gorski <Adam.Gorski@vt-arc.org> wrote:

Marcus,

Thank you for the detailed response! This enriches my understanding of the 
demod process as well as the knobs involved; looks like I'll have to go back to 
the drawing board to implement something similar using non-deprecated blocks.

Thanks,

Adam Gorski
Virginia Tech Applied Research Corporation (VT-ARC)
Lead Communications Engineer
410-818-3188

-----Original Message-----
From: Discuss-gnuradio 
<discuss-gnuradio-bounces+adam.gorski=vt-arc.org@gnu.org> On Behalf Of Marcus 
Müller
Sent: Tuesday, December 22, 2020 8:11 AM
To: discuss-gnuradio@gnu.org
Subject: Re: Setting DPSK Demod Block Parameters

Hi Adam,

I'm very sorry, you **really** really shouldn't be using that block (and that's 
the reason it's deprecated): it has bugs that just lose data. So, it's not 
really all that useful if I spend time reading old GNU Radio's source code to 
figure out what /exactly/ you want: You'll have to use a different block, 
sorry. Can't offer you to fix that block, we've tried and decided against it.

Since you'll need to know the answers to these even if you implement this 
differently, let me quickly answer in-text:

On 22/12/2020 02.13, Adam Gorski wrote:
  * Excess bandwidth: I've read that in general the more excess
    bandwidth supplied the better you can expect your synchronization
    algorithm to perform. This is [0,1], and when I set it to 1 it's
    noise resilience appreciably increases.

That's the parameter of the pulse shaping; it defines the roll-off factor of 
the RRC:

https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FRaised-cosine_filter%23Roll-off_factor&amp;data=04%7C01%7Cadam.gorski%40vt-arc.org%7Ce1e6e318da38469ebcf508d8a67b3b24%7C2440d112656a4c20b3b18fea5501bc48%7C0%7C0%7C637442395509539324%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=vCJKutbjZvguhVlZWh51W3Ovmv8EmurtuTiYlUDmfIw%3D&amp;reserved=0

  * FLL Bandwidth (assuming this is the same as filter lock-in
    bandwidth): This and the two subsequent values default to 6.28/100.
    I believe the higher this bandwidth is the faster the phase locked
    loop can adjust the output of the frequency. This leads me to
    believe I want this as high as possible, however I don't know where
    6.28 and 100 come from.

As in any control loop: When making the feedback loop's bandwidth large you 
gain speed, but you lose stability and resilience against noise.
In this case, that means your frequency correction will jump around.
You'll really want to keep this small.

6.28/100 means "we do 2 pi in 100 samples", i.e. this means a loop bandwidth of 1/100. 
This is a large value for a "locked in" loop!

  * Phase Loop Bandwidth: I know that lower values lead to reduced
    levels of phase noise and refence spurs at the expense of longer
    lock times and less phase margin.

Exactly!

    I'm assuming I want the least
    phase noise possible, however I don't know where 6.28 and 100 come from.

See above.

  * Timing Bandwidth: A dsp exchange question mentions that optimum loop
    bandwidth is usually somewhere between R/100 and R/20, where R is
    the symbol clock rate being recovered. My symbol rate is 2 due to it
    being BPSK,

hm, not sure what symbol rate and constellation would have to do with another - 
symbol rate is the number of symbols you send per second.

    is this the same as symbol clock rate?

Yes.

    Where do the 100
    or 20 denominators come from?

Largely: trial and error. The idea is that you usually need to average quite 
some symbols' timing error estimates to get a low-variance estimate of the 
actual error with less influence of the data on it; much lower than 20 won't 
work, because you don't get sufficiently equal numbers of different symbol 
transitions.
Larger than 100 becomes problematic as you might be too slow.

Should this value mirror the values of
    FLL and Phase Loop bandwidths?

Kind of, yes! If your timing drifts, that probably means that your whole system 
is slightly off in frequency - making the same linear degradation phenomenon 
happen to the phase (if we ignore the existence of the FLL).

The phase might, however, be also shifting due to channel influences, so you'd 
typically would want your phase loop to be slightly more agile than your timing 
loop, but these are, say, tunable screws for a fine adjustment. Keeping the 
factor of 2 pi in the PLL and the relative bandwidth here roughly equal does 
sound like an excellent starting point.

My end goal is being able to identify the Mode S message preambles
within the demodulated bitstream. Any help is appreciated, thank you!

This sounds very cool!

Best regards,
Marcus





reply via email to

[Prev in Thread] Current Thread [Next in Thread]