GNU Radio on Mac OS X: Using the GUI

Jon Jacky

4 Jan 2010   Emphasize this page is for OS X 10.4 only, also change to /redmine

To install GNU Radio on recent Mac hardware and operating systems, consult the Build Guide and Mac Install pages at the GNU Radio Wiki:,   MacInstall

These pages describe our installation of GNU Radio 3.0 and 3.1 with the USRP hardware on Mac OS X 10.4 Tiger on PPC Macs.

Overview Building gr-wxgui Using gr-wxgui Next steps


The gr-wxgui module adds a GUI to GNU Radio that you can use in your Python programs. There are also some standalone demonstration programs, including an oscilloscope and a spectrum analyzer.

Building gr-wxgui

The gr-wxgui module is built at the same time as the other GNU Radio modules, as directed in the build configuration.

Using gr-wxgui

To use gr-wxgui on the Mac you must run your Python program with the pythonw command (note the final 'w'), not python. The pythonw command calls an executable Python which is installed in a Mac app wrapper. The app contains an Info.plist file that enables Python to receive events from the Mac window manager.

On slower Macs (1 GHz Powerbook G4 and below) the performance can be marginal. Sometimes the programs start up and display a blank window, or display some data and then freeze up, showing the twirling beachball icon that indicates the program is busy. Apparently wxPython can't always keep up with the data produced by the GNU Radio flow graph. Each GUI program provides different workarounds for this.

The demos are in the build directory in gnuradio/gr-wxgui/python/src, and also in the installed directory in gr/lib/python2.3/site-packages/gnuradio/wxgui.

To run the oscilloscope demo (screenshot):

$ pythonw 3 500 25e-6

The first argument 3 is frame_decim. Make this number larger if you see the spinning beachball, that samples the traces less frequently and loads wxPython less heavily. Here 3 is the smallest value that works on my 1 GHz Powerbook G4.

The second argument 500 is v_scale, the vertical scale in counts/division.

The third argument is t_scale, the time scale in seconds/division; 25e-6 is 25 microseconds/division.

You can reduce the load on wxPython by choosing a smaller value for t_scale, so fewer cycles of data appear on the display.

Omit an argument to accept the default: frame_decim 1, v_scale autorange, t_scale 100 microseconds/division.

The default for frame_decim can be set in gr/etc/gnuradio/conf.d/gr-wxgui.conf.

The preset default 1 does not work on my 1 GHz Powerbook G4.

GNU Radio versions before 3.1 provide the older instead of

To run the spectrum analyzer demo (screenshot):

$ pythonw

Use ctrl-click to bring up a menu of controls.

The load on wxPython is set by the fft_rate parameter in the code.

The default for fft_rate can be set in gr/etc/gnuradio/conf.d/gr-wxgui.conf

The preset fft_rate default 15 works on my 1 GHz Powerbook G4.

To run the waterfall spectrum display demo (screenshot):

$ pythonw

Here is a slightly more elaborate signal/noise demo (link)

Next steps

Instructions for subsequent steps:

Using the USRP

Jon Jacky,