Foundations of Amateur Radio When you start playing with software defined radio, you're likely to begin your journey using something with a display that shows you a lovely waterfall, gives you a way to pick out a frequency, decode it and play it over your speakers all over the house. Likely your first effort involves a local FM radio station. These graphical tools come in many and varied forms available on pretty much anything with a display. Tools like SDR#, cuSDR, fldigi and WSJT-X. That can be immensely satisfying as an experience. Underneath the graphics is software that is essentially translating an antenna voltage to a sound, in much the same way as that happens in an analogue radio. There are the parts that get the signal, then they get translated and filtered, translated some more, decoded, and eventually you have sound coming from your speakers. During the week I caught up with a fellow amateur who pointed me at the work of Andras HA7ILM who for a number of years has been quietly beavering away making various tools in the SDR landscape. One of those tools has the innocuous name of "csdr", a command-line software defined radio digital signal processor. It started life on November 1st, 2014 and has had many updates and community changes since. This tool has no graphics, no user interface, nothing visible that you can toggle with a mouse and yet it's one of the coolest tools I've seen in a long time and from a learning perspective, it's everything you might hope for and then some. Before I explain how it works, I need to tell you about pipes. They're much like water pipes in your home, but in computing they're a tool that allow you to connect two programs together so you can exchange data between them. One of the ways that you can think of a computer is a tool that transforms one type of information into another. This transformation can be trivial, like say adding up numbers, or it can be complex, like filtering out unwanted information. The idea is that you take a stream of data and use a pipe to send it to a program that transforms it in some way, then use another pipe into another program and so on, until the original stream of numbers has become what you need them to be, creating a transformation pipeline with a string of programs that sequentially each do a little thing to the data. That stream of data could be numbers that represent the voltage of the signal at your antenna and the final output could be sound coming from your speaker. If you were to take that example, you could use one tool that knows how to measure voltage, pipe that to a tool that knows how to convert that into FM and pipe that to a tool that knows how to play audio on your speaker. Converting something to FM is, in and of itself, a series of steps. It involves taking the raw numbers, extracting the part of the samples that are the station you want to hear, decoding those and converting that into something that is ready to be played on your speakers. This process is fundamentally different from using a so-called monolithic tool that does everything behind the scenes. The person writing the software has decided what to do, how to do it, in what order and in what way. If you want to do something that the author hadn't thought of, like say listening to a new type of broadcast, you'll be waiting until they update the software. In another way, this is the difference between making a cake from raw ingredients and buying it up the road at the shops One final part of the puzzle. There's nothing preventing you from piping the output of your program to another copy of the same program. So, if you had a tool that knows how to do the maths behind filters, AM and FM decoding, translating Lower Side Band into Upper Side Band and vice-versa, band filtering, etc., you'd be able to set up individual steps that translate a signal, one step at a time, from raw antenna data into a sound you can hear. You would have all the building blocks for the fancy tools that you are used to. csdr is such a tool. For example, it knows how to set the gain of a signal, how to up and down sample, how to shift frequencies, how to decode them, it knows about RTTY, PSK, AM, FM and do about a hundred other things. So far I've mentioned decoding, but there's nothing stopping you from starting with plain text, piping that into csdr and converting that to a PSK31 audio signal and transmitting that audio on your radio. To make it even better, because it's so modular, you can look at the math behind what's going on and begin to understand what's happening behind the scenes. Of all the tools I've found in the past decade, I have to confess, this is the one that has stopped me in my tracks. Thank you to Randall VK6WR for introducing me to this tool and to Andras HA7ILM for writing it. I'm Onno VK6FLAB