Can someone explain to a radio layperson how come there are plenty of cheap, tiny radios if DSP is computationally intensive.
1. GRC is really just a python front-end. You can see that by generating the .py script for any flow
2. sample mismatch
Note about the sample mismatch... "man rtl_fm defaults to 24Ksps" , whereas the flowgraph for retrieving all the sideband data is set to 2.4Msps. The Gnuradio flow is crunching 100x the data as rtl_fm does.Now, if detection of each pilot tone is done across 2.4MHz of the total sample on the rtl-sdr, then you could retrieve all the stations in view. However, this is centering on a single channel (106.7MHz), and therefore effectively 'wasting' all the extra retrieved IQ data.
Tl;dr. GRC isn't inherently CPU intensive - chewing through 100x the data IS computationally expensive.
Getting the high frequency sidebands takes more than 24k samples/sec.
The data flow is 2.4Msps the whole way through, even with decimation filters. It's one of the inherent issues with using Python in this way.
Here's the relevant section of code.
def main(top_block_cls=top_block, options=None):
tb = top_block_cls()
tb.Start(True)
tb.Wait()
if __name__ == '__main__': main()
Note: Each connection has its own sample rate and type, which is implicit in the graph.The other thing is flexibility. If you don't need to change your demodulator, you can do all your digital signal processing on a purpose-built ASIC, which brings the cost way down. Radio demodulation and decoding typically falls in the "embarassingly parallel" category, so it's an excellent candidate for efficient implementation on an ASIC or FPGA.
If you want to handle a signal in the analog domain, it doesn't take much in terms of electronics. AM radio can be received using a crystal radio, 100+ year old technology, if the signal is strong enough. You need 6 parts, antenna, ground lead, coil, capacitor, diode, headphones.
To receive FM mono, you could use a diode radio, tuning off to the side of the carrier.
To receive FM stereo, you need a fair bit of electronics, including a phase locked loop.
Receiving FM stereo with RDS, etc. is a quite challenging thing to do in terms of signal processing. It is the only time my laptop really just can't keep up in terms of all the experimenting with Gnu Radio. It has the combination of high complexity, and high bandwidth that multiply out to a large compute load.
That is why the warning was included.
--- And now, for more info than you asked ---
I've had an SDR dongle for years, and got back into it when the plague hit. I've received AM, FM, Single Sideband, all are fairly narrow bandwidth, so I have plenty of compute power to spare for making complex graphs.
One of the "radios" I've built can receive all 5 NOAA weather radio channels at the same time.
Another receives the local VOR (VHF Omni Range) station, and plots the direction to the transmitter.
I can record an arbitrary 2 Mhz wide swath of bandwidth to disk (SSD, actually) in real time until I run out of disk space, and then post-process it later in any manner of my choosing.
GNU radio is free software, and so much fun to play with.
If you're a reddit user, I recommend checking out
https://www.reddit.com/r/GNURadio/ https://www.reddit.com/r/RTLSDR/
You can listen to SDR on the net at http://www.websdr.org/
If there's one very strong station near you, you just need an antenna wire, ground, diode, and high-Z headphones. You'll hear the station.
https://en.wikipedia.org/wiki/Foxhole_radio#Designs_and_oper...
Urban legend has it that you can even hear them via metal fillings in your teeth.
https://www.bradfordfamilydentist.ca/lucille-ball-heard-spie...