Yes, I’ve been absent on the scene for a number of months, and I must apologize. Let me help make that up to you with a really amazing project that I started experimenting with.
Some of you hams out there may have already started to experiment with software defined radio (SDR). This is where much of the demodulation and filtering is performed with mathematical computation such as Fast Fourier Transforms using a vector based processor – like that of your soundcard. Many have built kits, or purchased the more expensive FlexRadio systems which comes with the amazing PowerSDR software. Well, a string of events came together for me that allowed me to do something really cool – build my own SDR system with open-source software and a $35 USB satellite receiver dongle. Here’s how that came about.
The Fun Cube, and the enterprising Italian!
At some point two years ago, I stumbled across the FunCube. A gentleman in Germany was using this interesting USB dongle with an RF input to hook into a VHF antenna, and this ham was picking up images using weather satellites. It was pretty cool! The FunCube has this cool software that you could use to tune the various stages and tweak settings. Our club was looking for ways to improve reception of satellite signals for future Field Day setups and this looked like a neat device to do that with. I posted the Youtube video link to our Yahoo user group, and before I knew it, one of our club members went out and bought it! It’s a pricey little device, but there is a company behind it and the tuning software is both very cool, and very useful.
That purchased inspired another member of our club to go hunting for a cheaper alternative. Before long, this enterprising Italian found a European USB dongle used for satellite reception that was hacked to do all sorts of neat things. This dongle used the Realtek R2332 receiver chip that had an amazing reception range starting from 54 MHz to as high as 2GHz! What’s even more incredible, was that this chip could be programmed to receive AM, FM, SSB, DSB, VSB and more! Even better still, was that this dongle was capable of send I and Q signals – a common way to stream radio for processing. Best of all, the dongle was $35! Armed with this cheap and capable dongle, our enterprising Italian handed me this wonderdongle and asked if I could get it working and see if I could get it running on Linux. I accepted the challenge, the dongle, and the spare laptop handed to me.
A tortured path
I went to work, first wanting to do a simple test of the dongle, to insure that the device worked, I came across the OSMO driver for the Realtek device, iinstalled it on Ubuntu, but I couldn’t get some decent results. The dongle didn’t seem to respond to the drivers that I installed. After some fruitless searching for answers, I decided to try the device on a Windows setup as some folks had the dongle working on Windows SDR. I picked a quiet evening and after about an hour, I had the dongle receiving broadcast FM. It wasn’t that good, but I could make out the station. At least, I knew the dongle worked. I put the dongle down and decided to look at a Linux setup at a later time.
Wisdom Of The Crowd
A few months ago, at a Homebrew meeting – one of our longtime members had mentioned a neat trip he had taken to Arizona, and his visit to TAPR. He mentioned a very powerful open source SDR solution called GNURadio. He had said that the folks at TAPR were doing some very advanced work with it, and that it was something that the club may want to look into. I heard of GNURadio before, but I could never get my head around what it was about. I decided to take another look, again looking at a Youtube video of GNURadio being used, and I was just floored. GNURadio is indeed very powerful. It is a programming framework that allowed you to build your own custom SDR solutions. GNURadio is built on Python with some C/C++ blended in for the for the heavy lifting. Recently, GNURadio added gnuradio-companion, a drag and drop GUI that allowed you to bring in blocks of functionality and string them together to build a radio system. If you knew how a radio system worked at a functional block level, you could use GNURadio to build whatever you wanted. There are blocks for signal sources and sinks. There are blocks for FM modulation/demodulation, AM modulation/demodulation, a phased-locked loop, a waterfall display, fast-fourier transform, and many more! It suddenly dawned on me that a functional source block could exist for the dongle handed to me! A quick search on Google verified that this was indeed the case! I decided to take the GNURadio plunge.
A long build
I had my own Ubuntu desktop that was relatively up-to-date, so I decided to install GNU-Radio on it first. I downloaded the install script from the GNURadio project and let it work its magic. The script ran for hours! It downloaded package after package, library after library and steadily chewed away at a massive series of compiles. I had to leave the computer running overnight. When I work up next day and check on the computer, the installation had finally completed, and without any errors! I had to get on with my day and decided that I would continue on in the evening.
I got back to my GNURadio install and managed to launch gnuradio-companion. Ok great! Now what? I figured that I should search and download an existing GNURadio block diagram for a FM receiver to be used with the dongle. I found one, opened it in GNURadio, but I got a bunch of errors and I couldn’t tell of the dongle has the proper driver. So, I decided to try out some very basic things to get my head around GNURadio.
The first thing I wanted to do was figure would the sink/source bit and how it came together. I came across a dial-tone generator that consisted of a very simple series of blocks. I managed to get the dial tone working on my computer and thus know what settings I needed on the sink block for the sound card. With that done, I decided to revisit the FM demod project and take a closer look. There where a number of elements that I did not recognize, so I decided to build my own FM demodulator with the least number of blocks necessary. I came across a single block – Wide Band FM Demodulation. I took that block and strung it to my soundcard sink block. From there, I decided to simply add the OSMO source that represented the USB dongle and string that to the WBFM demod block. So far, no errors. I went ahead and started the project. Static! I added a FFT view of my simple block, and found that I was indeed getting a peak at the expected carrier frequency. I went back to the larger FM demod project and gleaned the settings for audio decimation and gain. After making the adjustments, I ran the project again, and this time I could hear a human voice! I was really excited now, so I started to systematically adjusting gain and decimation settings till finally I got a nice, clear signal of the local classical music station! Triumph!
I was really proud and excited that I got the dongle working with great sound coming out of my GNURadio setup! I decided to press ahead with some of the design criteria that our enterprising Italian asked for. In about an hour, I added GUI elements such as radio buttons to represent local FM stations, and a waterfall to see the frequency distribution.
Sharing the Excitement
With a GNURadio setup working, I had to share my results with the club. I grabbed my HD camcorder and recorder a short intro to GNURadio and the system block that I built up. I uploaded the video to Youtube and posted the link to our Homebrew usergroup. The guys loved it! Within short order, another member had purchased two dongles of his own, and got his GNURadio setup running. A second member was in the process of getting his GNURadio setup running as well. The following month, I presented the same FM project live to the Homebrew group on the laptop and dongle that our enterprising Italian had handed me. The equipment was handed back to it’s rightful onwer.
Just the Beginning
It turns out that our enterprising Italian was not done with me just quite yet. He ran into some issues right away, and he also wanted more features added. Before I knew it, the dongle and laptop were back in my hands that night! No matter. Accepting the challenge the first time was a great experience. It opened my eyes to a great project, pushed me to learn more, and gave me an opportunity to give back to the guys who gave me so much! So, my little SDR excursion is turning out to be a long and winding road, one I intend to share here and with others. I’ve always liked going on trips. 🙂