There is a lot of buzz in the world of software defined radio, or SDR. White space this, cognitive radio that, but most of that is probably tucked away in some lab somewhere. The limelight has been stolen away from current commercial and experimental uses of the technology today.
What is software defined radio anyway? Traditionally, radios are frequency and application specific. They usually, but not all the time, have a very narrow frequency operating range, and can only do limited amounts of very specific things. For example, your cell phone can only send and receive cellular phone signal. The idea of turning it into a garage door opener with an application at the App Store is laughable. Your WiFi card cannot be told to start receiving TV signals in the UHF band, and your old FM stereo cannot be reprogrammed to start receiving HD digital radio.
However, with SDR, these things start to become big possibilities. Its not so much that there is a demand to do these strange things. There is demand for generic hardware that could be programmed by hackers, small businesses and large companies alike at little cost. Software is something that can be easily changed, hardware is not.
How the heck can you do all the stuff that coils of wire, tank circuits, crystals, and other radio paraphernalia have dominated for the last 100 years? Its actually quite simple.
Radio signals operate at various frequencies, and most of the action occurs around 500KHz-6GHz. A radio frequency is no different than a sound. We already know that we can take a microphone, plug it into a sound card (which converts analog signals to digital signals), and record something. We can even process it, auto-tune it, amplify it, and detect frequency ranges with software you have on your computer. We also have the ability to flip it around, and turn those digital signals to analog ones, and reproduce it using an amplifier and speaker. Audio frequencies are typically between 20Hz and 20KHz, so as long as we take a measurement at least double that, we can safely represent and reproduce the frequency of interest. Thats why CD quality audio operates at 44.1KHz — double the frequency. Some sound cards and media offer 96KHz and beyond. In the land of radiowaves, there isn’t too much going on in this realm, but you could actually connect your microphone jack to an antenna and amplifier and do SDR today.
But that sound card is only good for audio frequencies anyway, what if we took it a step further. What if we could find a really, really, really fast analog-to-digital (ADC) and digital-to-analog (DAC) converter that took samples of information millions of times a second? If we used a 2 million samples per second ADC, we could easily represent an AM radio station of 1000KHz (1MHz). If we had one that did 10 million samples per second, we could represent the time standard station on 5MHz and decode shortwave radio. All we’d need to do is sample twice the rate of the frequency, use some of that FFT software that isolates it to a certain band of frequencies, watch the signal move up and down (amplitude modulation) or side to side (frequency modulation), and we could even send an audio version of it out a speaker–like a real radio receiver.
SDR is a little bit more complicated than that, but it gives you a very good idea on what exactly is going on. We can even use mixers and frequency synthesizers to extend our frequency range of our ADC/DAC to any frequency we want. So now all the ADC/DAC sample rates represent is the size of band of frequencies we can capture at once.
After years of putting it off and keeping an eye on the SDR scene, in particular GNURadio, I decided to see what it was all about. I ordered a USRP 1 from Ettus Research, and a week later, I was the proud owner of a software radio with dual MIMO transceivers that operate between 700MHz-1000MHz and 1.5GHz to 2.0GHz (RFX1800/RFX900).
SDR is highly experimental and has a considerable price barrier that nobody but the most enthusiastic hobbyists would even dream to consider. Even the most simplest setups are well over $1000. However, for any radio hobbyist (in particular, amateur radio operators) or software developer who wants to venture into radio, this is nothing usual. A good amateur radio rig or repeater will cost you this amount or more. Eventually, SDR will become the cheapest form of radio, because the part count is incredibly low, and non-exotic functionality will cost much less. Think of the USRP as an evaluation kit of what SDR can provide, not exactly the production costs if you were to send off your application to the factory today.
SDR, by itself, has a very high learning curve, however, the GNURadio project as mostly corrected this. Infact, you barely need to know anything about radio at all. A newbie could inbox a USRP in the morning, perhaps read a few wikipedia articles about different modulations and radio basics in the afternoon, and have several working examples before dinner. This is mostly due to the fact that not only does GNURadio have great building blocks for developers, it also has a very easy to use set of python modules to get you going.
GNURadio, whether it be C++ or python, involves setting parameters of the components of your radio, telling it how to connect stuff together, and hitting go. To be the most useful, you may want to change characteristics or provide dynamic inputs and outputs as the application runs, but its not required for very basic demo apps.
For example, if you wanted to make an FM radio receiver, you would tell gnuradio what frequency you wanted to receive, and how much bandwidth. Since FM radio only deviates back and forth about 200KHz, 400KHz would probably be enough. Then you would tell it to connect that receiver to a FM demodulator. This decodes the movement in frequency to a movement in amplitude (what us humans can hear and understand). Then you would finally connect it to a speaker. Its only a couple lines of code, there are more details, but you could take an example, change a few pieces of code around, and really do some amazing stuff.
What am I going to do with this thing? Two things: 1) start seeing what i can contribute to the amateur radio community with software defined radio 2) explore OpenBTS, an open source GSM cell site.
Both have great applications for rural and underserved communities, both in the first world and third world in terms of cost. Both also have incredible emergency applications and would be easily configured, deployed, and reconfigured as other needs arise.
This will not be the last word from me in regards to Software Defined Radio. I am actually quite far along with both explorations, and will publish my results so you could also do the same.
One last thing I will point out is, as with any software defined radio experiments, its extremely important not to interfere or hinder existing users in the frequency bands you operate in. I also plan to cover this in detail to help you comply with your local regulations, but its by no means legal advice. SDR on the USRP is a very powerful tool, and care needs to be taken that its output is “clean” and that you do not exceed the very, very small power emissions permitted by FCC (and other) regulations. If you are a licensed amateur radio operator, with proper filtering, nothing more would probably need to be done for experimental radio. Also, if you are interested in operating in other bands, FCC experimental licenses and frequency coordination are not impossible to obtain. I will also provide examples of what others have done to keep things legal. There’s really no need for unexpected visits by angry license holders and enforcement agencies!