Updates and updates and updates

This blog has been rather silent lately, but that's not because there's not enough to talk about in the GNU Radio world. In fact, there's simply been too much! We've been too busy with events, adding new features, improving old features, and adding new website info that I keep forgetting to update here.

First, you can see for yourself the things that have been going on with the GNU Radio Project at the Events page. We just had hackfest at TU Delft that went quite well followed by another successful SDR Dev Room at FOSDEM. A Couple of the videos for that event are already online.

Meanwhile, coming up, we have:

And fred harris and I are teaching another SDR class with the UCLA Extension program.

We have also announced our plans for the 3.7.7 release of GNU Radio, which will now include VOLK as a separate library.

And the GNU Radio community has been working hard on improving our websites. We are near to a release of our new CGRAN website, which now ties in nicely with PyBOMBS and will help us keep up-to-date with everything better. And we are working on a new front page for gnuradio.org. You know how you've hated being dumped into that Redmine wiki page? Well, that will still hang around as the developer's portal, but we want our main page to be more user friendly and to address the GNU Radio project as a whole, including GRCon and other events and where to find users and use cases of GNU Radio.

Along with all of this, we've been working on a number of features. I'll spend more time on each of these later, but wanted to get the word out there.

  • Support for GNU Radio applications on Android. I'm calling this an alpha release since there's still lots to do to make things work smoothly here.
  • Reviving ControlPort functionality by using the Apache Thrift project. We're close to having this merged into master, but the branch is up on my github page.
  • Providing improved packet-based and burst digital signals. Again, a work-in-progress with the branch up on my github page.
  • Adding sample rate and timing info on a per-item basis in a flowgraph. This will allow a block to ask for the exact time stamp of any item, and it provides a global understanding of the sample rate of each block. The code on my public branch works, but I have a better idea how to handle things when sample rates change during runtime.
  • Improving our QA testing and continuous integration services. I've been rolling out a Jenkins server in my office (for now) that manages a handful of different nodes for different purposes. I have a box with the minimum dependencies we require for GNU Radio to make sure we're not moving past them as well as testing on various other things like OS X and 64/32-bit installs. And I even have a system testing our embedded SDK cross-compiler with on-board testing of the QA to see what breaks there. This will help ease my mind of missing something or overlooking some problems. I'll get weekly reports but can also kick off these tests whenever we need to get a state of the project.

think that wraps up the main points of the project that we're working on. I'll update again with details of some of these projects when they've rolled out more fully, especially on the Android, ControlPort, the website, and GRCon items.

Release of 3.7.4

Well, I mentioned it here a few weeks ago and last week we did it. GNU Radio version 3.7.4 is now out and about. We're really happy with the release for a number of reasons. If you take a look at the release notes, you can see not only a lot of new features we've added on, but also the huge number of contributors. So not only are we feeling really good about the project itself, we have a great community of users that are doing really neat things and helping us improve our code. So a huge hand and big thanks to everyone!

I think that the release notes give you the basic idea of what's going on in this version, including ZeroMQ blocks for improved connections between networked flowgraphs over the UDP or TCP sources/sink, better QTGUI handling, and some nice improvements to the GRC interface. Also, as I mentioned in my last post, we now have our new FEC API concept included in gr-fec. Oh, and on that last note, we're very close to having some of the LDPC work done during last summer's GSoC integrated with the FEC API so we can all start to use it in our flowgraphs!

