GRC - GNU Radio Companion

Note This guide is for the GRC bundled with GNU Radio, and not for any of the separate GRC releases. If you are using GRC 0.70 and below, please use this guide instead.

GNU Radio Companion (GRC) is a graphical tool for creating signal flow graphs and generating flow-graph source code. It is currently under development by Josh Blum.

New Features

What has changed in GRC since the stable 0.70 release?

  • Bundled - GRC is now bundled with the gnuradio source. If all dependencies are met, grc will be installed with gnuradio. *See the Installation and Execution section.
  • Desktop Integration - GRC can be fully integrated into a desktop environment that supports freedesktop standards (courtesy of xdg-utils): icons, mime type, and menu items
  • Code Generation - GRC no longer uses a single executable to load a *.grc.xml file and dynamically build the flow graph. Rather, GRC uses Cheetah templates to generate the python source code for the flow graph. GRC can generate source code for WX GUI and non-GUI flow graphs as well as hierarchical blocks.
  • Documentation - GRC can extract documentation for GNU Radio blocks directly from the doxygen-generated xml files. You will need to configure your gnuradio installation with doxygen support to use this feature.
  • Variables - The variable editor window of past releases has been replaced with variable blocks. Variable blocks show up in the flow graph and act like any other block, except that they have no IO ports. The variable block maps a unique id (variable name) to a particular value. GRC also has several graphical variable blocks that allow one to create WX GUI flow graphs with graphical controls using sliders, text boxes, buttons, drop downs, and radio buttons.
  • Block Definitions - Every block in GRC has a corresponding xml file that contains parameters, IO ports, and a template for code generation. The id key and file name of each xml file matches up exactly with the name of the GNU Radio block to ensure future portability. GRC validates all blocks definitions upon execution, and will exit with error if any definitions fail the validation.
  • File Format - Given that the variables and block definitions have changed, the internal structure of the saved flow graph files has also changed. Fortunately, GRC can automatically convert older saved flow graph files to the new format. Unfortunately, the conversion cannot always be 100%.
  • Block Manipulation - Ever wish that you could take a block out of your transmit/receive change, but not delete it? Blocks now have an enabled/disabled state. By default, a block is enabled. When disabled, a block is grayed out in the flow graph and will be ignored by the flow graph validator and by the source code generator. In addition, blocks may be cut, copied, and pasted within flow graphs and into other flow graphs.
  • Hierarchical Blocks - GRC can create hierarchical blocks out of the built-in blocks. *See the section on hierarchical blocks.


GRC Requirements

Most (if not all) of these requirements can be found in the package manager of you linux distribution.

GNU Radio Requirements

GRC is bundled with the current gnuradio trunk and will be included in the 3.2 release. I recommend configuring your GNU Radio installation with wx-python, usrp, and audio support. However, any configuration will work (see note). Follow the build-guide

Note: GRC will let you generate flow graphs with components that are not included in your local install. For example, you can generate a flow graph with a usrp source, but the code will error when executed unless GNU Radio is configured with usrp support.


Installing GRC

GRC is bundled with gnuradio, so following the installation guide should be enough to install GRC. However, GRC will not be installed if you were missing any of the required components. Install any missing components and re-run configure/install:

sudo make install

GRC should appear in the list of configured components; if not, read the configure verbose for errors.

Installing Documentation

To view the blocks' documentation from inside GRC, install doxygen and configure gnuradio with doxygen support:

./configure --enable-doxygen
sudo make install

Installing Icons, Mime Type, and Menu Items

If you have an operating system that supports the standards (Gnome, KDE, XFCE), then you may install the icons, mime type, and menu items bundled with GRC. After installing GRC, run the following command:

cd <prefix>/libexec/gnuradio/
sudo grc_setup_freedesktop install

-- OR for older versions --

sudo grc_setup_freedesktop install


GRC installs several executable python files into your system's path.

Executing the Flow Graph Editor

Open a terminal and enter the following:


-- OR for older versions --


Executing the USRP Probe Application

GRC provides a GUI app to probe the USRP for daughter-board information. Open a terminal and enter the following:


Executing the USRP2 Probe Application

GRC provides a GUI app to probe the USRP2 for daughter-board information. Open a terminal and enter the following:


more >>>