Foundations of Amateur Radio Podcast By Onno (VK6FLAB) cover art

Foundations of Amateur Radio

Foundations of Amateur Radio

By: Onno (VK6FLAB)
Listen for free

Starting in the wonderful hobby of Amateur or HAM Radio can be daunting and challenging but can be very rewarding. Every week I look at a different aspect of the hobby, how you might fit in and get the very best from the 1000 hobbies that Amateur Radio represents. Note that this podcast started in 2011 as "What use is an F-call?".℗ & © 2015 - 2026 Onno Benschop Physics Science
Episodes
  • Bald Yak 18: Everything Everywhere All at Once?
    Mar 28 2026
    Foundations of Amateur Radio The other day I was playing around with RDS, or Radio Data System, it's a digital signal that's often embedded in a commercial broadcast FM transmission. Among other things it contains information about the station, its content, frequencies and potentially other useful information, such as traffic alerts. If you recall I've been working on 50 things to do with a Software Defined Radio and decoding RDS is one of those things. The decoding effort aside, I imagined a screen where you could see the RDS information, in real-time, as it was being transmitted by all the local FM broadcast stations. You'd see what music each station was playing, what their local clock thought the time was, how much they transmit other data and what they might do for emergencies, like say a Tropical Cyclone heading this way. It occurred to me that this would be an example of a fundamental difference between a traditional radio and a Software Defined Radio or SDR. Specifically, we're taught that you tune a radio to a frequency, it demodulates or decodes what's there and plays the sound, or digital information, or whatever is being transmitted, on that frequency. If you want to hear something else, you need to change frequency and the radio decodes that new frequency. If you have multiple channels to choose from, there are ways to automatically switch frequency, one after the other. One of my friends recently discovered an old scanner in a box and according to the specifications, it can scan 20 stations per second. If all 1,000 stations are programmed, it takes 50 seconds to scan them all. A lot can happen in that time. The traditional solution is having more radios. Ideally you'd have one for every frequency you care about. Cost aside, logistically this is not fun. Imagine having to power a thousand radios, or find the one where the volume isn't right, or even find space for them, or antennas. In the SDR world that's not quite how it works. Instead of tuning to one frequency, you essentially tune to a range of frequencies and then, using software, decode one or more of those frequencies, at the same time. Listening to multiple broadcast FM stations like that might not make a whole lot of sense, but what about decoding RDS, or listening to aviation frequencies, or local amateur radio repeaters, or multiple digital modes? While that might sound far fetched, a $50 RTL-SDR dongle can manage 2.5 MHz of bandwidth over USB, by comparison, my $1,000 Yaesu FT-857d can receive all of 200 kHz in Wideband FM mode, and only whilst tuned to the broadcast band frequencies. In normal AM or FM mode it's 10 kHz, so you'd need 250 of them to listen to the same frequency range. Again, just so we're clear, in analogue radio you need to change frequency to decode a different signal. In SDR you can simultaneously decode as many signals as resources permit. For example, I can make a simple GNU Radio flowgraph, a little program, that accepts a command line setting, in GNU Radio it's called a parameter block, and run it with a frequency I'm interested in. Then I can run another copy of the same program with a different frequency. Rinse and repeat and I have as many receivers as I need. While we're at it, you don't need to run the same program multiple times, you can run an FM decoder, a RTTY decoder, an AM decoder, all at the same time, as long as the frequencies you're looking at fit inside the bandwidth of the receiver you're playing with. Just so we're clear, this is one receiver, one antenna, one power supply, with as many decoders as resources allow. In other words, these two methods, analogue and SDR, are not the same. Am I glossing over things? Sure. With such a wide bandwidth comes susceptibility to interference and signal overload, also the RTL-SDR dongle doesn't transmit, although, in 2014 Ismo OH2FTG managed to change the centre frequency of his dongle 300 times per second, causing the on board oscillator to leak in a controlled manner, making a Frequency Shift Keyed or FSK transmission. Yes, I know, that's not quite up to the standard of a transmission coming from an 857d. You'll also need a computer, which you don't need to run an analogue radio, though truth be told, an analogue radio from the last couple of decades is pretty much a computer anyway. You can likely get away with a Raspberry Pi to process the data coming from an RTL-SDR dongle, so another $5, and yes, you'll need a monitor, keyboard, and a power supply. The point I'm making is that these two methods are not the same and in the evolving world of amateur radio, there's space for both. It also means that once you have this infrastructure, you can start experimenting with new radio technologies and approaches. Will it make my 857d and its siblings obsolete? Perhaps, but I doubt it. There's still plenty of valve radios going around, not to mention the spark gap transmitter at Grimeton in Sweden. In other words, this is growing the ...
    Show more Show less
    7 mins
  • Bald Yak 17: Adventures in Radio Data Systems
    Mar 21 2026
    Foundations of Amateur Radio

    While spending some quality time discovering what I don't know about GNU Radio, I explored the notion of attempting to at least understand a little more about how an FM signal works. Depending on your background, the letters FM mean different things. In amateur radio it's a way to encode information, generally audio, using something called frequency modulation. Outside the hobby, the letters point at commercial broadcast radio.

    While the two are related, they're not the same thing.

    In amateur radio use, FM is a single channel of mono-audio, however, in commercial broadcast radio, there's a whole lot more going on, interesting because it gives you ready-made access to a composite signal that's just complicated enough to be challenging without being so complex that you need to spend hours on understanding the thing.

    In essence, a commercial FM broadcast signal is multiple channels encoded in a specific and documented way. This is helpful, since you can compare the documentation against ready made examples and replicate the process for yourself.

    In case you're new here, I'm in the process of building a radio system, in software, using GNU Radio in a project called Bald Yak. Specifically, the Bald Yak project aims to create a modular, bidirectional and distributed signal processing and control system that leverages GNU Radio. It's called Bald Yak because by the time I'm done, the Yak is likely well and truly shaved.

    One of the easy things to forget when you're using GNU Radio Companion, is that the blocks you're connecting together on the screen into a flowgraph actually represent software, generated when you either build or run the flowgraph. This code is currently generated in either Python or C++, making me wonder, what does the code look like, and more specifically, what code would be needed to decode FM?

    It turns out that an old friend, the PySDR.org website has a whole chapter dedicated to this process. Chapter 18, the End-to-End Example, details how you can decode one of the channels embedded within a commercial FM broadcast, the RDS or Radio Data System signal.

    If you're not familiar, the PySDR.org website represents a whole book about software defined radio and python. It goes into as much or as little detail as you want, to explain how this whole software malarkey works, and takes you by the hand down the path of discovery.

    So, armed with a working example, I followed along the bouncing ball and made a working RDS decoder and I think, understood most of it. There's a few interesting wrinkles that I've contacted the author, Dr. Marc Lichtman, about and we'll see what comes of that.

    Here's the kicker.

    The author, who is also a senior member of the GNU Radio team, started with a GNU Radio flowgraph and reverse engineered what was happening to get to the point of the code that's available in PySDR.org Chapter 18. This is significant because it creates a relationship between the code I have in front of me and the code generated by GNU Radio, which means that when I start with a new flowgraph, not only do I know the steps required, I also know that the outcome is predetermined, as-in, I already know that there's a solution. Having professionally written software for over 40 years, I can tell you that this is not often the case.

    I realise that I can search the Internet for an RDS decoder flowgraph, but that's unlikely to get me to a better understanding of what GNU Radio is doing.

    Once I've clarified with the author, I'll add the code to my GitHub project, "Fifty Things you can do with a Software Defined Radio", specifically, "Receive road traffic information", since among other things, that's carried by RDS.

    As an aside, Rohde and Schwarz have a lovely YouTube video on the topic, "Understanding the Radio Data System", which is giving me a whole set of ideas about things we might attempt with amateur radio repeaters, but that's a story for another time.

    Meanwhile, have you considered what other signals exist on the RF spectrum that you might want to decode and how you'd go about this?

    I'm Onno VK6FLAB

    Show more Show less
    5 mins
  • Bald Yak 16: How do you decode FM?
    Mar 14 2026
    Foundations of Amateur Radio How do you make a hole? That's a pretty straightforward kind of question, and by the time this sentence is finished, there's going to be at least as many answers as people who considered it. I didn't supply any parameters to this hole, so answers could include shovels, collapsing space, fire, a drill, or any number of other interesting approaches. If I narrowed it down to, say, a hole in wood, there'd still be plenty of options. Specifying the type of wood, the diameter and other parameters would further narrow down the selection of methods. What if I asked you: "How do you decode FM?" You might wonder if there's more than one way and I can assure you, just like with making a hole, there's plenty of ways to go about achieving this, even if I limit this to software implementations only. I must confess, when I recently set out to test my Soapy SDR library notions using a GNU Radio flowgraph to listen to FM radio, I searched the documentation, found a beginners tutorial and used the information there to make my first proof of concept FM receiver. I put it on GitHub and went about my business. After finally managing to hear the decode effort and being less than impressed, I started trying to understand the tutorial flowgraph. When I started looking at what would be needed to decode stereo FM broadcast radio, I discovered that there were several tutorials, examples and videos with slightly, or significantly different solutions to the problem. That's on top of the over a dozen standard FM related blocks supplied within GNU Radio. I then set about trying to discover the canonical implementation of an FM receiver and came up short. Instead I discovered even more implementations of FM receivers, each subtly different. You should know that there's a difference between how your local hit radio station does FM and how an amateur radio repeater does FM, let alone the local CB radio channels, satellite telemetry, wireless microphones or even hearing aids, so within the implementation of an FM receiver, there's additional complexity, which explains to some extent the variety of FM related blocks within GNU Radio. I think ultimately it's safe to say that there's an unlimited supply of implementations of an FM receiver within GNU Radio. It led me to ask, what is the .. for want of a better word .. "right" way and what does that actually mean? In GNU Radio, you string together blocks that process a signal. If you're familiar with flowcharts, the process is very similar. Unlike flowcharts on a piece of paper, in GNU Radio, or should I say, GNU Radio Companion, the tool you use to actually design flowgraphs, the little blocks represent underlying software and their connections represent how data flows between these bits of software. In other words, each block represents a series of programming instructions that process data and pass it on. It means that the more blocks you have in your flowgraph, the more instructions are running to process data. The more instructions, the more computing resources required. This is significant because in a complex system like this, we're likely to be doing more than one thing at a time, so preserving resources is important, if only to ensure that there's time available to process the next sample. As a result, there's a difference between implementing an FM receiver with two blocks, or with ten blocks. You might conclude that two blocks is more efficient, but that might not be true. For example, two blocks processing 2,000 samples per second each, are processing 4,000 samples per second in total. A block that converts the 2,000 samples into 200 samples, followed by nine blocks processing 200 samples per second each, is processing 3,800 samples in total. All things being equal, the ten blocks together are handling less data per second, so overall it's potentially using less resources. I say potentially, because it might be that one of those blocks is using a massive calculation, consuming more resources than all the other blocks put together, ultimately, each block is software, so whatever it's doing is using resources. So. How would you go about choosing between two implementations or algorithms, which was the "better" one and how is "better" defined? My first pass at this, is to use standard testing files and using the algorithms under consideration to process them. Run the tests multiple times, keep a record of how long they take and then attempt to measure how much the original input signal differs from the processed output signal. At the moment I have no idea how you might compare signals, other than to invert one and combine them to see if they cancel each other out, which means they're the same, or not, which means that they're different. For my sins, in trying to think of a way to do this I realised that the way I implement this radio contraption needs to be able to deal with test files and potentially multiple different implementations of...
    Show more Show less
    7 mins
No reviews yet