Foundations of Amateur Radio
Over the past weeks, actually, probably more accurately years, I've been carrying around an idea. It's been bubbling away and I've been trying very hard to make it solidify into something that I could explain and then hopefully attack.
Today I woke up with a hunger to do some radio and ultimately tell you about it. To get to a point where my Aha! moment emerged, I need to provide some history.
Traditional radio activities involve variations on a radio plugged into an antenna with the operator talking into a microphone or torturing a Morse key. If you want to operate digital modes, you essentially have two choices. You can use a rare radio with in-built digital modes or, more commonly, connect a computer to the radio via an audio interface, which essentially replaces the operator with a computer.
This implies that the radio is physically connected to the computer and in the same room.
What if you don't want either?
There's another aspect to this.
Modern SDRs or software defined radios, tend to use the network to get information from the antenna to the user. The network can transport the radio signal, but also control signals, to change things like frequency and mode, and if the radio supports it, bands, antennas and other fun stuff like filters.
There are ways to control a traditional radio across the network with so-called CAT commands, or Computer Assisted Tuning. This same technology can be used to connect a logging tool, so it knows what frequency and mode to log when you make a contact.
What CAT control lacks is audio. Said differently, although some solutions exist to send Morse code, you cannot use CAT to listen to the radio, or speak into a microphone. This isn't an issue if the radio and you are in the same room, but if they're not, then things get tricky.
And as a final piece of background information, a traditional radio is based around audio, that is, the information going between you and the radio, or a computer and the radio, is limited to audio. This represents about 4 kHz of signal. In other words, if you're tuned to 28.500 MHz, then a traditional radio can "hear" the radio signal between 28.500 and 28.504 MHz, sufficient for a single audio signal, but even a simple digital radio, a $50 RTL-SDR using a USB cable, can handle 2.4 MHz, plenty to cover all of the 10m band between 28.0 and 29.7 MHz with room to spare.
I've been looking for something, anything, that brings these two vastly different worlds together for a number of reasons. I've spoken previously about some of these. For example, I do not want to physically connect my traditional radio, a Yaesu FT-857d, to my computer because I do not want to have the potential of stray RF coming into my computer.
I'd also love to be able to run the same decoding and control tools for various radios, the Pluto SDR, several RTL-SDR dongles, my 857 and other radios as they come into my shack from time-to-time.
Then there's the signal processing side of things. I'd love to be able to learn how to decode Morse and eventually other modes using a computer. I also want to be able to use a voice-keyer during a contest so the whole house doesn't ring from the sound of me calling CQ Contest, or CQ DX for hours on end.
I've been making inroads into this. I managed to get rigctld to work across the network using Docker containers at both ends. I attempted to get audio working, but that has so far been a dismal failure, despite assistance on several fronts.
This morning I stumbled on the idea of using "GNU Radio" for both. I even came across some examples where two so-called "flow-graphs" can talk to each other across the network. Now at this point you're either going to be nodding your head, or you're going to be asking yourself what gibberish I just spouted.
If you're already nodding your head, stand-by, if not, GNU Radio is a software toolkit that provides signal processing blocks that you can link together to create simple or sophisticated systems to manipulate signals, like those that come from radios, or radio telescopes, or mobile phone base stations, radar, ADS-B, or whatever else you can imagine. It's widely used in academia, government, industry, research, and of course by us, hobbyists.
A collection of blocks and links is called a flow-graph and in essence it's a program or if you like, an App, that you can run. It comes with a tonne of examples and tutorials, including one where one flow-graph can manipulate another, either on the same computer, or somewhere on the Internet.
What this means is that you could build a flow-graph that can talk to a Yaesu FT-857d and one that can talk to a Pluto SDR, or an RTL-SDR, or any other radio, and use that to talk to a flow-graph that understands how to deal with audio, CAT and anything else you might want to.
It means that for the first time in years I can at least imagine a unified world where my 857 isn't a boat anchor when compared to my Pluto SDR. Of course they don't have the same functionality, but at least I can handle their signals in the same way.
Unlike the path I was previously on, where I was attempting to cobble together several tools whilst attempting to avoid a headache from banging my head against the wall, today I can use one toolkit to build Apps that run on pretty much anything with a CPU and see the fruits of my labour.
I'm working on a proof of concept and when I've got it to show-and-tell, I'll put it up on my GitHub page, cunningly named after me, VK6FLAB.
A final observation. Amateur radio means different things to different people at different times. For me, today, it's about software and GNU Radio. Tomorrow it is just as likely to be about something else. What is possible depends entirely on your imagination, so get playing, either on-air, or on-line, whatever gets you smiling and remember, the impossible happens immediately, miracles take a little longer.