The good work is never done, though. We still have so much we can and want to do in this project, and so we've already started laying out some ideas and plans for release 3.7.5. There's some really fun work going on in GRC that I think everyone's going to love, and we're going to be one step closer to defaulting everything to QTGUI (don't worry! WXGUI will have a long lifetime as we migrate over!). We haven't made the full decision, yet, whether to switch the GRC defaults to QTGUI in this next release of wait until 3.7.6. I think we'll make that decision about midway through this release cycle to make sure we have enough time at get the development branch settled on that before the release.

Now, no guarantees, but I'm hoping we can get 3.7.5 out in time for GRCon14. That's a bit shorter than our normal time period between versions, but then again, we took a bit of extra time before 3.7.4. I think that it'd be nice going into the conference with a brand new version, plus a lot of features like some of the QTGUI and GRC updates are already done. We'll see what things look like by the end of August if it really makes sense to get 3.7.5 out the door by the conference.

Finally, I've said it elsewhere, and probably on other posts on this blog, but just a quick mention of 3.8. We have started collecting some ideas on what we're looking for with 3.8, but we haven't made any substantial efforts on it, yet. We're going to stick with 3.7 for a while longer because we feel like we're able to get a lot of work done with this API version without having to move on. In 3.8 we plan on updating our dependency list so we can be a little more free with features from our dependency libraries, and it'll help us fix a few holes we have in the runtime API that's causing some bugs that we've been tracking. But there's nothing really pushing us to a new API, yet, unlike our previous few API releases where we had some big changes. Instead, all of our big changes are all coming in our "minor" releases. But the only thing minor about it is our version naming scheme!

Update and 3.7.4

It's been a while since I've provided an update. Lots of travel, both work and otherwise, has kept me from letting everyone know what's been going on in GNU Radio. So let me see if I can start to fix that.

I think that our most interesting and fun development was the success of the ISEE-3 reboot team, including our own Balint Seeber (ok, so he's technically with Ettus, but for all of his work with GNU Radio, I'll claim him; at least partially) and John Malsbury. This was an incredibly cool and successful project, and Balint, John, and the rest of the reboot team have done and continue to do an amazing job. I'm not going to try and poorly rehash the work here. But there's been plenty of articles written on the effort and the links provided above here will give you a much better review of what happened and how.

In other news, we're close to releasing GNU Radio 3.7.4. I was really happy with our 3.7.3 release a few months ago, and this next release continues to strengthen the project. We have a lot more support and have debugged a few issues with the message passing infrastructure. I see the use of the message passing system as a growing trend in GNU Radio, especially for control and updating parameters of blocks.

Another development is a massive update and improvement to gr-atsc. While the original work here was great, it was based on GNU Radio ideas and capabilities from probably 10 years ago or so. Andrew Davis and Johnathan Corgan have done a wonderful job bringing this up to date and improving its speed and stability. This is part of a trend that we're working on (hopefully in the next version release) for more support of other digital TV standards, both transmitter and receiver code. Keep an eye out for gr-dtv in the near future.

A huge part of my work recently has been in the integration, development, documentation, and building examples for our new FEC API that is now a part of gr-fec. Historically, GNU Radio hasn't done a very good job with managing or allowing use of forward error correction (FEC) techniques. It's a difficult problem to solve to allow us to easily integrate different types of FECs in transmitters and receivers, either for streaming or packet-based communication links. Each FEC has different properties and conditions for use in the different types of comms links, and they can have different input/output data types that they are built to work with. The new FEC API that's been introduced allows us to handle these situations more seamlessly within a GNU Radio flowgraph.

The new gr-fec includes FEC encoders and decoders for a convolutional code (K=7, Rate=1/2, polynomials=[79, 109]) that has been highly optimized with SIMD (through VOLK), a repetition code that simply repeats each bit N times, and a dummy code that actually does no coding but provides a simple mechanism to use and study the API. We are also providing different blocks, called “deployments” in the FEC API, that allow us to make use of these encoders/decoders in streaming, tagged stream, and PDU message-passing flowgraphs. I was able to use the convolutional code FEC encoder and decoder in the gr-mac project for full network communications between multiple computers. This work can be found in the “fec_gmsk” branch of my fork of gr-mac.

The GNU Radio manual covers the API and deployments in a fair amount of depth. Obviously, you can always build the docs yourself with GNU Radio, but the main manual page on gnuradio.org will be updated to include this when 3.7.4 is released. Likewise, there are examples for the use of the codes and deployments that are distributed and installed with GNU Radio.

So that's just a brief review of what we've been up to the past few months. There are plenty of little fixes, tweaks, and additions that we've been making to the code base in this time that I've left out. But I'm really pleased with the progress and rate of progress we've been making lately. Lots of new, good stuff to help us fill a few gaps in capabilities we've had.

Release 3.7.3 and the WSR Hackfest

In case you missed the announcement, we've released version 3.7.3 of GNU Radio!

We're really pretty excited about this release. If you look at the news announcement or our changelog, you can see that we had many contributors to this release. It's also about a month overdue from our normal (though unspecified) timeline. But the result is something that we are really happy with.

One thing that strikes me with all of the contributions on this one is the amount people are really using GNU Radio for interesting stuff. They are testing all sorts of use cases, corner cases, and types of cases we don't yet have names for. Hard to find all of those issues without that kind of testing and use. So I feel good about the state of where we are with this version.

And then came the Workshop on Software Radio (WSR) in Karlsruhe. I presented two papers. The first was from Tim O'Shea and myself on our work on gr-benchmark and stats.gnuradio.org, and the second was on using our polyphase filterbank blocks in GNU Radio.

Following WSR, however, was our first European GNU Radio Hackfest. It was two and a half days and went brilliantly. Lots of fun, lots of good discussion, and lots of code written (and rewritten). There were a number of issues posted and pull requests made for new features or minor issues. In a way, it's a shame that some of these didn't make it into our 3.7.3 release, but we can't just keep waiting, so these will all make it into 3.7.4. I think we're just seeing a lot of interest and energy with the project and so we have to mark some time to get the releases out when we can.

We've logged our work from the hackfest as we always do. And I believe I have taken care of all issues and pull requests, so you'll find all the new (working and available stuff) already in the GNU Radio master branch.

Specifically, it was important to wrap up the loose ends of that hackfest as quickly as possible because we're heading right into our next hackfest at Ettus Research next week in California! So I expect more great stuff to come soon.



Major Milestone in v3.7 Progress

Earlier this week, we finished converting all of the main blocks over to the new 3.7 style and top-level components. We still haven't fully addressed gr-atsc and gr-shd, but I'm holding off on those two right now on purpose.

The main win here is that you will only see minor changes in which modules you pull blocks in from. Any changes now are bug fixes, but they will be minor and easily corrected. So you can now rebuild your Python and GRC flowgraphs around the 'next' branch, and you should be pretty much good to go.

Note that we've removed an 'blocks' from gnuradio-core. So now, the only things you pull in from the Python gr. module are data structure sizes, the top block, message queue stuff, and similar. If it's a block, it's now located in one of the other blocks. We'll try to post our spreadsheet of where each block is now, but hopefully we've done it so it's pretty intuitive. And if you don't know where something should be, it's probable in gr-blocks (from gnuradio import blocks).

We're really starting to close in on the release of 3.7, so the major churn from our users' perspective should be slowing down.

In Case You Missed It... v3.6.0 Release

I've been remiss in updating my blog with the latest 3.6.0 release of GNU Radio. This continues our efforts to constantly move forward and focus more on making sure updated, stable releases are available that people can rely on.

There were a number of updates that you can find on the changelog page in the above link to the release. The most important one is that, finally, our long national nightmare of hosting and supporting two build systems is at an end! We have remove the autotools build in favor of cmake. Not only have we worked hard enough to make sure cmake satisfied all of our build needs, but we really started focusing our energies there, often leaving behind the old autotools way of compiling the code. No longer. We have moved over to cmake. In most ways, this is a positive move. People familiar with cmake, I'm sure, love it. Those unfamiliar may have a bit of growing pains, but I think you'll soon find that as a user, it is very simple to work with. Our build guide shows you the steps to using it to build GNU Radio from scratch (hint: basically replace configure with cmake).

In another major advancement, GNU Radio users might have noticed that our website has been a bit slow and groggy. In a way, this was a really positive thing for the project because it meant that we receive a ton of traffic. It was, however, annoying and needed to be fixed. This past week, Johnathan Corgan and I updated the server machine to a faster system. The change in the responsiveness of the website was immediate, and I think all of our users will be pleased.


Two Releases in One Month!

We've been busy producing a lot of new material for GNU Radio. We've fixed a number of bugs, improved the code, added a few new features (like support for the FunCube Dongle). Since the last news update here, we've released 3.5.2 (and a bug release of and just yesterday released 3.5.3.

Here's the email to the GNU Radio Mailing List from Johnathan Corgan about the release:

GNU Radio release version 3.5.3 is now available for download:


The release notes are here:


This is the last planned 3.5 API compatible release; there may be bug
fix releases along 3.5.3.x, but no new 3.5.4 release is planned.  Work
on the master branch will be focused on generating a 3.6.0 release.

Contributors this release:

Achilleas Anastasopoulos
Alexandru Csete
Ben Reynwar
Dimitri Stolnikov
Johnathan Corgan
Josh Blum
Michael Dickens
Nicholas Corgan
Philip Balister
Tom Rondeau


We're on the path for a 3.6.0 release shortly where we'll be going full cmake build.


GNU Radio 3.5.1 Released

Version 3.5.1 of GNU Radio has recently been released. The download can be found here:


The release includes the following:


  • Added new SNR estimators to gr-digital; both a probe (sink) and an inline block that copies input to output and sends tags with SNR.
  • Ability to set an upper limit on the noutput_items blocks receive. Allows control over latency.
  • Cmake build enhancements and bug fixes.
  • Support for different over-the-wire data types in UHD.
  • Python GIL fix for gr_bin_statistics.
  • Doxygen documentation bug fixes and enhancements.
  • Added more get/set functions for various blocks (digital_fll_band_edge, gr_noise_source, gr_channel_model).
  • General bug fixes.