----------------------------------------------------------------------
Message: 1
Date: Tue, 16 May 2023 00:11:18 +0200
From: Marcus Müller <mmueller@gnuradio.org>
To: discuss-gnuradio@gnu.org, Martin Lefkowitz <lefko8@gmail.com>
Subject: Re: Resource issues when trying to record 2 FM broadcast
stations
Message-ID: <0942c7bf-222a-cc30-d428-5356c517c48b@gnuradio.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Hi Martin,
On 13.05.23 17:40, Martin Lefkowitz wrote:
I haven't spent a whole lot of time working with gnuradio.
Well, then: Welcome to the GNU Radio community!
I'm not a DSP engineer. I am
however a software engineer that has dealt with signals so not completely a
laymen, but I
am out of my comfort zone.
Let's rephrase this: Welcome to the GNU Radio community, the newly-found
extension of your
comfort zone ;)
I had successfully created this project about 4 years ago using Marcus Leech's
Stereo FM
Radio implementation and grafting it into the front design of this the
multiple station
receiver design. Described here
https://forums.radioreference.com/threads/multiple-fm-station-receiver.341340/#lg=_xfUid-2-1556650274&slide=0
Looks fine :) You could have also absorbed the 1/4-resampler into the freq
xlating FIR
filter (by setting the decimation to 4), but the only benefit of that would
have been
slightly reduced computational load.
For a bit of documentation on the Frequency XLating FIR Filter:
https://wiki.gnuradio.org/index.php?title=Frequency_Xlating_FIR_Filter (the top
right
spectrum diagram I think explains quite nicely what I mean with "let the
Xlating FIR
filter also do the decimation" :) )
I recorded 2 pirate radio stations at a 4 day music festival. Started the
recording on
Thursday. Stopped it on Sunday. The sample rate was 2.4M. I created an Heir
block that
had the appropriate parts of Marcus Leech's Stereo FM radio in it. and replaced
everything from the xlating FIR to the multiply const in the second block
figure above
with the heir block, and added some WXQT blocks to handle the gui for 2
stations like wav
sinks, file names, etc. It was successful, but one thing that did happen was I
needed to
go from a Acer 720 (celeron) with Gallium installation to an (older) I5 laptop.
I let that project sit for a couple of years. The first thing I did when I got
back to it
was upgrade everything. Big mistake... Nothing worked after that.
Well, WX GUI was indeed removed a couple of years ago, as we had nobody that
knew how to
fix its bugs anymore. But for your purposes, Qt GUI should offer a drop-in
replacement.
The rest of the blocks should be the same as in the GNU Radio 3.7 era, no?
I got grc 3.10 running
with radioconda. I swapped Marcus's implementation out for Zan's
fm_stereo_demod_clean
https://forums.radioreference.com/threads/multiple-fm-station-receiver.341340/#lg=_xfUid-2-1556650274&slide=0
http://zansprojects.blogspot.com/2019/05/stereo-fm-receiving-with-rtl-sdr-and.html
In this new implementation I needed to create a series of variables to handle
the design
issue of having the signal be a multiple of 48k for the audio sink to be the
correct
speed. In particular the decimations in the rational resampler.This worked,
but when I
changed the sample rate to widen the bandwidth to receive 2 stations further
apart on the
FM band than 1Mhz I ran into performance issues. Basically with my setup the
CPU load is
about 90% with a sample rate of 1.24 Mhz.
Could you really share your flow graph with us? This is a bit strange to
understand by
reading about modifications on a 3.7-era (so, obsolete) blog post of someone
else - I'd
much rather analyze your flow graph than someone else's :)
I was able to do this because of the great work done by the people mentioned
above, but
figuring out how to deal with the performance issues is kind of beyond the
disciplines I
am familiar with.
These sound likely to be caused by switching to that other flow graph and using
inelegantly related sampling rates or filter bandwidths, but I can really only
speculate
without seeing your flow graph :)
I am wondering if anybody has any suggestions on how to get
fm_stereo_demod_clean to have better performance. I did not see an updated
version of the
Marcus Leech design so I figured there was something blocking that update, but
maybe that
is incorrect.
Don't think so. All that might have happened is that Marcus (Leech, aka. the
Marcus the
Wiser) didn't have the time (or energy, or attention …) to port that.
Matter of fact, we have a – hopefully sensibly working – example in our wiki of
a
single-station stereo FM receiver. Should work out of the box, no need to
recreate Marcus
L's hier block to get stereo:
https://wiki.gnuradio.org/index.php?title=WBFM_Receive_PLL
Combine that with your original Freq' Xlating FIR approach, and it *should*
work :)
I am also wondering if I could get a more powerful laptop/NUC and make it
work with brute force by throwing money at the project. I would love to hear
any
suggestions from people with more grc and dsp experience, or which path I
should take now.
This should technically work on a slightly overprovisioned toaster
microcontroller, so I
don't think that'll be necessary :)
Let's have a look at your flow graph together :)
Best regards,
Marcus