From GNU Radio
Jump to navigation Jump to search

ChangeLog v3.7.9.3[edit]

This is the final, bug-fix only release of the 3.7.9 release series.


The following list of people directly contributed code to this release.

Bug fixes[edit]

  • cmake: Quiet excessive warnings from cmake regarding deprecated usage. (Stefan Wunsch)
  • gnuradio-runtime: Fixed race condition during flowgraph locking/unlocking (Jiří Pinkava)
  • gnuradio-runtime: Fixed incorrect pmt serialization for double (Johannes Schmitz)
  • gnuradio-runtime: Fixed invalid string reference usage (Daehyun Yang)
  • gr-audio: Removed inline comments in conf file to workaround parsing bug (Marcus Mueller)
  • gr-blocks: Fixed stream corruption at termination with UDP source/sink blocks. (Andy Sloane)
  • gr-blocks: Fixed tag propagation for stream mux block (Andrej Rode)
  • gr-digital: Fixed incorrect symbol reporting for unusual carrier allocations in OFDM blocks (Martin Braun)
  • gr-digital: Fixed missing documentation in OFDM blocks (Martin Braun)
  • gr-dtv: Fixed broken assertions in DVB-T blocks (Clayton Smith)
  • gr-fec: Cleaned up and fixed LDPC encoder/decoder pair for memory handling, documentation, and Python function errors. (Tracie Renea)
  • gr-filter: Improved documentation iir_filter blocks. (Laur Joost)
  • gr-filter: Fixed broken imports of optfir module in examples (Jiří Pinkava)
  • gr-uhd: Fixed timing of set_sample_rate call during initialization (Marcus Mueller)
  • gr-zmq: Accomodate gcc 6.x changes to casting requirements (Philip Balister)

Numerous MSVC/mingw incompatibilities that have crept in the last few releases have been corrected in this release. Special thanks go to Geof Gnieboer and Paul Cercueil (Analog Devices, Inc.) for their testing and patches.

ChangeLog v3.7.9.2[edit]


The following list of people directly contributed code to this release.

Closed issues[edit]

  • # 856
  • # 901
  • # 903
  • # 904


Several changes fixed type consistency of parameters and documentation/comment clarifications. The following sections summarize substantial changes by component.


Fix GRC support for scrolling with keyboard PAGEUP and PAGEDOWN buttons.

Pasting blocks will now * remove position offset when pasting blocks into an empty flow graph * ignore unknown block keys when pasting blocks

XML comments are now ignored rather than parsed as part of the block wrapper.

Rewrite block before adding connections during flowgraph import E.g.: Not all connections to a block with nports controlled via a parameter block could be restored from file.

Stop overwritting modified param values in epy blocks

Flowgraphs now run even if a bypassed block has errors.

QT GUIs[edit]

Fixed sample range that fetches tags that would previously duplicate tags that show up on the last sample in a buffer.


Fix the internal mask for access codes in correlate_access_code_bb_ts and correlate_access_code_ff_ts. Previously the top (most significant) bits were set for the internal mask. This matches a fix fo the correlate_access_code_tag_bb block from v3.7.5.2. Look for similar fixes and consistency changes to the correlate_access_code blocks in the future.


FEC documentation continues to improve with every release. Fixes to improve support for LDPC blocks in GRC. The example flowgraph ber_curve_gen_ldpc should run properly now.


Reformatted documentation.


Always use volk_malloc rather than fftwf_malloc because some binary builds may not include AVX which will cause alignment faults when fftwf_malloc created buffers are used in AVX+ proto-kernels.


Remove duplicated tags in the tagged_stream_align block.

Fix the type of nitems in set_length (was int, now uint64_t).


Loosen requirements for multi-channel operations to have timed command capability.

A few usability fixes to uhd_rx_cfile related to messages in verbose mode and default options.

XML files call the correct functions for correcting DC offset and IQ imbalance.


gr-perf-monitorx has several small fixes. First, a stability issue that manifested with the ATSC receive flowgraphs was fixed by adding a small offset to prevent calculating log(0). Additionally the import of networkx has been updated to match newer matplotlib and networkx modules while maintaining compatibility with older versions.


Fix gr_modtool rename command for GRC XML files to include the module name.

Fix template expansion code for out of tree modules by adding to PYTHONPATH. New modules will also have a CMAKE_MODULES_PATH with the module cmake/Modules directory first over the installed GNU Radio modules.


A misnamed variable, INCLUDE_DIRS (set by pkg-config) vs INCLUDE_DIR (never set), has been fixed in FindThrift.cmake. The headers should now be found for the case of thrift being installed in a prefix that is different than the target prefix.

Cross compiling with thrift will now use the SDK sysroot's native thrift binary rather than the system thrift binary.

Minor cmake/swig fix to generate non-make build files.

ChangeLog v3.7.9.1[edit]


The following list of people directly contributed code to this release. As an added bonus this is the first contribution for three of these authors!

Closed issues[edit]

  • #528
  • #719
  • #768
  • #831
  • #864
  • #868
  • #876
  • #879
  • #882
  • #883


This release includes a number of minor typos and miscellaneous rewording of error messages. The following sections summarize substantial changes.


  • the 'Parser errors' menu item wasn't correctly enabled
  • embedded python blocks: message ports are now optionial and show the correct label
  • custom run command now accounts for filepaths that need escaping
  • virtual sink/source message connections were dropped when opening a flow graph
  • tooltips in block library are truncated if too long
  • not all tooltips in block library were updated after docstring extraction finished
  • some expressions were wrongfully marked invalid after opening a flow graph
  • move random uniform source from analog to waveform generators in GRC

Scheduler and Runtime fixes[edit]

A new unit test is available to test a bug reported on stack overflow where blocks (such as the delay block) would drop tags. Paul David stepped in with his first contribution to GNU Radio with a fix.

Fix an issue with flat_flowgraph calculating alignment by misinterpreting units of write and read indices. This was only apparent when these indices are non-zero (a flowgraph has stopped and restarted).

Fix exceptions thrown in hier_block2 constructors.

Check d_ninput_items_required for overflow and shut down if overflow is detected.

Allow hier_block2's to change I/O signature in the constructor, which was previously allowed by the API, but broken.


Use unsigned char rather than char in add_const_bb. This was the legacy behavior with the older add_const_XX and was accidentally replaced with char when replacing the templated version.

Fix vector length units from bytes to number of items in PDU to tagged stream and tagged stream to PDU blocks.


Add a check to the rational resampler to stop working after we've operated on all input items (closed issue #831)

Throw an error when pfb clock sync is given constant taps which results in a derivative of 0 (calculated as NaN). (closed issue #812 and 734). Added a reset_taps function to externally set taps which should be used in place of set_taps

Fix a memory leak in pfb decimator (closed issue #882)


Maximum Deviation parameter for NBFM transmitter exposed to GRC


Change the constellation receiver to inherit from control_loop publically rather than the impl to better support the control port interface. (closed issue #876)


TLC to puncture/depuncture GRC files in gr-fec


Major performance and correctness fixes to gr-zeromq


Fix cross compiling on for 64-bit architectures by not setting DEBIAN, REDHAT, and SLACKWARE. OOT modules created with modtool should update their cmake/Modules/GrPlatform.cmake to support cross 64-bit builds.

ChangeLog V3.7.9[edit]


  • Bill Clark <>
  • Bogdan Diaconescu <>
  • Chris Kuethe <>
  • Doug Geiger <>
  • Eric Statzer <>
  • Felix Wunsch <>
  • Glenn Richardson <>
  • Jiří Pinkava <>
  • Johannes Demel <>
  • Johannes Schmitz <>
  • Johnathan Corgan <>
  • Marcus Müller <>
  • Martin Braun <>
  • Matt Ettus <>
  • Mike Walters <>
  • Paul David <>
  • Ron Economos <>
  • Sebastian Koslowski <>
  • Seth Hitefield <>
  • Stefan <>
  • Tom Rondeau <>
  • Tracie Perez <>

Major Changes[edit]

The git log is always the authoritative list of changes, but the following provides a high level overview of major changes since v3.7.8 (excluding changes already included in maintenance releases). v3.7.9 introduces improved documentation, new features, and a few examples. The bulk of features revolve around message passing and integrating message ports with Control Port.

GNU Radio Companion[edit]

GRC changes improve start-up time and flowgraph loading by asynchronously reading block docstrings. Loading flowgraphs with missing hier_blocks results in auto-generated hier_blocks so the top-level flowgraph remains viewable.

GRC menus are slightly reorganized to include submenus for new and recently used flowgraphs. A new option to include custom run commands (which is intended to assist remote deployments and starting applications related to a flowgraph) is available. A new easter egg in the menus will display flowgraph-complexity in Balints.

The GRC file format includes the following improvements:
- select default and per-flowgraph QSS themes for QT GUI.
- embedded python blocks: create and edit Python Blocks straight from
GRC using your favorite editor. Automatic wrapper generation. Stored in
the grc file.
- grc file format: minimizes diffs when changing flowgraphs
- embedded python modules: save custom python code directly in grc files
and edit it directly from grc.


New uniform integer distribution source Added a new message port to the signal source to change frequency tag propagation fix with QA
Add complex matrix multiply block.
New Complex to Imaginary char block (complex to IChar) with GRC support
Add blocks to convert between complex representations and magnitude/phase representations


A new DVB-T receiver flowgraph is available in tree. DVB-T is widely used in European television broadcasts. gr-dvt also saw major work on resolving coverity issues.


GNU Radio participated in the ESA SoC with Johannes Demel implementing polar codes. This work has been merged in and uses Johannes' VOLK kernels to accelerate en/decoding.
Tracie has continue work on LDPC codes from GSoC 2013. Much of the work in this release has been examples and improved documentation.


Windowing operations in fft_vcc_fftw were replaced with VOLK calls for improved performance.


The center frequency message port handles a dict as well as the pair that currently used pair which matches conventions used in other message handlers.


Expose trigger callbacks for GUI sinks to GRC.
Add a Qt style sheet for projectors and presentations as well as better color scaling and better coloring in general for sharing plots.
QT GUI plotting widgets have added support for control and data message ports. The GUIs can only plot data from messages or streams, but not both at once. These come with documentation and an example in gr-qtgui/examples/qtgui_message_inputs.grc
Added documentation for quadrature demod blocks and exposed through GRC.


Expose constant parameter of the multiply_const_ff and add_const_XX blocks through control port. As part of this the add_const_XX blocks are now implemented separately rather than templates.

Message Handlers are now all exposed through ControlPort which allows passing arbitrary messages in to a flow graph through ControlPort. For an example see gr-blocks/examples/ctrlport/simple_copy.grc and gr-blocks/examples/ctrlport/
ackRegister the average throughput performance counter.


Rearranged tabs for USRP blocks in GRC.
Register the "command" message handler with ControlPort. See the example in gr-blocks/examples/ctrlport/
Examples and utilities are improved with multi-channel support and a shared base class for accessing UHD (see gr-uhd/apps/


Work on random number generators to support the new uniform random source in gr-analog

Bug fixes[edit]

GNU Radio v3.7.8.2 is a simultaneous release of bug fixes to the 3.7.8 series. Contributors for this release are:

  • A. Maitland Bottoms <>
  • Head4che <>
  • Jared Dulmage <>
  • Johnathan Corgan <>
  • Lennart <>
  • Philip Balister <>
  • Sebastian Koslowski <>
  • Tim O'Shea <>
  • Tom Rondeau <>


  • Fixes for ABI compliance checker
  • digital: fix callback typo in corr_est_cc XML
  • grc: cache compiled Cheetah templates
  • runtime: fix hierarchical block message port flattening/GRC usage
  • grc: set font for dummy block params
  • grc: typo in tooltip
  • blocks: fixed issue #861: tagged_stream_align can miss tags
  • zeromq: change addresses used in QA to allow parallel ctest
  • Improved documentation for freq modulator and crc32
  • grc: fix port spacing over canvas grid
  • grc: fix #858 category string splitting
  • dtv: fix coverity issue #1327836


  • Ben Hilburn <>
  • Doug Geiger <>
  • Gwenhael Goavec-Merou <>
  • Johannes Demel <>
  • Johannes Schmitz <>
  • Johnathan Corgan <>
  • Martin Braun <>
  • Nathan West <>
  • Paul Cercueil <>
  • Philip Balister <>
  • Sean Nowlan <>
  • Sebastian Koslowski <>
  • Jan Krämer <>
  • Sylvain Munaut <>
  • Tom Rondeau <>


Ben Hilburn <> (6):

Fixes Coverity Defect 1229872: Memory leak in `atsci_equalizer_lms2` DTOR
lms_dd_equalizer_cc.h: Fixing simple documentation typo.
Addresses Defects 1046385 & 1046340: Out-of-bounds access
Addresses Defects 1046385 & 1046340: Buffer not NULL-terminated
Fixes Cov Defect 1046011: Resource Leak
Fixes Cov Defect 1043301: Unitialized Variable in Conditional

Doug Geiger <> (1):

Bring fix from other pfb_arb_resampler_* variants

Gwenhael Goavec-Merou <> (1): sys/types.h is needed for mode_t

Johannes Demel <> (1):

fec: xml template doesn't produce duplicate var def's anymore

Johannes Schmitz <> (1):

gr-zeromq: fix python examples

Johnathan Corgan <> (12):

qtgui: install vector sink example
blocks: enable missing multiply_matrix_cc and backport fixes

Martin Braun <> (2):

qtgui: Fixed vector sink example (block not showing)
modtool: Add hint regarding python blocks + makexml

Nathan West <> (5):

blocks: add socket_pdu qa
blocks: fix destruction and shutdown for socket_pdu
blocks: add socket_pdu test using a flowgraph

Paul Cercueil <> (1):

blocks: Fix incorrect size check

Philip Balister <> (1):

Fix uhd_rx_nogui so it runs.

Sean Nowlan <> (2):

blocks: import pmt to get GRC to recognize defaults in Tag Object GRC bindings
trellis: fixed pulse normalization in CPM test script

Sebastian Koslowski <> (7):

grc: fix for reverted commit f184ccf 'better Popen argument handling...'
grc: fix printing empty traceback when a block is missing
grc: no block alias param for Options blocks
qtgui: indentation fix for number sink GRC wrapper
grc: update port key on domain change
grc: fix port placement for hidden ports
grc: disconnect hidden blocks

Sylvain Munaut <> (2):

cmake: Fix warning related to GrSetupQt4 in modern CMake
grc/blocks: Fix XML RPC server to allow proper flowgraph termination

Tom Rondeau <> (3):

fec: Fixed async_decoder. Can't use nbits_out because it's 0 at this point.
logger: fixed issue #851: "notset" instead of "noset".
fec: Fixed alist file location for ber_curve_gen example.

spectrejan <> (1):

Fixed Bug in qa_multiply_matrix_ff test_005_t

Changelog for Release 3.7.8[edit]

GNU Radio releases 3.7.8 and are available for download:

GNU Radio Live DVD 3.7.8

SHA256 sums:

022408ec791852b0e1d804f67ea89f36e6209b275eafbca9b8dc09727e129e39  gnuradio-
fe19cb54b5d77fb76dde61d5cf184c6dee7066779b45c51676bae6e6d0cd4172  gnuradio-3.7.8.tar.gz

Release is a bug-fix only increment, while release 3.7.8 adds both bug fixes and new features within the 3.7 API compatibility series.


We'd like to thank the below contributors for their efforts:

  • Achilleas Anastasopoulos <>
  • beitler <>
  • Bogdan Diaconescu <>
  • Chris Kuethe <>
  • Doug Geiger <>
  • Felix Wunsch <>
  • Jeremy Drake <>
  • Johannes Demel <>
  • Johnathan Corgan <>
  • lazydodo <>
  • Marcus Müller <>
  • Martin Braun <>
  • Michael Dickens <>
  • <>
  • Nate Goergen <>
  • Nathan West <>
  • Nicholas McCarthy <>
  • Nick Foster <>
  • Paul Garver <>
  • Philip Balister <>
  • Ravi Sharan <>
  • Richard C. Bell <>
  • Ron Economos <>
  • Sean Nowlan <>
  • Sebastian Koslowski <>
  • Seth Hitefield <>
  • Tim K <>
  • Tim O'Shea <>
  • Tom Rondeau <>

Changes by Component[edit]


  • Power Squelch now emit tags on start/end of bursts
  • fixes calculation of complex noise sources from the amplitude setting.
  • frequency_modulator: float internally, double in API
  • frequency_modulator_fc: float modulo using cmath


  • Address Issue #816.
  • Moved setting of d_finished from ctor to start() in message_strobe
  • added tag tests to vector source QA code
  • better implementation of peak_detector2. Address #783.
  • improved documentation for peak_detector2.
  • more fixups to peak_detector2.
  • vector_source: fixed tag srcid propagation when not using repeat mode


  • swig: more generic way to replace std::vector<size_t> by its correct-sized std::vector<TYPE>, but only with SWIG < 3.0; this issue seems to have been fixed with SWIG >= 3.0.
  • Re-add qa_gr_flowgraph/qa_set_msg_handler to test suite
  • add GR_MODULE(zeromq...)
  • fix case for ctrlport when no backends installed
  • force QA tests to turn ControlPort off by default.
  • proposed fix for issue #791.
  • set correct vars when pkg-config finds GSL


  • Addes a FindThrift cmake module to find the Thrift headers, libraries, and Python files.
  • Adding support for building Java clients.
  • Adds ability to configure Thrift through a config file
  • Initial thrift definition for gnuradio
  • QA needs to get host and port out of the endpoint.
  • Thrift's binary type
  • adding abstraction layer for the controlport backends; support thrift currently.
  • adding performance and controlport monitor GRC blocks.
  • android: cleaning up; better logs; help to support android.
  • avoid copy of outknobs (a temporary).
  • better controlport probe mutex handling.
  • build: allowing ControlPort and probes in static builds.
  • changing the default port number on the Thrift interface to zero.
  • cleaner, more robust interface for buffer gets.
  • cleaning up and using logger to display endpoint.
  • cleaning up; trying to handle shutdown better.
  • cleanup and switching over to new Python common interface.
  • cleanup and thread safety.
  • cmake fixes to FindThrift for when thrift is not installed.
  • convert rpcpmtconverter::to_pmt() if statement to a function object map
  • convert to To_PMT registration objects
  • documentation
  • ensure proper ctrlport shutdown.
  • ephemeral / unused port number selection by OS working.
  • fix gr-perf-monitorx crash when manipulating display
  • fix warning message macro
  • fixed controlport probes.
  • fixed up performance monitor.
  • fixing complaints about no non-virtual dtor.
  • fixing up some issues; generate thrift sources into thrift subdir.
  • improving transport layer throughput.
  • info on a (possible) Thrift bug.
  • made the controlport CMakeLists use thrift includedirs
  • make sure to use to configured d_logger in thrift code.
  • more cleaning up.
  • more cleanup and conveniences
  • more cleanup of python code to help generalize the interface
  • more documentation and linking info.
  • more work on the translation layer; properties and setting parameters in gr-ctrlport-monitor now working.
  • moving the generation of the Thrift endpoint string to the application_started() function.
  • moving the logger call that publishes Thrift's endpoint to i_impl().
  • quick fix
  • renamed some functions for clairity
  • reorg abstraction layers for RPC connections.
  • replacement of nanosleep() with boost::sleep() in startup thread. Fix of merge error in booter_thrift.
  • restructuring to add subdirs for different cp backends.
  • simple style editing.
  • switching rpcpmtconverter::to_pmt() to To_PMT singleton
  • this fixes a complaint by newer versions of Boost.
  • thrift: "py" instead of "python" -- guessing a version thing
  • use proper default return value from prefs get_bool.
  • using threaded server for multiple connections.
  • working controlport server using thrift.
  • working gr-perf-monitorx application


  • (issue #784) fixes bug in constellation_rect GRC definition.
  • Fix minor grc issues in gr-digital: trigger sink of header_payload_demux should be optional; message source of packet_headerparser_b_default is named "header_data", not "out"
  • Fixed berawgn example to follow recent noise power change
  • Fixes for CIDs 1043259-60, 1043267-68
  • Removed a potential buffer overflow in
  • Replacing center of mass interpolation for the time_est tag with parabolic interpolation. It should be more accurate although still is a biased estimate of the time delay
  • Squashed commit containing the MSK timing recovery block.
  • Updated HPD documentation
  • added GRC example for burst shaper blocks
  • added an option to the crc32_bb block that adds the unpacked CRC to the bit stream
  • added missing parameter to additive scrambler GRC block; cleaned up whitespace
  • added tag propagation to burst_shaper blocks
  • adds callbacks to corr_est_cc block.
  • adds corr_est_cc correlation estimator block
  • burst_shaper block passes meaningful QA tests
  • fix skipped sample handling in burst_shaper
  • header_payload_demux: Fix an error in which the wrong header is allowed through
  • install burst shaper block example GRC
  • whitespace fixes
  • wip: burst shaper compiles and installs
  • wip: more progress


  • Added section on message commands
  • Fixed garbled Doxygen formatting of channel map
  • Fixing some missing parameters and other Doxygen errors/warnings.
  • Provide correct URLs in the doxygen build guide
  • added Doxygen for flowgraph
  • adding in info on ControlPort and Thrift.
  • cleaning up some doxygen warnings and formatting.
  • completing the half sentence about when to use C++
  • doxyfile maintenance.


  • Adding doxygen comments to new dummy encoder params.
  • Address issues #757.
  • TPC encoder whitespace cleanup
  • added tests for extended_encoder input/output conversion.
  • adding missing include.
  • code clean-up for block 'ber_bf'.
  • extended encoder now appends unpack_k_bits(8) block after encoder to satisfy get_output_conversion() = unpack behaviour
  • fix ber_test.grc flowgraph
  • fix segfault due to debug file pointer handling
  • fixed QA for ber_bf.
  • fixing up some of the examples.
  • init debug file pointer in TPC encoder
  • some initial refactoring for ber_bf


  • add variable_band_pass_filter_taps
  • add variable_high_pass_filter_taps
  • add variable_low_pass_filter_taps
  • added filter_taps.grc example
  • added variable_band_reject_filter_taps and variable_rrc_filter_taps


  • Add DVB-T transmitter updated files.
  • Add DVB-T transmitter.
  • Clean up minor Coverity Scan issues.
  • Fix segfault in 64QAM non-rotated constellation mode.

GNU Radio Companion[edit]

  • Add check for GTK initialization
  • Added ability to bypass blocks (Suggested by Chris Headley).
  • Exit if gtk import fails.
  • add <flags> to blocks dtd (<throttle> still supported)
  • add QT GUI hier blocks (#727)
  • add StartupWMClass to .desktop file
  • add default value to ToggleActions
  • add struct variable block
  • add support for dynamic param names
  • add user settings for canvas default size and canvas font size (+ clean-ups)
  • align default flowgraph block with canvas grid
  • better Popen argument handling for CLI based apps
  • change url in about dialog to
  • change url in about dialog to
  • changing type colors.
  • clean-up Block port counters
  • clean-up ParseXML
  • clean-up gui/
  • ensure only valid utf-8 is passed to markup_escape_text (fixes #813)
  • fix bus ports spacing in gui
  • fix context menu in props dialog text displays
  • fix exception when hitting Enter on a category row in the block library
  • fix file load error when connections are not unique (#794)
  • fix for block bypass where the next block is a virtual sink and moved bypass code in generator
  • fix generate mode error message (#800)
  • keep block/connection/param order when saving flow-graphs
  • no block alias for variables
  • only show code preview tab after user enables it
  • refactor
  • remove bypassed blocks from generated code
  • replace non-printable characters instead of ignoring them
  • save grc files utf-8 encoded (#792)
  • show preview of generated code in each blocks properties dialog
  • stop using gtk forall() (#793)
  • update copyright year in about dialog
  • update copyright year in about dialog
  • use gnuradio icon for grc


  • Fixes problem with half spectrum when set to 2048.
  • adds Type setting for Range widget.
  • adds ability to set the tag text and background colors.
  • connected control panel and context menu stop button/actions.
  • fixed examples using qss theme.
  • fixed issue #801 with controlpanel in the frequency display.
  • improved type checking for range block and simplifies python.
  • pdu handler for float waterfall plot.
  • protect PDU handling waterfall port for wrong data type.
  • updates to waterfall for suchsamples
  • waterfall PDU handling
  • waterfall plots


  • Fixed non-virtual dtor pseudoissue in [flat_]flowgraph
  • add flag to wrapped top_block to control SIGINT handling in wait()
  • added THRIFT_INCLUDE_DIRS to find thrift in non-standard installs.
  • added default xtor & dtor to tag_t; srcid default is now PMT_F
  • conditionalize THRIFT_INCLUDE_DIRS
  • fix default forecast implementation for python blocks
  • fixed default srcid value for PythonTag class
  • fixes a problem with tag pruning.
  • more generic version of prefs class.
  • remove thread-unsafe static qualifier
  • stop catching errors from primitive_connect in connect decorator


  • Bugfix for multi-chan tune request
  • Expose GPIO functions through SWIG
  • Fix for CID 1090026 thru -33
  • Fixes for CID 1296559 and 1090067 and more
  • Refactored usrp_{sink,source} blocks
  • Updated USRP block documentation
  • Updated command interface to match new message command format
  • Updated frequency hopping example to do DSP tuning only
  • Updated uhd_fft example + app (moved to QT)
  • changing uhd_msg_tune example to use other forms of setting parameters.
  • give source a headstart
  • usrp_spectrum_sense: Print scan rate


  • apps: removed title and legend from uhd_fft for more viewing space.
  • base: Added argparse equivalent for eng_option
  • build: remove and/or/xor keywords.
  • channels: Typos: Sinusiods in channel model docs
  • examples: removed extra titles or legends from QTGUI blocks in examples.
  • modtool: Fix bug where gr_modtool rm messes up the C++ QA section
  • modtool: Fixed correct pointer arg type stripping
  • noaa: Removed reference to decimation rates in README
  • pmt: use memcpy in uniform vector initializer for speed increase
  • volk: Volk dependency in gr-analog pkgconfig

Changelog for Release[edit]

GNU Radio release is available for download:

GNU Radio Live SDR Environment:

MD5 sums:

ca8e47abcb01edc72014ccabe38123a3  gnuradio-
1603f93c3b9d9f5815131328bf1b743e  ubuntu-14.04.2-desktop-amd64-gnuradio-

Git Shortlog of Contributions:[edit]

Jeremy Drake (1):[edit]

  • Fix minor grc issues in gr-digital: * trigger sink of header_payload_demux should be optional * message source of pa

Johnathan Corgan (13):[edit]

  • Merge remote-tracking branch 'tom/docs/rework0' into maint
  • Merge remote-tracking branch 'mmueller/message_strobe_fix_restartable' into maint
  • Merge remote-tracking branch 'mmueller/docs_typo_sinusiod' into maint
  • Merge remote-tracking branch 'nowls/vec_src_fix_tag_srcid' into maint
  • Merge remote-tracking branch 'tom/docs/fixes1' into maint
  • Merge remote-tracking branch 'mbr0wn/uhd/coverity' into maint
  • Merge remote-tracking branch 'ravi/maint' into maint
  • Merge remote-tracking branch 'mbr0wn/docs/msg_cmds' into maint
  • Updated volk submodule to latest maint branch
  • Merge remote-tracking branch 'jeremyd/digital_grc_fixes' into maint
  • Merge remote-tracking branch 'tom/qtgui/qss_tag_colors' into maint
  • Merge remote-tracking branch 'tom/qtgui/control_panel_stop' into maint
  • cmake: update revision to for maintenance release

Marcus Mueller (5):[edit]

  • Fixed non-virtual dtor pseudoissue in [flat_]flowgraph
  • gr_uhd: give source a headstart
  • Moved setting of d_finished from ctor to start()
  • Typos: Sinusiods in channel model docs
  • Fixed garbled Doxygen formatting of channel map

Martin Braun (3):[edit]

  • uhd: Fix for CID 1090026 thru -33
  • digital: Fixes for CIDs 1043259-60, 1043267-68
  • docs: Added section on message commands

Ravi Sharan (1):[edit]

  • Provide correct URLs in the doxygen build guide

Sean Nowlan (8):[edit]

  • fec: fix segfault due to debug file pointer handling
  • fec: TPC encoder whitespace cleanup
  • fec: init debug file pointer in TPC encoder
  • blocks: vector_source: fixed tag srcid propagation when not using repeat mode
  • runtime: added default xtor & dtor to tag_t; srcid default is now PMT_F
  • blocks: added tag tests to vector source QA code
  • runtime: fixed default srcid value for PythonTag class
  • digital: added missing parameter to additive scrambler GRC block; cleaned up whitespace

Sebastian Koslowski (1):[edit]

  • grc: no block alias for variables

Tim O'Shea (1):[edit]

  • pmt: use memcpy in uniform vector initializer for speed increase

Tom Rondeau (8):[edit]

  • docs: doxyfile maintenance.
  • qtgui: fixed examples using qss theme.
  • qtgui: Fixes problem with half spectrum when set to 2048.
  • docs: Fixing some missing parameters and other Doxygen errors/warnings.
  • fec: fixing up some of the examples.
  • Merge remote-tracking branch 'nowls/scrambler_cleanup' into maint
  • qtgui: connected control panel and context menu stop button/actions.
  • qtgui: adds ability to set the tag text and background colors.

Changelog for Release 3.7.7[edit]

GNU Radio releases 3.7.7 and are available for download:

GNU Radio Live DVD 3.7.7: see maintenance release

MD5 sums:

84bd2ba1ce04fb1489fd9422c41bb53d  gnuradio-
6eab8f59d73abaec29c25c25de4b8eec  gnuradio-3.7.7.tar.gz

Release is a bug-fix only increment, while release 3.7.7 adds both bug fixes and new features within the 3.7 API compatibility series.


We'd like to thank the below contributors for their efforts:

  • Bastian Bloessl <>
  • Bill Clark <>
  • Brian Padalino <>
  • Ethan Trewhitt <>
  • Feng Zhe <>
  • Harm te Hennepe <>
  • Henry Xu <>
  • James Saari <>
  • Jiří Pinkava <>
  • Johannes Demel <>
  • Johnathan Corgan <>
  • Jon Szymaniak <>
  • Julian Arnold <>
  • Luke Berndt <>
  • Marcus Müller <>
  • Martin Braun <>
  • Michael Dickens <>
  • Moritz Fischer <>
  • Nathan West <>
  • Paul Garver <>
  • Ron Economos <>
  • Scott Talbert <>
  • Sean Nowlan <>
  • Sebastian Koslowski <>
  • Seth Hitefield <>
  • Sreeraj Rajendran <>
  • Stephan Ludwig (donludovico)
  • Sylvain Munaut <>
  • Thaddeus Koehn <>
  • Tim Kuester <>
  • Tim O'Shea <>
  • Tom Rondeau <>
  • Zero_Chaos <>

Major Changes: (3.7.7)[edit]


Added the ability to set the output buffer min/max size for a
hier_block, which propagates to all blocks internally, or it can be
set to only set the buffers of blocks attached to output ports.

Better use of the logger within the flat_flowgraph class.


The CMake work dealt mainly with issues related to the VOLK
submodule/external project. The intent is to find out if a newer
version is installed in the system somewhere or fall back to using the
submodule in-tree. The OE SDK's support the submodule as well.

CMake now supports the flag NO_DEFAULT_PATH to look only in the paths provided.

We found a bug in SWIG version 3.0.3 and 3.0.4. CMake now Add checks
these version and prints a user-friendly messages for both success and


The DTV module has new support for ATSC, DVB-S2, and DVB-T2 transmitter blocks.


The FEC component now has support for an LDPC encoder and decoder as
well as some support for ALIST files, a common format for the LDPC
parity matrix. This is work that began with Manu TS's GSoC project.

The FEC component now also supports a Turbo Product Code (TPC) encoder
and decoder thanks to Kiran Karra.

Both TPC and LDPC codes are available in GRC and use the FEC-API
structure for GNU Radio FEC support. The ber_curves.grc example has
been updated to plot the BER vs. ESN0 results alongside the dummy,
repetition, and convolutional code we already supported.


The IIR filters for certain combinations of input/output/tap types
could be unstable if the internal accumulator was not the appropriate
type. The IIR filter kernels are template based, so we added a fourth
template for the accumulator value, which should be the highest
precision type for any portion of the algorithm. This is documented in
the iir_filter kernel class page in the manual.

GNU Radio Companion[edit]

When using QTGUI or WXGUI widgets in a GRC application, GRC now checks
to see if the Generate Options match and provides an error message if
they do not. This feature will help with an on-going problem of mixing
and matching the two.

We added the ability to Apply changes when setting a block's
properties instead of just OK and Cancel. This feature is designed to
help address the problem of validating the entry before exiting the
dialog box. When Apply is hit, all entries are validated (including
Python code, if any) to mark any entries red if there are errors. A
short cut key Ctrl+Enter was added to quickly apply any changes. If
Cancel is pressed after Apply, any properties set/changed before Apply
are still the same; only changes made between Apply and Cancel are

GRC supports the use of comments to annotate blocks. There is a
multiline (and new 'multiline' parameter type to support this) Comment
section under the Advanced tab in all block properties box to place
any comments. These will go underneath the block in the canvas in a
slightly different background shade to help distinguish them. Disabled
blocks will not show the comments, and comments can be toggled on/off
globally by clicking View -> Show Block Comments.

We also added a variable type Tag Object to make it easier to build
tags in GRC. This is useful for adding tags to a vector source, and an
example is installed into
examples/blocks/vector_source_with_tags.grc. In the future, we plan on
making more variable blocks like this to help us more easily build
some complex objects

There were a handful of other helpful issues addressed in this release
as well:

  • grc: button in save dialog defaults to 'save' instead of 'close without saving'
  • grc: set permissions for generated files
  • grc: no shebang for hier blocks; use python2
  • grc: use 'import' for grc-generated hier_blocks (#763)
  • grc: optional thread-safe setters in generated code (#748)
  • grc: don't try to open missing files
  • grc: move context def into and add submenu
  • grc: clean-up 'gnuradio-companion', add mode 'run from source'
  • grc: use abs path for source tree run mode


We have added a control panel to the time and frequency GUI sinks. The
control panel allows easy access to adjust certain display properties
of the sink, such as X and Y axis, max/min holds, autoscaling, and
trigger settings. The control panel can be turned on/off in GRC by
going to the Config tab of the block's property box. It can also be
turn on/off at runtime using the drop-down menu (middle mouse button

The legends of all graphs can be turned on/off, but only set at the
start of the application. In GRC, this is toggled in the Config tab of
the properties box. All QTGUI blocks support this.

We replaced the QTGUI range widget from using PyQWT to just PyQT4,
which means we have also removed PyQWT as a dependency of GNU
Radio. PyQWT is used by the gr_filter_design tool, but can be added on
later for running just that Python application.

A new QTGUI Push Button widget is available to signal behavior in a

QSS files can be used to set the look of a QTGUI application. We moved
the available dark.qss and alt.qss files in
$prefix/share/gnuradio/themes directory to be more easily found and


The UHD updates this release include the addition of building gr-uhd
as a static library to help support static and embedded system builds
that require this. This required an update in UHD, and the GNU Radio
CMake structure verifies that the installed version of UHD supports

UHD gain ranges have also been normalized, and a set_stream_args()
method has been added to the UHD sink & source blocks.


We have separated VOLK into its own project; added it as a submodule
to GNU Radio. An explanation and more details on the VOLK 1.0 release
announcement can be found here:


Supports sending and receiving tags through the stream-based ZMQ
blocks and added new ZMQ blocks to pass messages.

Other Additions and Changes[edit]

  • analog: Added frequency accessor and modifier to CTCSS squelch
  • blocks: Make tap/tun configurable, fix GRC spec to be consistent with default flag of IFF_TAP
  • blocks: add message output port to probe_rate block
  • blocks: add blocks_stream_align to support acquiring alignment to TSB from an unaligned TSB streamtests
  • blocks: added callback functions to stream_to_tagged_stream
  • blocks: added callback function set_k_and_l to repack bits
  • digital: added reset_tag_key field to additive scrambler GRC xml
  • digital: update control loop frequency limits in fll_band_edge_cc when samps_per_sym is changed
  • digital: added new constellations objects naturally mapped 8PSK and 16QAM
  • digital: updated the decision maker of 16QAM
  • digital: added callback function set_header_formatter to packet_headergenerator_bb
  • general: Removed any use of the gr_<type> data types that will removed in 3.8.
  • general: gnuradio-config-info: Added --enabled-components
  • grc: GRC block for video SDL sink
  • modtool: Added rename capability to gr_modtool
  • modtool: Added sample manifest file
  • modtool: Added interactive language selection, renamed "code type" to "block type" to be more descriptive.
  • qtgui: improved speed of time plots.
  • runtime: added accessor to get base address of buffer. Addresses Issue #729.
  • uhd: support for IQ imbalance enable/disable
  • utils: Added octave function to write fc32 format (gr_complex) from Octave variables.

Bug Fixes[edit]

  • analog: Made CTCSS squelch find_tone() a static member function
  • analog: Moved CTCSS squelch FFT parameter calculations
  • analog: Wrapped squelch blocks' setter methods with lock
  • blocks: integration supports vector input
  • blocks: the API for the peak_detector blocks incorrectly uses int instead of float for setting alpha.
  • blocks: pack_k_bits_bb: removed unused d_k member; Coverity 1216153
  • blocks: fix tagged_stream_align min/max output items
  • blocks: minor cleanup for types and using alias_pmt directly in pdu_to_tagged_stream.
  • cmake: In Python files only, remove all shebanging (anywhere) then prepend that used for GNU Radio.
  • digital: bug fixed in chunks_to_symbols that the callback function set_symbol_table didn't work with additional qa
  • docs: removed doxyxml example
  • dtv: redo c+0x complaint std::complex to be c+11 compliant
  • dtv: move "static const" variables from header / class into the main code.
  • dtv: Fixed out-of-bounds memset in DVB-T2 frame mapper
  • fec: Move the definition of yp_kernel from the class into a temp variable in the main code.
  • fec: Fixing memset(..,0xCCCC,...); Coverity 1293309
  • fec: fixed printf("%d", size_t); Coverity 1293327
  • filter: fixing the pfb_arb_resampler's prototype to use the correct argument order.
  • filter: exporting IIR filter kernels from library.
  • grc: Remove duplicate block paths
  • grc,blocks,fft,filter: assigned categories to all blocks without any
  • grc,blocks,fft,filter: further checked all other gr-* of gnuradio
  • grc: Move the XInitThreads to "As Early As Possible"
  • pmt: moves the rest of the PMT constants from static globals to using get_ functions.
  • qtgui: use QPen::setWidthF for non-integer values.
  • qtgui: fixed a small bug in the time sink where it could miss a tag to display every now and then.
  • qtgui: fixed issue with QWT 6 and 6.1 changes.
  • runtime: possible bug fix for limited-run flowgraphs with message-only blocks.
  • runtime: better documentation for the set min/max output buffer functions.

Changelog for Release[edit]

GNU Radio release is available for download:

MD5 sum:

84bd2ba1ce04fb1489fd9422c41bb53d  gnuradio-

Git Shortlog of Contributions:[edit]

Bastian Bloessl <> (1):[edit]

  • digital: mm clock recovery - fix clipping w/ 2nd output

Harm te Hennepe <> (1):[edit]

  • Warn when the throttlers sleep time variable overflows

Henry Xu <> (1):[edit]

  • fix gr-digital/examples/ofdm/ error: option mismatch

James Saari <> (1):[edit]

  • wxgui: fixes a bug with wx > 3.0.

Jiří Pinkava <> (5):[edit]

  • analog: fix check of sample rate vs audio rate
  • runtime: do not return buffer created on stact #722
  • runtime: fix wait() race condition
  • runtime: QA for lock()/unlock() deadlock
  • runtime: fix deadlock in unlock() from Python #594

Johnathan Corgan <> (5):[edit]

  • Merge remote-tracking branch 'tom/qtgui/bug767' into maint
  • Merge remote-tracking branch 'tom/filter_design_pyqt4' into maint
  • Merge remote-tracking branch 'github/fix-qt-freq-sink-half-width' into maint
  • Merge remote-tracking branch 'pinkavaj/lock-fix-03' into maint
  • cmake: update revision to for maintenance release

Luke Berndt <> (1):[edit]

  • analog: Added squelch_base_cc.h

Martin Braun <> (3):[edit]

  • blocks: Fixed static init of matrix_multiply members
  • blocks: Fixed UDP source bug
  • modtool: Bugfix for info command, would confuse in- and out-of-tree components

Michael Dickens <> (8):[edit]

  • qtgui: clarify return value, to make some compilers happier.
  • filter: use correct function for argument type; where's std::abs when you need it to auto-type?
  • blocks: fixmsg handler pmt length / size comparison to be valid.
  • audio osx: change copying of a UInt32 type into a string by using memcpy instead of a direct pointer manipulation, to make some newer compilers happy.
  • audio osx: use memcpy instead of bcopy, to be consistent with the rest of GNU Radio.
  • blocks: use explicit type conversion to compare the same types.
  • pager & digital: add explicit type to constants that could be interpreted in other ways, to make various compilers happy.
  • logger: fix macro name in comments.

Scott Talbert <> (1):[edit]

  • Fix gnuradio for wxPython3/GTK+3

Sebastian Koslowski <> (1):[edit]

  • grc: fix undefined color in headless mode

Sreeraj Rajendran <> (1):[edit]

  • gr_filter_design: Issue #749; Replaced pyqt4 imports with numpy ones.

Tom Rondeau <> (8):[edit]

  • qtgui: removing all references to aligned volk calls -- which I thought that I had already done.
  • blocks: cleans up the docs for the multiply_matrix blocks.
  • Merge remote-tracking branch 'mbant/blocks/bug_742' into maint
  • blocks: message strobe shutdown fix.
  • docs: fixed labels and references in manual.
  • qtgui: fixes issue #767.
  • qtgui: fix broken QT tab widgets when trying to use more than five.
  • qtgui: fix max/min hold traces when using half width in time sink

Zero_Chaos <> (1):[edit]

  • Update FindQwt.cmake to support qwt6-qt4

fengzhe29888 <> (1):[edit]

  • trellis: bug fixed:adding a missing callback function set_K in trellis_encoder

Changelog for Release[edit]

GNU Radio release is available for download:

MD5 sum:

7872eaa48e466c31732addd32c19ba22  gnuradio-

Git Shortlog of Contributions:[edit]

Johnathan Corgan <> (9):[edit]

  • Updated revision for 3.7.6git development
  • wxgui: Fix wxgui breakage due to renamed variable
  • Update revision (again) for 3.7.6 release
  • Updated revision to 3.7.7git
  • Merge remote-tracking branch 'skoslowski/hier_block2_fixes'
  • Update revision for 3.7.6 release.
  • Merge remote-tracking branch 'martin/cmake/fixes' into maint
  • Merge remote-tracking branch 'gnuradio-wg-grc/maint_grcwg' into maint
  • cmake: updated revision to for maintenance release

Jonathon Pendlum <> (1):[edit]

  • qtgui: Fixed QT GUI Entry Widget eval error when using type 'Any'.

Martin Braun <> (1):[edit]

  • cmake: Less warnings, more info

Paul Garver <> (2):[edit]

  • gr-qtgui: Adding gr_spectrogram_plot script. Reads sample rate and data type from header and launches appropriate plotter
  • qtgui: Fix Y-Axis timescale issues on gr_spectrogram_plot/gr_spectrogram_plot_* by adding a function to set the time per fft. Scale should also update when

Sebastian Koslowski <> (6):[edit]

  • wxgui: white space fixes in
  • wxgui+grc: stop bypassing hier_block2 proxy class
  • grc: inter-domain coloring for messages
  • grc: fix virtual source resolution
  • grc: fix connection validation and error state display
  • grc: undo port type caching (fixes type controller)

Sylvain Munaut <> (2):[edit]

  • runtime: Add a timeout option on basic_block::delete_head_blocking
  • blocks: Fix pdu_to_tagged_stream CPU spinning using blocking with timeout

Tom Rondeau <> (5):[edit]

  • trellis: remove import of fsm_utils from for gr-trellis.
  • Merge remote-tracking branch 'garverp/offlineplotfixes'
  • qtgui: spectrogram offline plotter: changed title to just the data type read from the header. Also fixes issues with short and int support.
  • fec: no need for this forecasting.
  • filter: fixing having the delay of the resampler as a negative number, which I think I backed into from making the other computations work.

Changelog for Release 3.7.6[edit]

GNU Radio releases 3.7.6 and are available for download:

GNU Radio Live DVD 3.7.6:

MD5 sums:

dc5da27c3e37387384ed762e677d3594  gnuradio-
388d4af6c68e095f62dc4745b0f805c0  gnuradio-3.7.6.tar.gz

We'd like to thank the below contributors for their efforts:

  • Abhishek Bhowmick <>
  • Achilleas Anastasopoulos <>
  • Doug Geiger <>
  • Felix Wunsch <>
  • Jiří Pinkava <>
  • Johnathan Corgan <>
  • Marcus Müller <>
  • Martin Braun <>
  • Michael Dickens <>
  • Michael Ossmann <>
  • Nathan West <>
  • Nick Foster <>
  • Paul Garver <>
  • Philipp Aigner <>
  • Sebastian Koslowski <>
  • Stefan-Olt <>
  • Sylvain Munaut <>
  • Tim O'Shea <>
  • Tom Rondeau <>
  • Uwe Hermann <>
  • Will Code <>

Release is a bug-fix only maintenance patch following, and will be the last one for the 3.7.5 release. Release 3.7.6 incorporates all these fixes and adds significant new features.

GNU Radio Distribution and Mirror Sites[edit]

The GNU Radio Project has changed its distribution location for release and data files. The new location allows us to more easily add GNU Radio mirror sites, and we're in the process of adding two new ones in Europe. An announcement with more details will follow. (Hint: We expect to be distributing a lot more files...)

GNU Radio Live SDR Environment[edit]

The new live SDR image not only has GNU Radio 3.7.6 pre-installed, but has updated driver support from several SDR hardware vendors and new versions of many of the pre-installed GNU Radio-based applications.

Newly added with this release is gr-fosphor, a GPU-accelerated real-time spectrum analyzer display component from Sylvain Munaut. However, due to distribution restrictions, the live SDR environment only comes pre-installed with the Intel CPU OpenCL driver, and gr-fosphor will not run in GPU-accelerated mode even if one is available. It is possible, after converting the ISO image to a USB drive, to download, install, and configure additional OpenCL support.

Further details on the live SDR image are here:

Major Changes[edit]

There have been hundreds of changes in the GNU Radio software in this release, throughout the tree. Below is a summary of the more significant ones:

GNU Radio Companion[edit]

Sebastian Koslowski and the GRC Working Group continue to make many
updates to GRC. Important among these:

  • The default windowing system for new flowgraphs is now QT GUI. Existing flowgraphs that use WX GUI are not affected, and one can still choose to use WX GUI for new flowgraphs. However, we've formally deprecated WX GUI support, will not be making further updates to it, and will remove it in a future API version.
  • Introduction of port domains. GRC now allows blocks to declare a domain property for ports, along with code for managing and displaying their connections. This is primarily to support FPGA- and co-processor-offload hardware block development.

Stream Tag Performance Improvements[edit]

At GRCON14, Tim O'Shea, Doug Geiger, and Eric Blossom (!) reworked the stream tag dequeuing implementation in gnuradio-runtime, resulting in a very significant performance increase for flowgraphs using tagged stream blocks for burst-mode processing. More details can be found on Tim's blog:

Vector Optimized Library of Kernels (libvolk)[edit]

VOLK continues to undergo rapid development by the VOLK working group members, and has become mature enough to break off into its own project/package. Nathan West will be leading the effort to migrate libvolk into its own source code tree, repository and release cycle.

GNU Radio 3.7.6 will likely be the last release that will have libvolk directly included in its source code tree. However, we'll be closely coordinating with VOLK releases and distribution to ensure a smooth build process for GNU Radio.

QT GUI Display Support[edit]

With this release, GNU Radio's implementation of instrumentation display "sinks" and controls using the QT GUI windowing system has become our official way of creating application GUIs. As mentioned above, GRC has changed its default option for new flowgraphs to use QT GUI, and further development on WX GUI has stopped.

Bug fixes (, also in 3.7.6):[edit]

  • blocks: improved docs for repack_bits
  • blocks: fixed tag duplication issues in tagged_stream_multiply_length
  • blocks: fixed use of "not" for "!"
  • cmake: fixed Boost version detection for bad boost versions
  • digital: fixed false trigger bug in correlate_access_code_tag
  • digital: fixed byte-in, byte-out version of TSB correlate access code
  • digital: fixed issues with the constellation soft decoder decisions
  • fec: fixed bug in dummy decoder that shifted the samples by +1
  • filter: added documentation to using the rational resamplers
  • filter: fixed default filter for rational_resampler
  • grc: on Linux, respect x-terminal-emulator
  • grc: catch EOFError on fg exit
  • grc: fixed port type cache for empty types
  • grc: no tooltips for old GTK versions
  • qtgui: fixed issue of setting min/max when using qwt < 6.1.0
  • qtgui: fixed time axis unit updates in number sink
  • runtime: fixed 80s backref
  • runtime: fixed Python loggers not respecting settings in preferences
  • runtime: fixed fast_atan2f function for much higher precision
  • uhd: fixed UHD manual URLs

Change Log for Release[edit]

GNU Radio release is now available for download:

GNU Radio Live DVD for

MD5 sums:

bfd2116b344a949aacc3d7e2eff07642  gnuradio-
0c22ccd6f66c1aeeb7b54072077b53f2  ubuntu-14.04.1-desktop-amd64-gnuradio.torrent

This is a bug-fix only maintenance release for GNU Radio 3.7.5. For fixes and updates to the live DVD, please see:


Andy Walls <>
Bastian Bloessl <>
Doug Geiger <>
Johnathan Corgan <>
Martin Braun <>
Michael Dickens <>
Sebastian Koslowski <>
Tom Rondeau <>
Volker Schroer <>

Git log:[edit]

audio: Fixes string format bug in ALSA error messages.
blocks: Added callback to vector source GRC bindings
blocks: benchmark scripts using wrong includes.
blocks: convert asserts to throwing runtime errors in keep_m_in_n ctor.
blocks: fixed relative rate in keep_m_in_n. It's m-in-n, not n-in-m.
blocks: fixed up keem_m_in_n to handle relative rate and correct number of items in calls to work.
blocks: removed use of 'and', 'or', and 'not' for &&, ||, and !.
cmake: Additional search path for QWT include files.
cmake: OSS is not for APPLE or WINDOWS.
cmake: Use APPLE, not matching Darwin
cmake: modtool: On Apple only, set install name and use rpath correctly.
cmake: modtool: allow the use of a MODULES_DIR to specify where cmake modules are installed.
cmake: modtool: make sure our local CMake Modules path comes first.
cmake: modtool: update copyright date.
digital: adapt clock recovery QA
digital: applying same fix of the complex M&M clock recovery block as the float vrsion.
digital: clock recovery delete unused variables
digital: clock recovery fix relative limit
digital: clock recovery more verbose documentation
docs: Make explicit we only support Qt4
dtv: fix internal GR component dependencies
fec: qa: fix use of Bool type to be actual boolean Python values
fec: removed ber_tools; unnecessary and not exported. Replaced compber with call to VOLK's popcount.
filter: Fixes setting sample delay declaration for PFB synthesizer in GRC.
filter: Fixes setting sample delay declaration for the PFB channelizer and in GRC.
grc: disable port type caching on init
grc: fix lagging drag and drop
grc: fix missing xterm (Bug #725)
grc: fix search entry box for old PyGTK versions
grc: no icon in search entry box for old PyGTK versions
grc: update all flowgraphs when hiding port labels
grc: yet another py26 incompatibility
qtgui: fixed an issue with the number sink mistreating non-float inputs.
qtgui: increased max tabs from 5 to 20 in tab widget
runtime: fix installation location of the gr_log_default.conf log configuration file.
uhd: removed use of 'and', 'or', and 'not' for &&, ||, and !.

Changelog for Release 3.7.5[edit]

GNU Radio releases 3.7.5 and are available for download:

GNU Radio Live DVD 3.7.5:

MD5 sums:

8fc3a5edf1c5264b0c26071f3dd41763  gnuradio-
b4a917a548f41ce25c6c88f9bc864bca  gnuradio-3.7.5.tar.gz
b169c53dbf3b5f67509b76b89f9828aa  ubuntu-14.04.1-desktop-amd64-gnuradio.torrent

Release is a bug-fix only increment, while release 3.7.5 adds both bug fixes and new features within the 3.7 API compatibility series. We'd like to thank the below contributors for their efforts:

A. Maitland Bottoms <>
Andrew Davis <>
Carlos Naranjo <>
Clayton Smith <>
Jan Kraemer <>
Johnathan Corgan <>
Ludovic LANGE <>
Marcus Müller <>
Martin Braun <>
Michael Dickens <>
Nathan West <>
Nicholas Corgan <>
Nick Foster <>
Sean Nowlan <>
Sebastian Koslowski <>
Seth Hitefield <>
Stefan Oltmanns <>
Sylvain Munaut <>
Tom Rondeau <>

Major Changes: (3.7.5 only)[edit]

GNU Radio Companion (Sebastian Koslowski, Seth Hitefield)[edit]

The GNU Radio Companion, a graphical front-end for creating GNU Radio
flowgraphs, has been the focus of new features and usability
improvements for several releases now. Release 3.7.5 continues this
trend, adding snap-to-grid, (optional) hiding of port names, and
saving of console output. In addition, newly created or saved GRC
files will have version information embedded into them, to facilitate
better handling of GRC upgrades in the future.

CMake Build System (Michael Dickens)[edit]

The CMake build system has received a lot of attention this release,
though most of the changes are not visible to end users. In
particular, however, was correcting a long-standing serious bug in
performing parallel GNU Radio builds across multiple core processors.
This actually required a workaround to an existing CMake bug. End
users and package maintainers that compile GNU Radio from scratch can
now reliably take advantage of the full capabilities of their

QTGUI Graphics System (Tom Rondeau, Martin Braun)[edit]

GNU Radio has long included two separate graphics systems for
producing display output--one based on wxWidgets (gr-wxgui) and the
other based on the QT windowing system (gr-qtgui.) Until recently, of
the two, gr-wxgui has been the more full featured and mature. This
release has focused on reaching feature parity between the two, with
the goal of deprecating gr-wxgui in the future 3.8 release series and
eventual removal (someday) in 3.9.

To help developers understand how to begin updating their GRC
flowgraphs to use gr-wxgui, all of the supplied GRC examples in GNU
Radio 3.7.5 now use QT.

Beginning in release 3.7.6, the default option for new flowgraphs in
GRC will be to use QT, though of course developers may still use WX if

New Digital Television Component (Andrew Davis, Johnathan Corgan)[edit]

One of the very first applications for GNU Radio many years ago was an
implementation of the North American ATSC digital television standard.
Given processing hardware at the time, the receiver was not able to
demodulate in real time; one had to record raw RF as IQ samples to a
file, then play that file back through the demodulator at a much
slower rate.

Andrew Davis has done a partial rewrite and cleanup of this code base,
to the point where it is now possible on an Intel Core I7 processor to
receive, demodulate, and display in real time HD quality ATSC DTV.

GNU Radio 3.7.5 has a new top-level component, gr-dtv, which
incorporates this receiver code. Our plan is to do the same for the
ATSC transmitter codebase, then incorporate third party donated
implementations of DVB-T, DVB-S, and DVB-S2. In addition, as this is
done, we will take the opportunity to reuse as many existing blocks in
gr-analog, gr-digital, gr-filter, and gr-fec as possible in order to
help demonstrate the use of these blocks in complex radio standards.

The GNU Radio Live DVD[edit]

Concurrent with this release of GNU Radio 3.7.5 is a new,
built-from-scratch bootable live DVD, based on the Ubuntu 14.04
long-term support release. Hardware support is included for the Ettus
Research USRP product series, Great Scott Gadgets HackRF series, Nuand
bladeRF products, and RTL2832U-based USB dongles (RTLSDRs).

In addition, the PyBOMBS installer application was used to incorporate
a wide range of third party GNU Radio applications, including:

  • gr-osmosdr (v0.1.3), a set of blocks supporting various hardware SDRs and applications, and related dependencies
  • gqrx (v2.3.1), a narrowband SDR receiver application by Alexandru Csete
  • GNSS-SDR (g990112b9), a fully software-based GPS, Galileo, and GLONASS real time receiver
  • gr-air-modes (gcc0fa180), a Mode-S/ADSB aircraft telemetry receiver
  • gr-dvbs2 (g5d075c64), a software defined DVB-S2 digital television transmitter
  • gr-dvbt (g434494c1), a software defined DVB-T digital television transceiver
  • gr-ieee-80211 (g3495bd9c), an IEEE 802.11a/g/p transceiver
  • gr-ldpc (g63cca16b), an implementation of generic LDPC codecs
  • gr-lte (g1be09a0c), an implementation of a 3GPP LTE receiver
  • gr-radar (g0eb36fd0), the GNU Radio Radar Toolbox
  • gr-rds (gd11ece06), an implementation of broadcast FM radio RDS reception
  • gr-specest (g5113c1f4), an implementation of several spectral estimation algorithms
  • OpenLTE (g84dc50e7), an open source 3GPP LTE implementation

For additional details, please see:

Bug fixes: (3.7.5 and[edit]

blocks: fixed delay block cannot be initialization to prevent using a negative number
blocks: fixed exporting wavfile source/sink functions
blocks: fixed incorrect use of mutexes in file_meta_sink
build: added fstream include files for pedantic compilers
cmake: added parallel build fix to gr_modtool template
cmake: backported parallel build fix to maint branch
cmake: fixed component force on to work as expected
cmake: fixed small cmake issue if CMAKE_CURRENT_LIST_DIR is empty to treat it as an empty string
cmake: fixed to make FindPortaudio compatible with CMake 2.6
digital: fixed a bug in the mpsk SNR estimators where they were reporting 3 dB too high
digital: fixed error in HDLC framer rejecting packets when falsely determined to be "out of frame"
filter:: fixed relative_rate setup in pfb_channelizer
grc: only fix old message connections if both ends are valid
grc: python 2.6 compatibility fix
modtool: fixed a bug in makexml for int-type io signatures
modtool: removed RTLD_GLOBAL hack for swig in gr-modtool
qtgui: accounted for MSVC having _finite() instead of std::isfinite()
qtgui: bringing in line with required Qt 4.4.
qtgui: fixed a bug in the constellation plots that didn't allow us to reduce the number of samples.
qtgui: fixes a bug in the number sink to respect the update time.
qtgui: fixes a problem with the number sink when fed NaN or +/-inf.
runtime:: fix a circular dependency for older compilers
runtime:: removed use of ice for controlport rpc
uhd: Fixed minor issue with kwargs in amsg_source
uhd: fixed tagged stream block gap handling in usrp_sink
vocoder: fixed unitialized summed squared error
volk: add check for posix_memalign for OSs that do not directly set _XOPEN_SOURCE or _POSIX_C_SOURCE
volk: simplifies and fixes thread safety issue in volk_malloc/free.
wxgui: fixed GUI tabs not switching on WX GUI Scope sink channels on OSX

Change Log for Release 3.7.4[edit]

GNU Radio release 3.7.4 is available for download:

MD5 sum:

94e7115ad7b46b5bc9e0b336cf74d8ba gnuradio-3.7.4.tar.gz

This release incorporates a large number of new features and bug fixes, and represents a longer than usual development time between stable releases.


A. Maitland Bottoms <>
Andy Walls <>
Balint Seeber <>
Ben Reynwar <>
Bolin Hsu <>
Camilo Solano <>
Clayton Smith <>
Dimitri Stolnikov <>
Jared Boone <>
Jiří Pinkava <>
Johannes Schmitz <>
Johnathan Corgan <>
Kevin Reid <>
Marcus Müller <>
Mark Cottrell <>
Martin Braun <>
Michael Dickens <>
Nathan West <>
Nicholas Corgan <>
Nicholas McCarthy <>
Nick Foster <>
Peter A. Bigot <>
Philippe Gauthier <>
Sean Nowlan <>
Sebastian Koslowski <>
Seth Hitefield <>
Sylvain Munaut <>
Tim Kuester <>
Tim O'Shea <>
Tom Rondeau <>

Thanks for your effort and contributions.

Data Flow/Control Flow in GNU Radio[edit]

For many years, GNU Radio's main architectural feature has revolved around a high-speed data-flow design for processing large amounts of streaming data between signal processing blocks. This has made it well suited for real-time PHY implementations and for continuously received and transmitted over-the-air applications.

In these radio implementations, "control plane" logic has been primarily implemented outside GNU Radio, using general purpose programming constructs and communicating with and manipulating the GNU Radio portion of the applications through function calls.

Beginning in the 3.6 API series and even more so now in 3.7, we've been adding the internal features to allow more of a radio application's control logic to be also implemented directly in GNU Radio:

  • Stream tags allow attaching tightly-coupled metadata to data streams to communicate with downstream blocks
  • Asynchronous inter-block messaging allows event-based control within a flowgraph and into and out of a flowgraph.
  • PDU-based data flow and tagged stream blocks simplify working with packet-oriented data.
  • Messaging only blocks ("mblocks") are ideal for implementing event-driven state machines.

Release 3.7.4 has a large set of updates in this area, including:

  • Async-messaging based parameter updates for some blocks (instead of function calls)
  • Stream-tag based triggers for some data display blocks
  • Burst mode support for discontinuous transmission with gr-uhd
  • Stream tag and async messaging control interfaces for gr-uhd
  • Several new PDU-based versions of streaming blocks

Expect to see more overhauling of existing blocks in the DSP library to take advantage of these capabilities, as well as incorporating them as needed into newly developed signal processing blocks.

Merging of FEC API into gr-fec[edit]

The new FEC API is a brand new concept in GNU Radio to help facilitate the use of forward error correction techniques in modulators and demodulators. Due to the widely varying styles of interfaces and data formats required by different FEC techniques as well as handling of packetizing and other transmit/receive issues, we have defined the FEC API to describe the different formatting techniques required for each type of encoder or decoder.

We therefore design an FEC API encoder or decoder as an object that is /not/ a GNU Radio block. We then create a proper deployment that is a GNU Radio block and fits into the flowgraph. The deployment handles the connections to the flowgraph and the appropriate way to call the encoder or decoder object to process the data. We expect different deployments will be needed for different purposes, but to help with a great number of possible situations, we have created deployments to handle the basic cases of dealing with continuous streaming data, tagged-stream data, and asynchronous data via message passing of PDUs.

Some more information on the FEC API can be found here:

And the API and the deployment concept and structure are documented in the GNU Radio manual:

Addition of new ØMQ wrapper blocks: gr-zeromq[edit]

ZeroMQ is an intelligent transport layer for applications built as a thin message-passing wrapper around TCP, IPC, and in-memory transports. A good introduction to its capabilities is found here:


"It gives you sockets that carry atomic messages across various transports like in-process, inter-process, TCP, and multicast. You can connect sockets N-to-N with patterns like fan-out, pub-sub, task distribution, and request-reply."

Release 3.7.4 incorporates new flowgraph sources and sinks which allow attaching ZeroMQ sockets to GNU Radio streaming ports.

This is a work-in-progress. Right now, blocks exist for the PUSH/PULL, PUB/SUB, and REQ/REP messaging patterns described in the above guide, connecting to streaming data ports. This facilitates distributing signal processing tasks among multiple applications in a more robust way than can be accomplished our existing TCP and UDP sinks:

  • ZeroMQ sockets are an an abstraction above several transport types, allowing the developer to change simply by specifying a different endpoint identifier.
  • ZeroMQ network transports are self-connecting and self-healing, allowing endpoint start up in arbitrary order and recovery from network outages
  • More complicated data distribution networks can be set up other than single point to single point
  • ZeroMQ is message based, guaranteeing all-at-once delivery to the remote endpoint of data, simplifying reception logic
  • Future versions of ZeroMQ support will include the use of authenticated and encrypted connections.

During the 3.7.5 development process, we expect to incorporate these interfaces into async messaging blocks and to tunnel stream tags through the existing blocks.

Some experimental work is also going on with these blocks that would allow a remotely executing GUI display to interact with a GNU Radio flowgraph, with display data and control flow being handled by ZeroMQ. This would result in a GUI that would appear identical whether the actual signal processing was occurring locally or not.

Improvements to the GNU Radio Companion[edit]

GRC continues to see a lot of usability improvements coming out of the GRC Working Group:

  • The block search path is now output on startup, making it easier to debug "missing block" problems with out-of-tree modules
  • The block properties dialog box is now tabbed, moving advanced features and documentation into their own areas and simplifying the main parameter area
  • When opening flowgraphs with blocks that are missing, dummy blocks are displayed, with their connections intact
  • It is possible now to toggle on and off the display of disabled blocks
  • The validation of block parameters is delayed until tabbing out of a block field, eliminating the character-by-character screen updates

and sluggishness

  • A new tools menu has been added, with the first entry the ability to invoke the GNU Radio Filter Designer application
  • The log window can now be scrolled and cleared
  • Individual blocks can now have custom thread names assigned via their parameter blocks (see gr-runtime discussion)

Improvements to gr-qtgui[edit]

We are continuing to improve the support and feature set of the QTGUI plotting blocks, which will become a major focus in 3.7.5. For this release, we have fixed a few issues.

While the blocks all have a "name" field, this field didn't actually do anything graphically. Now, we use this to add a title to the graph. If "name" is blank, which is the new default, then there will be no title and no vertical space taken up by a title. Setting a name will then show this as a title on the top of the graph.

We have added an input and output message port to the QTGUI sink, frequency sink, and waterfall sink. The input message port 'freq' takes a message as a command pair, pmt::cons(pmt::intern("freq"), pmt::from_double(frequency)), and uses this to adjust the center frequency of the plot. The output message port is activated whenever the plot is double-clicked by the user and produces the same command pair message format as the input where the frequency is whatever frequency the mouse pointer was on when clicked.

The use of the PMT pair command format is done for compatibility with the command format used in the gr-uhd blocks. Further, we can loop-back the output message port to the input message port to enable a "click-to-tune" feature where double-clicking on the graph will recenter the graph at that frequency.

The freq_xlating_fir_filter was outfitted with an input message port to work with this concept so that we can tune a receiver by double-clicking on the frequency or waterfall plot.

Modifications to the GNU Radio runtime[edit]

Each flowgraph block thread can now be given a custom name, either in code or via GRC. This makes debugging via stack traces in GDB or through process display tools like htop much easier. By default, the thread name is the block name and instance number.

Several improvements were made to the pmt library for dealing with vectors of data and dictionaries.

GNU Radio Build System[edit]

A new build option, ENABLE_STATIC_LIBS, add building static libraries to the existing build. This is intended to facilitate development on platforms that require static linking.

VOLK Library Updates[edit]

  • Compile time support for disabling ORC (cmake option -DENABLE_ORC)
  • Add support for forcing generic proto-kernels to run (through environment variable VOLK_GENERIC)
  • VOLK QA buffers changed to use volk_malloc
  • Add a binary slicer kernel with AVX and SSE implementations
  • Add a new rate 1/2, K=7 convolutional decoder kernel derived from Spiral

Important Bug Fixes and Additions[edit]

  • Fixed shutdown in message passing apps
  • Fixed PortAudio detection during configuration
  • Fixed QWT detection during configuration
  • Fixed gr::analog::agc3 volk kernel alignment
  • Fixed/improved support of audio on OSX
  • Improved performance on network-based sources and sinks
  • Fixed pfb_arb_resampler tag propagation
  • Fixed segfault in fast_atan2f
  • Updated codec2 support to latest standard and support all rates
  • New HDLC codec blocks in gr::digital

Change Log for Release 3.7.3 and[edit]

The release is a bug-fix only release, accumulating all the fixes that have occurred since the release.

Release 3.7.3 contains all of the above, and new features as well that are compatible within the 3.7 API.

Contributors to this release[edit]

We'd like to thank the large list of people below for their contributions to the GNU Radio Project:

  • Alistair Bird <>
  • Artem Pisarenko <>
  • Bastian Bloessl <>
  • Chuck Swiger <>
  • Clayton Smith <>
  • Doug Geiger <>
  • Ethan Trewhitt <>
  • Florian Franzen <>
  • Jakub Zy <>
  • Johannes Schmitz <>
  • Johnathan Corgan <>
  • Julien Olivain <>
  • Kevin Zheng <>
  • Marcus Müller <>
  • Martin Braun <>
  • Michael Dickens <>
  • Moritz Fischer <>
  • Nathan West <>
  • Nicholas Corgan <>
  • Nick Foster <>
  • Philip Balister <>
  • Ron Economos <>
  • Roy Thompson <>
  • Sebastian Koslowski <>
  • Steve Glass <>
  • Steve Haynal <>
  • Steve Markgraf <>
  • Sylvain Munaut <>
  • Tim O'Shea <>
  • Tom Rondeau <>
  • Volker Schroer <>

h2: libvolk Library Improvements

This release cycle has seen a large amount of work done to the VOLK library, through efforts led by Nathan West and the VOLK Working Group.

Compile-time improvements were made to support Windows, better clang support, and saving compiler flags. Compiler flags and other build-time variables are preserved and can be accessed through a new utility app, volk-config-info that is very similar to gnuradio-config-info. The QA had several fixes and improvements to fix false positives for negative floating point results and using EVM for complex results rather than checking real and imaginary parts as a single stream of floats. The QA and volk_profile now report results in ms, and adds a benchmark mode (-b) that runs all kernels even if
there is only one protokernel available.

Several kernels had unaligned protokernel copied from aligned versions, and others had bug fixes. The unused spu_lib directory of protokernels was removed. This list of kernel modifications includes:

  • 32fc_s32fc_x2_rotator_32fc (bug fixes in all protokernels)
  • 32f_x2_sum_of_poly_32f (add AVX protokernels)
  • 32fc_32f_multiply_32fc (add aligned avx protokernel)
  • 32fc_32f_dot_prod_32fc (add AVX protokernels)
  • 32f_invsqrt_32f (add AVX protokernel, tuning generic q_rsqrt))
  • 32fc_x2_dot_prod_32fc (add unaligned protokernels, performance tuning)
  • 8i_convert_16i (remove duplicate entry)

The VOLK core library saw three notable fixes. First, the machine definitions for ARM were split in to hardfp and softfp. Second, get_machine was patched for thread safety. Finally, the addition of volk_malloc and volk_free, replacements for similar allocators such as posix_malloc, fftw_malloc, etc. This should be used whenever creating a buffer for use in VOLK.

A new regex option (-R) to volk_profile allows running profiling on kernels matching the given regex. The volk_config is not written when using a regex. The benchmark mode is now implicitly true.

VOLK modtool now brings in (and deletes) ORC protokernels when adding or removing kernels by name.

The following kernels have unaligned protokernels copied from aligned versions:

  • 32fc_32f_dot_prod_32fc
  • 16i_32fc_dot_prod_32fc
  • 32fc_x2_dot_prod_16i

Updates and Bug Fixes (by component)[edit]


  • Improved unicode support in PMTs
  • Improved support for message passing limits
  • Fixed fast_atan2 float==0 check.
  • Performance counters are now compiled in by default but not turned on
  • Added ability to output flowgraph in dot format
  • Added gr.tag_utils.python_to_tag for improved tag generation in Python
  • Added get_tags_in_window helper function


  • Improved support for cross-compiling setups
  • Improved support for OS X builds
  • Improved support for ICE and conflicts between GCC and ICE versions
  • Moved location of config.h in build tree
  • Fixed definition of GR_CTRLPORT in config.h


  • Better handling of XML and errors
  • Message connections indicated by dashed lines
  • Allow varying number of message ports
  • Fixed typos and errors finding blocks in category tree
  • Fixed init process of WXGUI graphs causing crash


  • Added gr::blocks::abs_xx set of blocks
  • Allow gr::blocks::null_source|sink to use multiple streams
  • Allow gr::blocks::sub_xx to take a single input to invert the sign
  • Change gr::blocks::tagged_stream_to_pdu to be a tagged-stream block


  • Added lookup table in convolution encoder for performance improvement


  • Replaced fftw malloc with volk_malloc to correct alignment issue
  • Fixed arbitrary resampler problem when using rate-changing block upstream
  • Improved support for PFB blocks (setters and getters)
  • Fixed memory leaks in PFB blocks
  • Fixed compiler and Coverity warnings
  • Cleaned up unused adaptive filters, magic numbers in firdes
  • Added _ccf version of the FFT filter
  • Use fft_filter inside pfb_decimator


  • Added support for >1 jack port, various sizes of jack buffers
  • Significant improvements to audio support under OSX


  • Fixed issues to make using digital mods/demods easier
  • Fixed bugs with differential parameters
  • Make better use of pre_diff_code
  • OFDM and packet header fixes


  • Make use of GnuradioConfig for OOT modules


  • Added support for QWT 5.2 - 6.1
  • Added fixes for building without Python support
  • Removed QT3 left-overs
  • Use volk_malloc and volk dispatchers
  • Fixed using QT Timer that was using too much CPU
  • Added ability to set qss style sheet as a preference
  • Added ability to set the graphics style rendering of the qtgui sinks


  • Fixed GSM GRC bindings and updated docs
  • Fixed codec2 bindings and updated docs


  • hfx improved for new UHD methods
  • Allow click-to-tune on WX FFT plots
  • uhd_rx_cfile can write metadata files


  • Improved docs for analog component
  • Typos and cruft removed
  • New logo!


This is a bug-fix only release with no new features, rolling up issues
that have been corrected since the 3.7.2 release.


Alistair Bird <>
Johnathan Corgan <>
Martin Braun <>
Michael Dickens <>
Philip Balister <>
Sebastian Koslowski <>
Sylvain Munaut <>
Tim O'Shea <>
Tom Rondeau <>

The bug fixes are mostly minor changes scattered throughout the tree.
However, a few issues were important enough to get corrected in a
maintenance release.

An issue was corrected in the UDP source and sink to allow operation over
localhost when no other network interfaces are present, which was causing
test failures in some environments. See issues #565 and #613.

Several longstanding issues in the VOLK library when operating on the
ARM architecture and elsewhere were corrected. See issues #569, #582,

  1. 583, and #614. In addition, some fixes were also needed to work with

MacOSX 10.9.

The new QT Time Sink feature allowing triggering on stream tags had an
issue when there were no stream tags at all; this was fixed. See
issue #615.

The OFDM Header/Payload Demuxer block was throwing exceptions when
receiving a payload length that exceeded the maximum buffer size, this
was fixed to discard the packet instead. See issue #615.

The new GNU Radio Companion search feature had a remaining bug fixed
that was preventing the use of certain letters in the search entry.

The overall shortlog follows:

Alistair Bird (1):

  • blocks: fix pdu_to_tagged_stream when saving leftover items

Martin Braun (6):

  • runtime: fixed case where tagged stream blocks produce zero length tags
  • digital: HPD fixes (burst ID tags are no more propagated; buffer sizes are halved to est. max output size)
  • modtool: bugfixes for in-tree operation (include paths, license, cmake editing)
  • digital: fix CID 1090058 and 1043272 in constellation
  • digital: Fix CID 1043268 and 1043271
  • modtool: dashes no longer allowed in modnames at all (fixes #619)

Michael Dickens (1):

  • cmake: fixes for Apple (specifically; clang generically) to handle some missing AVX instructions.

Philip Balister (4):

  • : Fix incorrect use of sizeof().
  • : Address Coverity sizeof not portable warnings.
  •, : Address Coverity sizeof not portable warnings.
  •, : Fix uninitialized pointer.

Sebastian Koslowski (2):

  • blocks: allow extra header chunks in wav_file_source
  • grc: fix search entry focus (again)

Sylvain Munaut (2):

  • cmake: proper handling and exporting of ALL include dirs and libraries.
  • cmake: patch that fixes scoping issue by re-declaring the variable in the parent scope.

Tim O'Shea (1):

  • cmake: ensure GrPython is included before using methods from it in FindICE.cmake - needed when including only FindICE from OOT modules

Tom Rondeau (18):

  • runtime: minor swig fix of declaring std_string.i. Need for OS X 10.9.
  • digital: fixed simple warning on ofdm code.
  • blocks: updated UDP source to handle no network connections by allowing use of loopback device. Also fixed an infrequent problem on shutdown before the thread exited.
  • filter: fixed missing copyright and import sys in examples
  • fft: optimization; bug fixes for kaiser window and added windows to win_type.
  • qtgui: fix for issue #615.
  • volk: naming error between orc file name and kernel name.
  • volk: explicitly casting tolerance to float or unsigned int for passing to fcpmare or icompare in QA tests.
  • blocks: loosen restriction on damping factor in control_loop class.
  • digital: updated qa_mpsk_receiver to have similar tests in test01 and test02.
  • digital: on 32-bit machines when M=4 using single-precision float was causing k=1. Using double-precision calculation here to avoid possible confusion and errors
  • docs: fixed doxygen warning.
  • docs: fixed exploring-gnuradio examples and added to doxygen manual.
  • pmt: added class comparator to rename comperator (to be removed in 3.8).
  • blocks: prevent alowing more input streams than this block uses.
  • docs: fixed/modifying/adding documentation for blocks a-l.
  • digital: fixed warnings about order of initializing variables in constellation.


Release 3.7.2 is a significant new feature and bux fix release, while contains only the bug fixes since 3.7.1.

These releases are the result of contributions from 22 developers in
the GNU Radio community:

Alistair Bird <>
Bastian Bloessl <>
Ben Hilburn <>
Douglas Geiger <>
Jaroslav Škarvada <>
Johnathan Corgan <>
Louis Philippe Lessard <>
Marcus Müller <>
Mark Cottrell <>
Martin Braun <>
Mathieu Rene <>
Michael Berman <>
Michael Dickens <>
Moritz Fischer <>
Nathan West <>
Nicholas Corgan <>
Philip Balister <>
Rick Spanbauer <>
Sebastian Koslowski <>
Sylvain Munaut <>
Tim O'Shea <>
Tom Rondeau <>

GNU Radio Runtime/Framework updates[edit]

Work continues on fleshing out the new asynchronous messaging
capabilities in GNU Radio, with additional functionality available in
Python flowgraphs, several blocks getting message ports to accept
parameter changes (noted below), better support for messaging only
blocks (mblocks) that have no streaming ports, and several bug fixes.

Stream tag handling and propagation has been improved in cases where
DSP blocks introduce a signal delay. Block authors/users are able to
declare an effective delay value to the runtime, and stream tags will
have their position adjusted by the runtime when tags are
automatically propagated through the block. In addition, for blocks
derived from gr::block directly and have no fixed input/output item
ratio, the internal relative rate is dynamically adjusted according to
actual usage and stream tags are propagated appropriately.

The performance monitoring system has a new counter that tracks
accumulated work function time, and the high_res_timer functions are
now exported to Python.

GNU Radio Companion Updates[edit]

The GRC Working Group that formed at GRCON13 in October established a
roadmap for GRC:

Led by Sebastian Koslowski, several new features and some clean up
and bug fixes have been merged for release in 3.7.2.

Searching for blocks on the right side GRC menu has always been
problematic. The search is now implemented with a search box above
the category tree that is accessed via menu, Ctrl-F, or '/'. This box
is persistent, and typing in it filters the category tree in-place,
allowing one to note which category the block is in. This also fixes
the long standing bug where GRC would crash if the search box was
opened and the category tree was scrolled.

Tim O'Shea added the ability to set max_output_buffer on a per-block
basis inside GRC parameter blocks.

Correlate and Sync block (Tom Rondeau)[edit]

As a result of work begun at GRHACK13 in June, we have added a new
block called gr::digital::correlate_and_sync. This block is designed
to search for a preamble by correlation and uses the results of the
correlation to get a time and phase offset estimate. These estimates
are passed downstream as stream tags for use by follow-on
synchronization blocks. The tags are:

  • time_est: the estimate of the timing offset in fractions of samples.
  • phase_est: the phase estimate in radians (from 0 to 2pi).
  • corr_est: the value that triggered the correlation. Could be used

downstream to estimate the quality of the time/phase estimates.

These tags are located on the sample index where the correlation peak occurred.

The correlate_and_sync block is designed to aid in the processing of
burst modems where the timing and phase acquisition loops can get out
of sync when there is no transmission.

Currently, the pfb_clock_sync_ccf looks for and, if found, uses the
time_est tag to set its current value of the sample timing. By doing
this, we prime the clock synchronizer to be very close to the correct
sample time, which allows the loop to quickly converge and track
through the rest of the packet.

The Costas loop block (costas_loop_cc) looks for and, if found, uses
the phase_est tag. The loop uses the phase estimation to set its
internal phase value. The frequency estimation of the loop is left as
is. This again gets the loop very close to the real phase offset and
allows the loop to acquire and track the actual phase offset quickly.

There are three GRC programs that were created to test and explore the
use of this block. gr-digital/examples/demod/ is
a full simulation that generates burst PSK packets with a known header
and uses the correlate_and_sync block along with the
pfb_clock_sync_ccf and costas_loop_cc block's to generate and use the
correlation-based tags. Noise, timing offset, and frequency offset can
all be adjusted to test the limits and behavior of the receiver. If
the bottom disabled blocks are enabled, this example will also show
the original bits of the packets against the received and recovered
packets. Because the timing synchronization has a non-consistent
consume/produce model, the delay between the transmitter and receiver
is not constant, especially when a timing offset is applied. The
initial delay value is correct for the very start of the simulation
but will quickly walk away and must be manually tuned to keep the
streams synchronized.

The uhd_corr_and_sync_tx and _rx are designed for OTA testing. They
allow us to set the center frequency and gains (both digital and
analog) of both receiver and transmitter.

QTGUI Time Sink Improvements (Tom Rondeau)[edit]

Also derived from work begun at GRHACK13, time sinks from gr-qtgui now
display stream tags as a "key: value" on the sample they are
associated with. This behavior can be turned off using the drop-down
context menu (middle mouse button) and can be selected for a given
input stream. By default, all tags are shown on all input streams.

Time sinks also include triggering features. The triggering parameters
can be set in the Properties box of the sink or by using the drop-down
context menu (middle mouse button). The triggering features include
setting the mode to "free running," "auto trigger," "normal trigger,"
and "tag trigger." The auto and normal trigger modes are done based on
the slope of the line (positive or negative) crossing a set threshold
level. Tag triggering is done off a tag's key and will trigger if that
key is seen. Triggering is done on the left-most side of the screen by
default (delay = 0). A delay can be set from 0 to the end of the
visible timeline. If set outside this range, it is automatically
restricted to these bounds. The input channel to trigger off can also
be set.

Channel Model Additions (Tim O'Shea)[edit]

Three new channel model blocks have been added:

  • gr::channels::cfo_model implements a bounded random-walk on center

frequency offset

  • gr::channels::sro_model implements a bounded random-walk on sample

rate offset

  • gr::channels::dynamic_channel_model is a hierarchical block that

combines AWGN, sample rate offset, center frequency offset, Rayleigh
and Rician fading, channel impulse response, and power delay profile

OFDM Reference Code Updates[edit]

Martin Braun continues to improve the new OFDM reference code released
in 3.7.0, with new features such as scrambling and header error
checking. This is an area of rapid development and feedback on usage
is encouraged.

Digital Filter and Windows Cleanup (Tom Rondeau)[edit]

The code for implementing window functions has been overhauled, to
remove duplicated code between gr::fft and gr::filter, and fix a few

Coverity Scan Bug Fixes[edit]

In July this year, Philip Balister set GNU Radio up to begin using the
Coverity static analysis tool, and an announcement went out on the
discussion list in October:

Since then, 25 identified bugs have been fixed and closed by several
contributors. If you are looking for a way to get involved in GNU
Radio, this is a great place to start.

Other new blocks or block updates:[edit]

  • gr::blocks::stream_to_tagged_stream is a new block to add periodic

length tags, allowing uses like feeding file sources into tagged
stream blocks. (Martin Braun)

  • gr::blocks::file_sink now has the ability to append to a file,

making it easier to use with IPC instead of files. (Bastian Bloessl)

  • gr::blocks::chunks_to_symbols can now receive symbol table updates

via async messages (Tom Rondeau)

  • gr::blocks::tag_debug can now filter/display single keys (Tom Rondeau)
  • gr::blocks::repack_bits can now update input and output values via

async messages (Tom Rondeau)

  • gr::digital::constellation_soft_decoder is a new block that produces

soft decisions as floats instead of hard decisions (Tom Rondeau)

  • gr::digital::constellation_modulator is a new block that uses a

constellation object for configuration (Tom Rondeau)

  • gr::digital::constellation_receiver now has ControlPort interfaces

and can receive a new constellation configuration via async message
(Tom Rondeau)

  • gr::digital::costas_loop can now be monitored remotely by

ControlPort. It can also now receive an initial phase offset
estimate via an upstream added stream tag. (Tom Rondeau)

  • gr::digital::pfb_clock_sync can now receive an initial timing offset

estimate via an upstream added stream tag (Tom Rondeau)

  • gr::digital::additive_scrambler now supports stream tags (Martin Braun)

VOLK Library Updates[edit]

Improved support for detecting and using AVX instructions was added,
and a number of toolchain related bugs were cleaned up. Tim O'Shea
added a new inverse square root kernel and speedups for

Bug Fixes[edit]

There were too many bug fixes to list them individually; those
interested may look at the git log changes between tags v3.7.1 and

$ git shortlog v3.7.1...v3.7.1.1

ChangeLog v3.7.10.1[edit]

This is the first bug-fix release for v3.7.10


The following list of people directly contributed code to this release:

Major Development Areas[edit]

This contains bug fixes primarily for GRC and DTV.


Catch more exceptions thrown by ConfigParser when reading corrupted grc.conf files.

Fix the docstring update error for empty categories.

Fix grcc to call refactored GRC code.

Convert initially opened files to absolute paths to prevent attempting to read from tmp.

Move startup checks back in to gnuradio-companion script from grc/


Fix a segfault that occurs from out-of-bounds access in dvbt_bit_inner_interleaver forecast by forecasting an enumerated list of all input streams.

Fix VL-SNR framing.


Enable update rate in block_recovery_mm blocks to keep tags close to the the proper clock-recovered sample time. Tag offsets will still be off between calls to work, but each work call updates the tag rate.


Fix the derivative calculation in fmdet block.


Fix linking GSL to gr-fec.

Use gnu99 C standard rather than gnu11 standard to maintain support for GCC 4.6.3.


Minor spelling and documentation fixes.

Fix uhd_siggen_gui when using lo_locked.

ChangeLog v3.7.10[edit]

This significant feature release of the 3.7 API series, and incorporates all the bug fixes implemented in the maintenance release.


The following list of people directly contributed code to this release:

Major Development Areas[edit]

This release sees the integration of a number of long-time development efforts in various areas of the tree, including GRC, new packet/burst communications features for gr-digital, new standards implementations for gr-dtv. In addition, it incorporates all of the bug fixes released as part of the maintenance release.


The GNU Radio Companion development environment continues to undergo rapid development and refactoring. The tools and workflow have been improved in the following ways:

  • Variable explorer panel and option to hide variables from canvas
  • Nicer block documentation tool-tip and properties dialog tab
  • Screenshots can have transparent background
  • Darker color for bypassed blocks
  • Select all action
  • Block alignment tools
  • Added bits (unpacked bytes) as a data type
  • Show warning for blocks flagged as deprecated
  • Remove [] around categories in the block library
  • Separate core and OOT block trees via the category of each block

The refactor of GRC continues. This should be mostly feature neutral and make it easier for new contributors to come in and make useful changes. Part of this is deprecating blks2 and and xmlrpc blocks and moving them to components where they would be expected to be found rather than the GRC sub-tree.

Packet Communications[edit]

A long-time feature branch developed by Tom Rondeau has been merged into the tree, implementing new blocks and methods for packet communications. This is intended to replace much of the older, overlapping, and Python-only packet-based code that already exists. As this code matures, we will be marking this older code as deprecated with the plan to remove it in the new 3.8 API.


DTV has new transmitters for DVB-S and ITU-T J.83B 64QAM. New support for DVB-S2X VL-SNR code rates, modulation, and framing for AMSAT are also available.

A significantly improved OFDM symbol synchronizer was implemented for the DVB-T receiver (Ron Economos, Federico La Rocca).

Other Feature Development[edit]


Clear tags and reset all item counters when merging connections between blocks, which prevents bad values from being propagated on lock/unlock operations.

Blocks always set their max_noutput_items before a flowgraph starts if it hasn't already been set.

Added some options to gnuradio-config-info that prints information about the gnuradio prefs file. The old customized preference file reader is replaced with a boost program options object.

QT GUIs[edit]

The QT GUI widgets can now toggle axis labels and the frequency sink has a new feature to set the y-axis label. This could be useful for changing units on calibrated measurements.

The QT GUI Entry widget has a new message port that emits a message containing the new text whenever editing is finished.

QT widgets recently had an optional message port to plot PDUs. This release adds a feature to plot the tag metadata contained in the PDU.

A new example shows how to build a C++ only QT based application.


New QA for tagged stream correlate access code blocks further cement how these blocks should be behaving.

16QAM is now available from the GRC constellation object dialog drop down menu.


The frequency modulator now has sensitivity exposed through controlport.

New FM pre emphasis and de-emphasis filters. The previous filters were effectively all-pass filters. There is a very nice write up on the new filters in gr-analog/python/analog/

A new message port to sig_source is available that can set signal frequency with the same convention as gr-uhd usrp_source.


Use the max_noutput_items in start() to allocate FFT buffers for the PFB decimator rather than always allocating/freeing a buffer in work().


Add a run-time accessor and setter for interpolation of repeat blocks.

vector_sink.reset() clears tags now

Add accessors for the vector_source repeat flag so it's settable outside the ctor.

Fix tuntap devices MTU size. Previously MTU size argument was used to allocate correct buffer size, but didn't actually change the MTU of the underlying device.

The UDP source block can read gr prefs file for the payload buffer size or default to the existing value of 50.

Yet another block making use of VOLK: the divide_cc block is now 10x faster on some machines.


New argument in usrp_source initializer to start streaming on the start of a flowgraph which defaults to true (the existing behavior).

Add a clock-source argument to uhd_fft.

A new message command handler for the usrp_source block will trigger a time and rate tag to be emitted.

Added support for importing, exporting, and sharing LOs.


Refactor audio sink for windows with multiple buffers to prevent skipping.


Add an option to set the copyright field for new files.

New modules will detect PYBOMBS_PREFIX and install to the defined location.

Add versioning support for OOT modules by default.


Enable controlport for static builds.

Enable GR_GIT_COUNT and GR_GIT_HASH environment variables for extended versioning number for packagers.

We explicitly set the C/C++ standards to C+98 and gnu11 rather than use the compiler defaults since many compilers are moving to C+11 by default. Incidentally this caused minor breakage with a subtle VOLK API fix in gr-dtv which was also fixed.

Fixed finding GNU Radio + VOLK in non-standard prefixes when compiling OOT modules.



Contributors this release:

Alexandru Csete <>
Andrej Lajovic <>
Andrew F. Davis <>
Clayton Smith <>
Doug Geiger <>
Jiri Pinkava <>
Johnathan Corgan <>
Josh Blum <>
Julien Olivain <>
Marcus Müller <>
Michael Dickens <>
Mike Jameson <>
Miklos Maroti <>
Nathan West <>
Nicholas Corgan <>
Nicholas McCarthy <>
Philip Balister <>
Roy Thompson <>
Stefano Banti <>
Tim Newman <>
Tim O'Shea <>
Timo Lindfors <>
Tom Rondeau <>
Volker Schroer <>

Important new features[edit]

GRC Bus Ports (Nicholas McCarthy)

Bus ports in the GNU Radio Companion (GRC) allow ganging block input
or output ports into a single port for display and connections. This
simplifies flowgraph entry when dealing with blocks that work with an
arbitrary number of streams.

For further information, see:

Minor features/updates (3.7.1):[edit]

atsc: created and removed obsolete scripts (Andrew Davis)
blocks: added interleaved_char_to_complex block (Tim O'Shea)
blocks: Added QA code for all ControlPort probe types. (Tom Rondeau)
blocks: adding a complex VCO block. (Tom Rondeau)
blocks: adding a tags strobing block to help test tag stream. (Tom Rondeau)
blocks: modified tag_debug block to publish number of tags queued (Tom Rondeau)
build: Windows packages automatically include compiler runtime DLLs (Nicholas Corgan)
build: installing all cmake files into lib/cmake/gnuradio directory (Tom Rondeau)
channels: Added hardware impairments blocks from Matt Ettus' GRCon11 talk (Tom Rondeau)
channels: added second channel model to dynamically change freq/timing offsets. (Tom Rondeau)
channels: updated quantization demo for new histogram constructor (Tom Rondeau)
channels: using new qtgui histogram sink in quantization demo. (Tom Rondeau)
digital: added lo_offset and external clock utilisation to OFDM (Mike Jameson)
digital: added lo_offset and external clock source to narrowband examples (Mike Jameson)
digital: delay ofdm benchmark_tx exit to allow TX to empty (Mike Jameson)
filter: added optional second input that dynamically adjusts resampling rate (Tom Rondeau)
grc: Sorts the block tree column at start-up. (Julien Olivain)
grc: Remove *out from sinks, *in from sources (Marcus Müller)
grc: allow set_min_output_buffer on any blocks that have output ports (Tim O'Shea)
grc: added special variable objects to represent constellations (Tom Rondeau)
qtgui: Added histogram sink (Tom Rondeau)
runtime: added tag_propagation_policy_t to block_gateway (Marcus Müller)
runtime: Improved display handling for gr-ctrlport-monitor (Tim Newman)
runtime: Added probes for byte, short, and int data types (Tom Rondeau)
runtime: allow setting thread affinity to all blocks under a hier_block2 (Tom Rondeau)
uhd: squashed per-channel stream support (Josh Blum)

Bug Fixes (3.7.1,[edit]

analog: agc3_cc: Fix uninitialized variable error. (Philip Balister)
analog: agc3_cc: bug fix for input values of zero (Tim O'Shea)
atsc: Fix bugs in atsc_field_sync_mux (Clayton Smith)
blocks: expose set_period callback for blocks.message_strobe in GRC (Tim O'Shea)
blocks: moved type conversions to use Volk dispatchers. (Tom Rondeau)
blocks: set file_descriptor_source default to repeat=false (Tom Rondeau)
build: don't install controlport config file in two places (Tom Rondeau)
build: fix for finding and handling ICE 3.5 or 3.4 (Tom Rondeau)
build: fix to allow reconfiguring install prefix (Johnathan Corgan)
build: fixed some differences between handling Ice 3.4 and 3.5. (Tom Rondeau)
build: fixes FindQwt cmake module to check that Qwt is >= 5.2.0. (Tom Rondeau)
build: force detection to Python 2.x only (Julien Olivain)
build: more robust FindICE operation with multiple ICE installs (Tom Rondeau)
build: require Python v2 for build configuration (Jiri Pinkava)
digital: fix digital.cpmmod_bc XML for new constants location (Johnathan Corgan)
digital: fix for OFDM serializer QA after FFT block fix (Johnathan Corgan)
digital: fix for moving average filter in OFDM equalizer. (Stefano Banti)
digital: ofdm benchmark_rx fft conflict fix (Mike Jameson)
docs: Fixes sphinx docs for user set LD_LIBRARY_PATH (Tom Rondeau)
docs: Minor corrections, fixes to ControlPort documentation. (Tom Rondeau)
docs: Updated and improved the message passing docs page. (Tom Rondeau)
docs: added doc page on Performance Counters. (Tom Rondeau)
docs: added documentation of the stream tags interface. (Tom Rondeau)
docs: added information about the new pfb_arb_resampler kernel. (Tom Rondeau)
examples: fix examples using 3.7 API without importing namespaces (Nathan West)
fec: fix uninitialized class member in decode_ccsds_27 (Johnathan Corgan)
fft: Remove the default constructor for fft::goertzel. (Philip Balister)
fft: fix XML import for logpwrfft block (Andrej Lajovic)
fft: fix missing set_window call on initialization (Johnathan Corgan)
grc: added utf8 encoding line to python templates (Marcus Müller)
grc: applying hidapi update patch from Hans de Goede (Volker Schroer)
grc: fix to allow grcc to execute in headless mode (Roy Thompson)
grc: fixes grcc to exit with error in case of a compilation error. (Julien Olivain)
modtool: fixes using templates in OOT projects created with modtool. (Tom Rondeau)
modtool: more robust checks for gnuradio-runtime include dirs and libs. (Tom Rondeau)
modtool: fix finding gnuradio-runtime (Jiri Pinkava)
modtool: fix detection of GNU Radio module directory (Jiri Pinkava)
qtgui: fix missing API declarations (Nicholas McCarthy)
qtgui: fixes some bugs between qwt 5 and 6, some reorg. (Tom Rondeau)
runtime: Fixed runtime SWIG linker error (Nicholas Corgan)
runtime: fix asynch messages delivery when handler not defined (Tim O'Shea)
runtime: fix hier_block2 disconnect_all() (Johnathan Corgan)
runtime: fixed copy/paste error in (Alexandru Csete)
runtime: vmcircbuf_sysv_shm workaround for shmem race condition (Tim O'Shea)
uhd: fix GRC wrapper generation to match UHD change (fixes #562) (Timo Lindfors)
uhd: fix USRP config info strings to account for B2x0 (Nicholas Corgan)
volk: fix ARM test functions that resulted in an infinite loop (Tom Rondeau)
volk: fix xgetbv tests for OSX/gcc (Michael Dickens)
volk: fix QA test to use non-integer multiples of register sizes (Doug Geiger)
volk: fix Volk profiler to use non integer multiples of register sizes (Doug Geiger)
wxgui: Prevent crash displaying a tooltip before initialization (Miklos Maroti)



Ben Reynwar <>
Gerald Baier <>
Jaroslav Škarvada <>
Jeff Long <>
Johnathan Corgan <>
Josh Blum <>
Mark Plett <>
Martin Braun <>
Michael Dickens <>
Nicholas Corgan <>
Nick Foster <>
Nick McCarthy <>
Philip Balister <>
Sreeraj Rajendran <>
Tim Newman <>
Tim O'Shea <>
Tom Rondeau <>
Volker Schroer <>

Code Structure Changes (Johnathan Corgan, Tom Rondeau)[edit]

The GNU Radio source code was restructured and flattened. All top-level components now use the same structure for consistency and ease of use. All blocks were moved out of gnuradio-core, which has been renamed to gnuradio-runtime. The blocks are now in their appropriate top-level components and reimplemented with the new 3.7 API style. The new API makes use of C++ namespaces and the virtual private implementation class pattern to better hide GNU Radio internals from user code.

Details about this can be found here:

A Google doc showing all items that were moved from one place to another in the new style is here:

Blocks not listed were already in their own components. Many blocks were removed. All columns marked with ‘-----’ means that column is not applicable to that block or class. Any column (except those marked as Remove) that are blank means that we might be able to improve upon it, which normally indicates using VOLK or improving documentation.

A Google doc showing the new component and Doxygen categories for all components is here:

Important new features:[edit]

ControlPort (Tom Rondeau, Tim O’Shea)[edit]

ControlPort is a new interface for standardizing remote procedure calls in GNU Radio:

  • Remote control and visualization.
  • Use of ControlPort to enable debugging without requiring extra debug streams.
  • Abstracted interface, but currently using ICE (
  • No additional CPU usage while no monitoring is occurring.
  • Can connect multiple remotes to same GNU Radio application.
  • Can also have single ControlPort app control multiple GR apps.

Each block creates interfaces to control data members, by defining ‘get’ and ‘set’ interface to query and update values of block variables. Preference files control the state of ControlPort in section [ControlPort] of gnuradio-runtime.conf.

ControlPort comes with a generic utility to allow you to see all interfaces of a flowgraph:

  • gr-ctrlport-monitor <ip address> -p <port>

Within a flowgraph, one can also use ControlPort probes to pass vectors of data to a ControlPort client, including complex IQ data. One useful probe calculates the power spectral density of a block output for remote display.

See the ControlPort page in the GNU Radio manual for more information:

Performance Measurement Tools[edit]

Performance Counters were first built into GNU Radio in 3.6.5, but could only be accessed locally. Now, all Performance Counters can be exported over ControlPort.

Performance Counters must be compiled into GNU Radio using -DENABLE_PERFORMANCE_COUNTERS=True. They can be toggled on/off at runtime using the [PerfCounters] section in gnuradio-runtime.conf. Use option ‘export’ to export Performance Counters over ControlPort.

We now include a new tool to visualize the Performance Counters over ControlPort. This is installed as gr-perf-monitorx and requires the Python modules Scipy, NetworkX, and Matplotlib. Nodes of the flowgraph are represented as blue squares. The size of the square is proportional to the amount of time spent in the work function (either thread time or monotonic (wall clock) time). The size and depth of the shade of red of the edges is proportional to how full the block’s output buffer is.

QTGUI Enhancements (Tom Rondeau, Nick Foster, Ben Reynwar)[edit]

The QTGUI widgets defined in gr-qtgui have had a major overhaul in 3.7. All plots are now split out into individual components, including:

  • Time plots (amplitude versus time)
  • FFT plots (or PSD) (log magnitude versus frequency)
  • Waterfall plots (or spectrograms) (time versus frequency with magnitude as the color intensity)
  • Constellation plots (imaginary (quadrature) versus real (inphase))
  • Time raster plots (time vs. time)

Each plot can accept multiple connections that will overlay the signals on them. Zooming and unzooming are the same using the left and right mouse buttons. The center mouse button will pull up a context menu to allow manipulations of all kinds of properties of the display, such as line and marker styles, the size of the FFT, averaging, line transparency, etc. Significant work has gone into improving the performance, including the use of VOLK and more intelligent ways of handling the display to reduce the computational load.

QT defined QT Style Sheets (QSS) that allow us to specify looks, colors, and other properties of a display. Support for the use of QSS has been added to gr-qtgui to make establishing your preferences easier.

gr-qtgui/examples contains a number of examples showing how to use each type of plot and the QSS definition and interface.

Uninstalled imports (Ben Reynwar)[edit]

The GNU Radio source tree was updated to allow us to directly import all GNU Radio components in-tree before install but using the same syntax. This change greatly reduces problems and complexity of writing Python code for use in both normal installations and QA code. This change will also allow us to automatically build the Sphinx Python manual during make.

Updated gr_filter_design (Sreeraj Rajendran)[edit]

Overhauled the current gr_filter_design to add better visualization and interactive tools. Installed as part of the gr-filter component now, the gr_filter_design tool adds many new features for visualizing filters as well as support for IIR filter tap design. The new tool also includes a programmatic API that allows a user to launch the filter design tool inline in a program, design the new filter, and pass back an object containing the filter taps and parameters. Passing a callback function allows the designer to run in a separate thread and every time a new filter is designed, the callback function can be triggered to update a filter.

Examples of using the programmatic access to gr_filter_design can be found in gr-filter/examples/gr_filtdes_*.

Other New Components and Features[edit]

New blocks added[edit]

  • gr::analog::fast_noise_source - pre-generates a table of random samples from the selected PDF and randomly samples from them. This has somewhat less entropy than the normal noise_source block but is significantly faster.
  • gr::analog::agc3_*: Performs an initial linear gain ramp to quickly converge on a signal during startup and then falls back to an iterative loop similar to agc2.
  • The agc, agc2, and agc3 blocks have been made to use a unified interface that now includes a default maximum gain value (set to 2^16 so that it can scale up even the LSB of a USRP’s device).

New gr-fec component[edit]

This new top-level component mainly functions as a placeholder for new FEC block implementations. Currently contains only a couple of purpose-built FEC blocks.

New gr-channels component (Tim O'Shea)[edit]

This new top-level component holds current and future channel model blocks. The standard AWGN channel_model has moved here. In addition, there are two new channel models:

  • fading_model - Uses configurable max Doppler shift, Rician power factor, and lists of the delays (in samples) and magnitudes of a power delay profile.
  • selective_fading model - Basic fading model that can have a number of sinusoids, max Doppler shift, and Rician power factor defined for it.

volk_modtool (Nick McCarthy)[edit]

This new tool allows the creation of out-of-tree VOLK libraries. These allow developers or organizations to develop a set of VOLK kernels for internal use apart from the main libvolk provided by GNU Radio.

GnuradioConfig.cmake (Tom Rondeau, Tim O’Shea)[edit]

New GnuradioConfig.cmake and GnuradioConfigVersion.cmake cmake files are installed into the system under $prefix/lib/cmake/gnuradio. These files can be used by any other project to easily test if any GNU Radio components are installed and the minimum API-compatible version required.

Set GR_REQUIRED_MODULES to any of the top-level components in GNU Radio in all caps. Then use find_package(Gnuradio) to search for them. The second optional argument is the API compatible version is was built against. For example, to test if gnuradio-runtime, gnuradio-blocks, and gnuradio-filter are installed, we would use:

find_package(Gnuradio 3.7.0)

Additional Fixes (Ben Reynwar, Tom Rondeau, Josh Blum, Nicholas Corgan)[edit]

  • Added symbol output stream from constellation_receiver so we can see the locked constellation as well as the output bits.
  • Introduced a new pfb_arb_resampler kernel class that can be used by other blocks. We have used this to significantly simplify the pfb_arb_resampler_ccf/fff blocks.
  • All PFB code has new QA and fixed a few minor bugs in the calculation of some of the filters.
  • Added more QAM support with Gray coding.
  • Reworked VOLK. All kernels are now in volk/kernels/volk, made all kernels consistent in use of num_points, and redid any kernels that used num_bytes.
  • Removed assumptions that were Linux-only to continue to support native MSVC builds.

Obsoleted and/or removed functionality[edit]

The following items have been removed or redone:

  • gr-shd (removed)
  • gruel (removed; all functionality now in gnuradio-runtime)
  • gr-howto-write-a-block (functionality replaced by gr_modtool)

For more removed components, see:

Deprecated functionality[edit]

These are items that are currently part of GNU Radio, but are planned to be removed in the next API release (3.8).

  • gr-noaa - will be reimplemented as a stand-alone, out-of-tree project and supported with PyBOMBS
  • gr-pager - will be reimplemented as a stand-alone, out-of-tree project and supported with PyBOMBS

ChangeLog for Version 3.7[edit]

Build system changes[edit]

Top-level component changes[edit]

API changes[edit]

  • gr-wavelet has been converted to the new C++ API and coding structure (documentation TBD)

New feature additions[edit]

Bug fixes[edit]


  • Johnathan Corgan
  • Tom Rondeau

ChangeLog v3.6.5.1[edit]

This is a bug-fix only maintenance update to the 3.6.5 release, and is the last planned release for the 3.6 API.


Balint Seeber <>
Bastian Bloessl <>
Jaroslav Škarvada <>
Johnathan Corgan <>
Josh Blum <>
Marcus Leech <>
Martin Braun <>
Michael Dickens <>
Sylvain Munaut <>
Tim Monahan-Mitchell <>
Tim O'Shea <>
Tom Rondeau <>

Bug fixes[edit]

audio: fix default alsa device from hw:0,0 to default, Bug #551 (Tim O'Shea)
blocks: fix big-endian issue in wavefile blocks (Jaroslav Škarvada)
blocks: fix erroneous linkage to gr-filter (#547) (Johnathan Corgan)
blocks: fix for ~file_source crash, Bug #550 (Tim O'Shea)
blocks: fix param test in keep_me_in_n GRC wrapper (Tim Monahan-Mitchell)
blocks: fix use of assertGreater in QA for older Python (Johnathan Corgan)
cmake: fix CRLF to LF in in some modules (fixes #549) (Johnathan Corgan)
cmake: make install directory of GNU Radio cmakes files configurable (Jaroslav Škarvada)
core: ensure message passing blocks marked done are handled (Johnathan Corgan)
core: fir_filter_with_buffer using consistent error margins in all QA tests (Tom Rondeau)
core: fix vmcircbuf file read/compare to use strncmp instead of strcmp (Tom Rondeau)
core: makes sure if capping to max_noutput_items with output_multiple that the value is always an output_multiple. (Tom Rondeau)
core: making block_registry thread-safe for multiple flowgraphs to access it (Tom Rondeau)
core: fix 2 threading issues with the shared memory system. (Tom Rondeau)
digital: a block should not hold a reference to itself (Josh Blum)
digital: bugfixes to ofdm_chanest, HPD and frame EQ (Martin Braun)
digital: crude hack to prevent the HPD from crashing flow graphs (Martin Braun)
digital: remove stray import from QA test (Johnathan Corgan)
grcc: set grc file path, which is required for hier blocks (Bastian Bloessl)
wavelet: fix for -lgslcblas getting stripped out of the link flags (Tim O'Shea)
wavelet: do not use unsupported compile flags for OSX (Michael Dickens)
wxgui: Fixes to solve issues using GL sinks on OS X (Balint Seeber)
wxgui: fix exception in callback before label set (Marcus D. Leech)
wxgui: fix issue with flickering on Linux created by bea6d506 (Sylvain Munaut)



Balint Seeber <>
Ben Hilburn <>
Ben Reynwar <>
Gregory Warnes <>
Johnathan Corgan <>
Josh Blum <>
Marcus Leech <>
Martin Braun <>
Mike Jameson <>
Miklos Maroti <>
Nicholas Corgan <>
Tim Monahan-Mitchell <>
Tim O'Shea <>
Tom Rondeau <>

Important new features (3.6.5):[edit]

New OFDM PHY layer (Martin Braun, Ben Reynwar)[edit]

This release includes new OFDM PHY layer blocks in gr-digital. These
have been rewritten from scratch to allow more configurability and to use
some of the newer GNU Radio features (stream tags, async messages). Some
work remains to tie these into a full over-the-air transceiver, so further
development will be happening in the GNU Radio 3.7.x release series.

New runtime logging capability (Tom Rondeau)[edit]

GNU Radio has a logging interface to enable various levels of logging
information to be printed to the console or a file. The logger derives
from log4cpp ( which is readily
available in most Linux distributions. This is an optional dependency
and GNU Radio will work without it. See:

Minor features/changes (3.6.5):[edit]

build: git now ignores the build/ directory (Ben Hilburn)
build: create and install a config.h for external projects (Tom Rondeau)
build: install our cmake modules into share/gnuradio/cmake/Modules (Tom Rondeau)
blocks: fixed udp_source to avoid permanent work blockage (Josh Blum)
blocks: added proper EOF for msg tags test (Josh Blum)
blocks: added gr::blocks::socket_pdu (Tim O'Shea)
blocks: added gr::blocks::taptun_pdu (Tim O'Shea)
blocks: added gr::blocks::pdu_to_tagged_stream (Tim O'Shea)
blocks: added gr::blocks::tagged_stream_to_pdu (Tim O'Shea)
blocks: added default arg value to mute_XX (Tim O'Shea)
blocks: added probe_rate block (Tim O'Shea)
blocks: fixed probe_signal_vx vector utilisation (Mike Jameson)
blocks: fixed XML data type in gr::blocks::deinterleave (Miklos Maroti)
docs: updated pfb introduction (Ben Reynwar)
digital: added option to QAM to help with frequency locking (Ben Reynwar)
digital: made qa_constellation_receiver more reliable (Ben Reynwar)
digital: added QAM32-like constellation (Ben Reynwar)
filter: added callback to adjust resampling rate of pfb_arb_resampler block (Tom Rondeau)
filter: added fractional_resampler as a renamed fractional_interpolator (Tom Rondeau)
grc: added sorting ability to GRC category tree (Gregory Warnes)
grc: made 'float' an acceptable alias to 'real' in parameter types (Tom Rondeau)
modtool: added tagged_stream block as an option (Martin Braun)
modtool: fixed general python block template (Mike Jameson)
uhd: added a usrp PC sync option (Josh Blum)
uhd: added getters for bandwidth setting and range (Josh Blum)
uhd: updated usrp_spectrum_sense with frequency readout (Mike Jameson)

Bug fixes (, 3.6.5):[edit]

docs: fixed QT docs keywords (Ben Reynwar)
blocks: fixed XML wrapper for gr::blocks::complex_to_real (Johnathan Corgan)
blocks: fixed file meta data source to handle repeat of files (Tom Rondeau)
blocks: fixed XML data type in gr::blocks::plateau_detector_fb (Johnathan Corgan)
digital: fixed virtual destructor for constellation class (Tom Rondeau)
digital: fixed SNR estimators (Tom Rondeau)
filter: fixed pfb_arb_resampler XML for I/O types (Johnathan Corgan)
filter: fixed exception when using interpolating filter with no taps (Tom Rondeau)
filter: fixed pfb_arb_resampler to handle default taps (None) case (Tom Rondeau)
grc: fixed (removed) "c" key shortcut for create heir action (Tim O'Shea)
grc: fixed problem with order of message ports vs. data ports (Tom Rondeau)
runtime: fixed thread safety issue with tags and perf counters (Tim O'Shea)
runtime: fixed gr types for setting processor affinity (Tom Rondeau)
runtime: fixed swig issue with affinity mask vector (Tom Rondeau)
modtool: fixed gr-modtool template output signature (Johnathan Corgan)
modtool: fixed case when module name ends in 0 (Martin Braun)
modtool: fixed typo in help string (Tim Monahan-Mitchell)
modtool: fixed wording in modtool for 'float' sink/source type (Tom Rondeau)
modtool: fixed some setup for noblock gen (Tom Rondeau)
modtool: fixed intial templates of a block (Tom Rondeau)
pkg: fixed packages for Ubuntu 13.04 (Nicholas Corgan)
qtgui: fixed init FFT Size box for QTGUI sink (Tom Rondeau)
video-sdl: fixed typo in .pc file (Johnathan Corgan)
volk: fixed CentOS build failure with extra lib64 in path (Johnathan Corgan)
wxgui: fixed GL sinks issues on OS X (Balint Seeber)
wxgui: fixed set_callback failure in nongl sinks (Marcus Leech)
wxgui: fixed scaling issue of nongl FFT plot (issue #523) (Tom Rondeau)



Balint Seeber <>
Ben Reynwar <>
Johnathan Corgan <>
Marcus Leech <>
Martin Braun <>
Nicholas Corgan <>
Tim Monahan-Mitchell <>
Tim O'Shea <>
Tom Rondeau <>

Bug Fixes[edit]

docs: fixed QT docs keywords (Ben Reynwar)
blocks: fixed XML wrapper for gr::blocks::complex_to_real (Johnathan Corgan)
blocks: fixed file meta data source to handle repeat of files (Tom Rondeau)
digital: fixed virtual destructor for constellation class (Tom Rondeau)
digital: fixed SNR estimators (Tom Rondeau)
filter: fixed pfb_arb_resampler XML for I/O types (Johnathan Corgan)
filter: fixed exception when using interpolating filter with no taps (Tom Rondeau)
filter: fixed pfb_arb_resampler to handle default taps (None) case (Tom Rondeau)
grc: fixed (removed) "c" key shortcut for create heir action (Tim O'Shea)
grc: fixed problem with order of message ports vs. data ports (Tom Rondeau)
runtime: fixed thread safety issue with tags and perf counters (Tim O'Shea)
runtime: fixed gr types for setting processor affinity (Tom Rondeau)
runtime: fixed swig issue with affinity mask vector (Tom Rondeau)
modtool: fixed gr-modtool template output signature (Johnathan Corgan)
modtool: fixed case when module name ends in 0 (Martin Braun)
modtool: fixed typo in help string (Tim Monahan-Mitchell)
modtool: fixed wording in modtool for 'float' sink/source type (Tom Rondeau)
modtool: fixed some setup for noblock gen (Tom Rondeau)
modtool: fixed intial templates of a block (Tom Rondeau)
pkg: fixed packages for Ubuntu 13.04 (Nicholas Corgan)
qtgui: fixed init FFT Size box for QTGUI sink (Tom Rondeau)
video-sdl: fixed typo in .pc file (Johnathan Corgan)
volk: fixed CentOS build failure with extra lib64 in path (Johnathan Corgan)
wxgui: fixed GL sinks issues on OS X (Balint Seeber)
wxgui: fixed set_callback failure in nongl sinks (Marcus Leech)
wxgui: fixed scaling issue of nongl FFT plot (issue #523) (Tom Rondeau)



Ben Reynwar <>
Johnathan Corgan <>
Martin Braun <>
Mike Jameson <>
Nicholas Corgan <>
Tim O'Shea <>
Tom Rondeau <>

Bug fixes:[edit]

core: fixed filename path operator (Tim O'Shea)
core: fixed async message queue max length (Tom Rondeau)
docs: fixed missing gr-uhd to sphinx docs. (Ben Reynwar)
docs: fixed a section name collision (Tom Rondeau)
modtool: fixed Python general blocks syntax (Martin Braun)
modtool: fixed general python block template (Mike Jameson)
modtool: fixed extra comma bug in gr_modtool Python (Tom Rondeau)
volk: fixed MSVC include directory (Nicholas Corgan)

ChangeLogV3 6 4[edit]


Balint Seeber <>
Ben Reynwar <>
Johnathan Corgan <>
Josh Blum <>
Julien Olivain <>
Martin Braun <>
Mike Jameson <>
Nicholas Corgan <>
Roy Thompson <>
Sylvain Munaut <>
Tim O'Shea <>
Tom Rondeau <>

Important new features (3.6.4):[edit]

Ability to set processor affinity for GNU Radio blocks[edit]

Tom Rondeau has implemented the ability to set processor
affinity per block in a flowgraph. This allows the developer to
limit the execution of a GNU Radio block thread to a set of one
or more cores, helping optimize inter-core resources in a
multicore system.


Inclusion of gr_modtool by Martin Braun[edit]

Previously available as a stand-alone utility, the gr_modtool
application for creating out-of-tree GNU Radio blocks has been
integrated within the main GNU Radio software distribution. The
features and functionality are the same, but it is now no longer
necessary to download this separately. See:

Use of GNU Radio preferences in native C++ applications[edit]

Tom Rondeau has ported the GNU Radio preferences system to allow
its use in GNU Radio applications implemented in C++. Prior to
this, it was only possible to access the preferences file from
Python. Until the new manual is updated on, you
can see the raw commit here:

Addition of GNU Radio block performance counters[edit]

Tom Rondeau has implemented a new capability to allow monitoring
of peformance statistics of blocks inside a running
flowgraph. This is an experimental feature that has not received
a great deal of usage. For more details, see:

Minor features/changes (3.6.4):[edit]

atsc: added single decode Python script (Ben Reynwar)
atsc: made equalizer taps accessible in python. (Ben Reynwar)
blocks: added 3.7 API versions of count_bits, threshold, strech, throttle (Tom Rondeau)
blocks: added 3.7 API versions of peak_detector2, regenerate, transcendental (Tom Rondeau)
cmake: added Fedora 18 packaging information (Nicholas Corgan)
cmake: allow 64-bit systems to use Boost in non-standard locations (Nicholas Corgan)
core: added min_noutput_items to gr_block API (Ben Reynwar)
core: added operator == for tags (Martin Braun)
core: added remove_tag_item() (Martin Braun)
core: enabled msg_connect within python blocks (Roy Thompson)
core: added gr_random_pdu message passing block (Tim O'Shea)
core: added gr_fastnoise_source, default for gr_channel_model (Tim O'Shea)
core: added GRC callback for gr_throttle sample_rate (Tim O'Shea)
core: added a mutex to gr_block to sync setters and work function (Tom Rondeau)
digital: improved constellation_receiver_cv documentation (Ben Reynwar)
digital: made the demod examples clearer (Martin Braun)
digital: added simple_correlator (inverse of simple_framer) to gr-digital.
gruel: changed scoped_lock mutex to account for Boost deprecation (Johnathan Corgan)
grc: pull in documentation for blocks from other GR modules. (Julien Olivain)
howto: added example for Python blocks (Martin Braun)
pmt: added python converters (Martin Braun)
uhd: added click to change freq for uhd_fft (Mike Jameson)
wxgui: dead code removal and formatting cleanup (Sylvain Munaut)
wxgui: implemented persistence without using glAccum (Sylvain Munaut)

Bug fixes (, 3.6.4):[edit]

analog: fixed floating point accuracy issue in CTCSS squelch (Tom Rondeau)
blocks: fixed use of bare boost::mutex::scoped_lock (Johnathan Corgan)
blocks: fixed missing include in file_source_impl (Josh Blum)
cmake: fixed chrono as a necessary Boost library under MSVC (Nicholas Corgan)
cmake: allow user to override check for bad versions of boost (Tom Rondeau)
cmake: disable certain Boost versions we know are buggy to fix Issue #513. (Tom Rondeau)
cmake: fixing generated includes, deps, and header installation.
core: fixed gr_pdu_to_tagged_stream XML for type (Johnathan Corgan)
core: fixed gr_message_debug for printing PDUs (Johnathan Corgan)
core: fixed missing include in gr_socket_pdu (Josh Blum)
core: fixed missing include for gruel thread (Josh Blum)
core: fixed redundant test settings (Josh Blum)
core: fixed gr_random_pdu MSVC incompatibility issue (Nicholas Corgan)
core: fixed missing include to gr_block_registry.h (Tim O'Shea)
digital: fixed bug in (Ben Reynwar)(thanks Charles Ru)
digital: fixed pfb_clock_sync grc xml file for loop bandwidth (Ben Reynwar)
filter: fixed synthesis filter output rate when using 2x oversampling. (Tom Rondeau)
grc: fixed failing drag-n-drop in GRC on Windows (Balint Seeber)
grc: fixed Bug #485 by gracefully exiting (Martin Braun)
grc: fixed problem of GRC_BLOCKS_PATH not being set in Windows (Nicholas Corgan)
howto: fixed block parameters documentation (Julien Olivain)
uhd: fixed gain defaults in usrp_wfm_rcv*.py examples (Mike Jameson)
uhd: fixed default midpoint gain for example (Mike Jameson)
uhd: fixed example receive path (Mike Jameson)
uhd: fixed audio_alsa_sink busy using default in several examples (Mike Jameson)
volk: fixed bad find_package missing components (Josh Blum)
volk: fixed cmake, the profiler is no longer strictly unix (Josh Blum)
volk: fixed volk_profile MSVC incompatibility (Nicholas Corgan)

Contributors this release:[edit]

Alick Zhao <>
Alexandru Csete <>
Ben Hilburn <>
Ben Reynwar <>
Brett L. Trotter <>
Johnathan Corgan <>
Josh Blum <>
Julien Olivain <>
Martin Braun <>
Michael Dickens <>
Nicholas Corgan <>
Tim O'Shea <>
Tim Newman <>
Tom Rondeau <>

=== Addition/upgrade of message passing infrastructure (Tim O'Shea, Tom
Rondeau, Johnathan Corgan, Josh Blum) ===

This introduces the ability to add and connect formally defined
asychronous message ports to signal processing blocks and
hierarchical blocks. These message ports can be connected to pass
asynchronous data in the form of PMTs (polymorphic types) among
blocks in a flowgraph. It is also possible to implement pure
message passing blocks that have no requirement for streaming
ports or work functions.

We've also introduced the concept of PDUs (Protocol Data Units) as
a convention for passing data+metadata using the new messaging
ports. A PDU is a PMT pair that combines a PMT dictionary of
metadata keys/values along with a PMT blob to hold a vector of
data in memory.

A few new general purpose blocks supporting these capabilties are
in gnuradio-core:


Two new blocks for interfacing with networking stacks using the
new PDU semantics:


This new message passing capability and PDU convention is aimed at
providing the infrastructure to better support software radio
implementations using packet-oriented semantics, such as MAC-layer

Addition of new Python-based signal processing blocks (Josh Blum)[edit]

This feature, originally introduced by Josh Blum as part of
GrExtras, allows implementing signal processing blocks directly in
Python, and has now become a standard feature of GNU Radio.

Addition of gr-analog top-level component (Tom Rondeau)[edit]

This implements the current gnuradio-core signal processing blocks
used for analog signal processing into their own top-level
component, gr-analog, and uses the new 3.7 API organization. The
original blocks in gnuradio-core will be removed on the 3.7 branch
prior to 3.7 release.

Addition of gr-blocks top-level component (Johnathan Corgan)[edit]

This implements a large portion of the gnuradio-core non-signal
processing blocks in the 3.7 API form. The original blocks in
gnuradio-core will be removed on the 3.7 branch prior to 3.7

Metadata file source and sink blocks (Tom Rondeau)[edit]

Two new blocks implement enhanced file source and sink blocks that
incorporate metadata passed using the stream tags feature in GNU
Radio. It is now possible to store things like frequency and
sample rate into capture files, or whatever key/value pairs you
tag onto data streams inside a flowgraph.

GNU Radio buffer latency control (Tim O'Shea, Tom Rondeau)[edit]

For finer-grained control over latency inside a GNU Radio
flowgraph, it is now possible to adjust, on a per-block basis, the
maximum noutput_items that will be used to call a block work
function. In addition, it is possible to set the maximum size an
output buffer can grow to before a work function is called.

New GNU Radio Companion (GRC) capabilities[edit]

Added optional flag to pad source and sink (Josh Blum)
Added wildcard type to pad source and sink (Josh Blum)
Added ability to reload XML for block (Tim O'Shea)
Added ability to automatically create hier_blocks from a flowgraph (Tim Newman)
Added ability to open custom GRC hier block definitions (Tim O'Shea)
Added new grcc command line GRC-to-Python utility (Tom Rondeau)

New Documentation Updates (Tom Rondeau)[edit]

We are introducing documentation into the Doxygen manual
describing features and capabilities of GNU Radio, above and
beyond just documenting the API functions. Tom Rondeau has
written about this here:

Some examples of commits where this has been done: (PMT type usage) (Message passing interface) (Metatdata format) (Max output buffer control)

Other new features:[edit]

Allow file source to open new files while running (Brett L. Trotter)
Allow source blocks to return none/yield (Josh Blum)
Improved capabilities of uhd_fft.grc example in gr-uhd (Ben Hilburn)
Added parameter in qtgui sink's GRC block to set the update rate (Julien Olivain)
Added source block hook in gr-uhd for issue stream cmd (Josh Blum)
Added cmake package support for Ubuntu 12.10 (Nicholas Corgan)
Added gr::blocks::patterned_interleaver (Tim O'Shea)
Allow user to set Python path during cmake configuration (Tom Rondeau)
Enabled serialize/deserialize for PMT vectors (Tom Rondeau)
Added unsigned long long int support to the PMT sugar functions (Tom Rondeau)
Allow using pmt_init_Xvector methods in python (Tom Rondeau)

Bug fixes:[edit]

Numerous cmake related bug-fixes (Josh Blum, Johnathan Corgan, Tom Rondeau)
Overhaul of cmake include directory ordering (Michael Dickens)
Fixed parallel build failures in cmake (Tom Rondeau)
Fixed segfaults due to old, no longer nedded SWIG workaround (Tom Rondeau)
Fixed memory leak issue in arbitrary resampler blocks (Tom ROndeau)
Fixed use of default noise seed in channel model (Alick Zhao)
Fixed scaling bug in QAM constellations (Ben Reynwar)
Fixed installation of grc examples (Johnathan Corgan)
Fixed finding Qwt6 installed on OSX using MacPorts (Ben Reynwar)
Fixed implicit assumption in skiphead (Josh Blum)
Fixed include tag include usage throughout core (Josh Blum)
Fixed incorrect private usage in gr_endian_swap (Josh Blum)
Fixed segfault in gr-filter due to memory free bug (Josh Blum)
Fixed UHD pmt tuple ref namespace issue (Josh Blum)
Fixed gr_tag_debug to handle lacking srcid (Martin Braun)
Fixed gr-analog for 'sincos(f)' on MacOSX (Michael Dickens)
Fixed gr-analog build issues on Windows (Nicholas Corgan)
Fixed qtgui time sink to take the bandwidth parameter to set x-axis correctly (Tom Rondeau)
Fixed float-in, complex-out fft block to use the right io sig (Tom Rondeau)
Fixed Clang imcompatibility by removing '.version' lines in ASM code in core (Tom Rondeau)
Fixed file_meta_source/sink incompatibilities with MSVC (Nicholas Corgan)
Fixed some unused parameter warnings (Alexandru Csete)

ChangeLog for Version 3.6.2[edit]

Build system changes[edit]

  • Added support for setting SYSCONFDIR

Top-level component changes[edit]

  • A new top-level component, gr-filter, has been created. This component implements all the filter-related functionality that is in gnuradio-core, and uses the new style 3.7 API. The filter blocks in gnuradio-core are now deprecated; but will remain in gnuradio-core until the 3.7 release. Developers are encouraged to begin using the new blocks in preparation.

New signal processing blocks[edit]

  • gr_and_const_bb: adds bb type to gr_and_const* block
  • gr_annotator_raw: allows tagging stream with pmt key, value pair from outside GNU Radio
  • gr_endian_swap: change item endianess through block
  • gr_message_burst_source: turn received messages into a stream and tag them
  • gr_tag_debug: debug display of all tags going through block`
  • digital_gfsk_demod, digital_gfsk_mod: Gaussian Frequency Shift Keying modulator and demodulator

New feature additions[edit]

  • Support has now been added for ARM processors that do not implement NEON.
  • gr-uhd has added rx tagging for changes in sample rate and center frequency.
  • Added support for serializing pmt tuples
  • Added BER/SNR simulation example
  • Removed gruel dependency on inet.h

Bug fixes[edit]

  • core: fix minor bug in gri_wavefile endian swapping
  • core: only check for *.conf in preferences directory
  • digital: fixed incorrect variable name in qam_demod XML
  • digital: fix FLL block to use fir_filter
  • digital: remove unused parameter from DPSK demod GRC block
  • digital: fix use of Gray code in digital mod/demod GRC files
  • fcd: fix copy and paste error in documentation
  • uhd: fix stopping flowgraph while streaming
  • volk: don't initialize zero phase in rotator kernel
  • volk: don't use ORC for volk_16u_byteswap_u kernel
  • volk: add missing AVX support in volk_32f_x2_dot_prod_32f kernels
  • volk: fix __m128 cast in volk_32fc_x2_dot_prod_32fc_a kernel
  • volk: fix volk_32f_x2_dot_prod_32f_u_sse tail case
  • volk: use loadu for unaligned volk_32f_x2_dot_prod_32f_u_sse*
  • volk: fix for win64 MSVC not having MMX support
  • volk: special werror unused cmd line arg for clang


  • Ben Reynwar
  • Chí-Thanh Christopher Nguyễn
  • Hendrik van Wyk
  • Jaroslav Skarvada
  • Johnathan Corgan
  • Josh Blum
  • Martin Braun
  • Nicholas Corgan
  • Nick Foster
  • Tim O'Shea
  • Tom Rondeau
  • Wayne Roberts

ChangeLog for Version 3.6.1[edit]

Build system changes[edit]

  • New optional dependency for Sphinx
    • only needed if building Python documentation

Top-level component changes[edit]

  • gr-digital additions
    • gr_additive_scrambler_bb
    • gr_bytes_to_syms
    • gr_descrambler_bb
    • gr_glfsr_source_b
    • gr_glfsr_source_f
    • gri_glfsr
    • gr_map_bb
    • gr_pn_correlator_cc
    • gr_probe_density_b
    • gr_scrambler_bb
    • gr_chunks_to_symbols_XX
    • gr_diff_decoder_bb
    • gr_diff_encoder_bb
    • gr_diff_phasor_cc
    • gr_correlate_access_code_tag_bb
    • gr_framer_sink_1
    • gr_packet_sink
    • gr_simple_framer
    • gr_simple_framer_sync
    • gr_pfb_clock_sync_ccf
    • gr_pfb_clock_sync_fff
  • gr-fft (new)
    • fft_vcc
    • fft_vfc
    • goertzel_fc

New feature additions[edit]

  • Added swig support for new C++ block API (future development)
  • Reorganized volk build for better extensibility
  • New blocks:
    • gr_keep_m_in_n
    • gr_pack_k_bits_bb
    • gr_vector_insert_X
    • gr_vector_map
  • Head block can have number of items changed before a reset
  • New Python documentation using Sphinx
  • Allow max_noutput_items to be specified in GRC applications
  • Allow left click in FFT display to set a GRC variable
  • Added SIMD implementation of fixed phasor rotation to libvolk

Bug fixes[edit]

  • Updated build dependency and building instructions
  • Fixed pygtk check failure in cmake by making Python module checking more robust
  • Fixed stray pyc file generation in gruel
  • Fixed some QA failures when using Python 2.5
  • Fixed libvolk popcnt incorrect operation
  • Fixed accidentally removed virtual ports in GRC
  • Fixed gr-pager app center frequency display
  • Fixed memory leak in gr_pfb_channelizer_ccf
  • Fixed frequency offset test ing gr-fcd
  • Fixed portaudio detection in cmake
  • Fixed pthread linking in libgruel
  • Fixed missing QA linkage in gr-wavelet
  • Fixed UHD WBFM example to use current API
  • Fixed uhd_fft and uhd_siggen to used daughterboard names instead of IDs
  • Fixed AVX detection to turn off if GCC < 4.6.0
  • Fixed linker assumption made explicit in Ubuntu 12.04


  • Alexandru Csete
  • Ben Reynwar
  • Donald Porges
  • Jaroslav Skarvada
  • Johnathan Corgan
  • Jose Quaresma
  • Josh Blum
  • Justin Cutler
  • Marcus Leech
  • Moritz Fischer
  • Nicholas Corgan
  • Nick Foster
  • Nick McCarty
  • Tom Rondeau
  • Tim O'Shea

ChangeLog for Version 3.6.0[edit]

Removed all Autotools related work[edit]

  • All Makefiles.* and *.m4 scripts removed. No need for .gitignore since nothing is now generated in-tree.
  • cmake is now the only build system available.
  • gr-howto-write-a-block is the cmake version

Top-level component changes[edit]

  • gr-waveform was removed, along with related Scheme bindings
  • gr-wavelet was created, and wavelet blocks moved out of gnuradio-core. This shifts the dependency of libgsl from gnuradio-core to gr-wavelet.
  • gnuradio-examples was removed, and its contents distributed among the examples directory of various other top-level components

API changes[edit]

  • Python applications have .py extension removed (uhd_fft, uhd_siggen, etc.)
  • gr_pfb_synthesis_filterbank_ccf: renamed to gr_pfb_synthesizer_ccf (easier name)
    • synthesizer filterbank used to output channels in the center of the spectrum is the number of used channels was less than the number of available channels (to avoid filter rolloff effects when transmitting).
    • New implementation allows users to set a channel_map for which input channel appears in what channel in the spectrum. By default, this is just a list of [0, ..., M-1] for M channels, which means that it does not avoid the edge channels by default and must be told to if this is desired/required.
    • Using the twox=True argument to the synthesizer filter means that the output sample rate is now 2 samples per symbol as opposed to being critically sampled (when twox=False, the default).
  • gr_wavefile_sink.h: do_update was made a private member of the class to make it thread-safe.
  • Removed old SNR probe in lieu of digital that adds more estimator type options

Feature additions[edit]

  • Wave file sink is thread-safe
  • File sink and Wave file sink can change file name in GRC
  • Added printing of USRP configuration in usrp_rx_cfile
  • Added alias of "BLACKMAN_HARRIS" to "BLACKMAN_hARRIS" for consistency

Bug fixes[edit]

  • Fixed installation instructions
  • Updated dependency list
  • Volk improved building issues
  • Debug mode builds with -O2


  • Johnathan Corgan
  • Josh Blum
  • Marcus Leech
  • Nick Foster
  • Nicholas Corgan
  • Tom Rondeau

ChangeLog for Version[edit]

Bug Fixes[edit]

  • Fixed IQ correlation initialization in gr-fcd
  • Fixed volk AVX detection/usage for GCC < 4.6 and MSVC
  • Fixed miscalculation of symbol rate in digital_bert_rx


  • Johnathan Corgan
  • Josh Blum
  • Tom Rondeau

ChangeLog for Version[edit]

Bug Fixes[edit]

  • Fixed segfault in PMT library
  • Fixed QA for constellation to always reset the seed for deterministic tests
  • Fixed stray Python .pyc file generation during build
  • Fixed missing librt link in gr-fcd on some Linux systems
  • Updated volk AVX tests to workaround buggy Xen hypervisors
  • Fixed libjack detection to require development headers


  • Barry Jackson
  • Ben Reynwar
  • Johnathan Corgan
  • Josh Blum
  • Martin Braun
  • Nick Foster
  • Tom Rondeau

ChangeLog for Version 3.5.3[edit]

New Features[edit]

  • add sin/cos to fixed point class
  • Use fixed point sin/cos generator for FM modulator
  • Support for FunCube Dongle (gr-fcd)
  • Digital gr_constellation blocks have more readable name when printed in Python.
  • gr_probe_signal blocks to support different types
  • Gruel includes more common swig code, improved exception handling
  • Digital modulation benchmark code has a new channel bandwidth factor to increase the size of the channel filter for larger frequency offsets.
  • Require Orc 0.4.12
  • Introduced private implementation (pimpl) model in gr-fcd - future coding style.

UHD Improvements[edit]

  • API calls to set user registers
  • added multi-finite-acquisition
  • added set_start_time calls to source/sink
  • perform abi compat check before making a block
  • add a flush to finite_acquisition_v
  • fix dc offset call in uhd source
  • Python users can now grab their current UHD version as a string
  • Access to list_property_tree and get_usrp_info functions
  • get_usrp_info has help info and can only be called with a recent enough version of UHD
  • uhd_siggen, uhd_siggen_gui, and uhd_fft include information on the user's UHD version and USRP configuration

Bug Fixes[edit]

  • Start and lock/unlock alignment issues (for volk support)
  • gr-trellis FSM file closes properly
  • VM circbuf was not using shared memory under cmake
  • Fix to build better on Slackware
  • Noise source seed value is explained better
  • Improved detection of 32/64-bit Windows
  • Alignment of taps vector in fft_filter
  • Improved 32-bit system support with Volk
  • Volk includes config.h properly
  • For volkized type conversion blocks, added vlen and scale to GRC blocks
  • added GRC files for new MPSK SNR estimator and probe


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

ChangeLog for Version 3.5.2[edit]

  • Block updates
    • noaa
      • add pkgconfig file for C++ library
    • uhd
      • add utility function to convert raw gr_message to async_metadata_t
      • add async message print option to apps
    • core
      • add null constructors to sync_* blocks
    • gr_burst_tag block
      • can set user-defined keys and values for when a burst is on or off instead of static values. Defaults are the same. Use set_true_tag and set_false_tag to override these.
    • fftw
      • enable use of fftw's threading capabilities
        • The nthreads for all blocks defaults to 1 so no behavioral change is required. To specify the number of threads, it is the last argument to these blocks called nthreads. The blocks have set and get methods for nthreads as void set_nthreads(int n) and int nthreads().
        • expose nthreads capabilities to gr_fft_vcc
        • expose nthreads setting through to fft_filters
        • grc: add nthread parameter to FFT-based blocks
    • gr_delay
      • allowing delay to be dynamic for runtime changes to set_delay
    • gr_vocoder
      • add xml blocks to autotools build
    • gr_digital
      • added get/set functions to mpsk_receiver_cc for theta (phase offset), omega relative limit, and modulation order
  • Volk (See Volk for details)
    • Scheduler tries to keep buffers aligned for SIMD calls
    • is_unaligned() implemented so blocks can check alignment
    • Converted blocks:
      • gr_float_to_short
      • gr_float_to_char
      • gr_short_to_float
      • gr_short_to char
      • gr_char_to_float
      • gr_char_to_short
      • gr_complex_to_mag
      • gr_complex_to_mag_squared
      • gr_complex_to_float
      • gr_complex_to_real,
      • gr_complex_to_imag
      • gr_fft_filter_fff
      • gr_fft_filter_ccc
      • gr_multiply_cc
      • gr_multiply_const_cc
      • gr_multiply_conjugate_cc
      • gr_multiply_ff
      • gr_multiply_const_ff
      • gr_add_ff
      • gr_conjugate_cc
    • All type conversion and most math blocks can also set vlen to be used with vector streams (see block documentation for specifics)
    • All Volkified blocks have QA code
    • New Volk kernels
      • complex magnitiude squared kernels
      • complex to imag kernel
      • complex multiply conjugate kernel
      • unaligned magnitude of a complex number
      • unaligned complex multiply a constant
      • unaligned complex multiply of 2 streams
      • unaligned versions of float multipliers
      • unaligned version of adding 2 vectors
    • volk_profile tool installed into $prefix/bin
    • Volk benchmarking scripts in gnuradio-examples/python/volk
      • See README file in this directory
    • Added documentation to the Doxygen manual explaining Volk and how to use it
  • Fixes to Swigdocs generation and compile-time issues
    • swigdoc build system checks for errors and retries build up to 3 times.
    • fixes parallel build problem for make -jN
  • Bug fixes
    • general fixes
      • Fixed bug in digital_qam_demod.xml
      • Added digital_constellation_receiver_cb.xml file
      • allow any input hardware audio rate; fix use of deprecated function 'AudioHardwareGetProperty'
      • volk: fix for newer orc
      • volk: fixes for consistent behavior across platforms
      • digital: fixing up BERT interfaces. Also added a gain control to the tx side (so options.amplitude is actually used)
      • fixed bug in FFT shift operation
      • fix floor ambiguous overload in vcc fftw
      • fix for off-by-one issue in strip chart. Increases buffer size for longer displays
      • fix for uhd_fft to work with basicRx d'board
      • fix triggering and performance issues with oscope; specifically for the strip-chart features
    • howto
      • various fixes cmake, cleanup
      • adding uninstall target for howto-write-a-block-cmake
    • Build
      • Fix compilation with gcc-4.7
      • fix for cmake 2.6 with library extras mode
      • hrt under bsd should use clock gettime
      • better findqwt.cmake with standard paths
      • fix install permissions on grc_setup_freedesktop
      • install OFDM examples into installed examples directory
      • More search options for qwt libraries, specifically for OSX
      • Fixed mislabeled dependencies for Fedora 15
      • CMake assigns "X.X.X" version number to generated executables for dpk compatability
      • Changes Windows installer filename to match naming convention of Ubuntu and Fedora installers
      • Try to force cmake to use compiler flags from the toolchain file

ChangeLog for Version 3.5.1[edit]

  • 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.

ChangeLog for Version 3.5[edit]

New Build Tool: CMake[edit]

GNU Radio is working to move away from the use of autotools and instead use cmake. Version 3.5 will have a parallel build of both systems while we make this switch. Cmake will be the default and preferred build, but anyone having issues getting it to work can fall back on using autotools.

Using cmake:

mkdir build ; cd build
cmake [OPTIONS] ../
make [-jN]
make test
sudo make install

The optional OPTIONS can be things like passing specific directories to locations of dependencies (like QWT, which may be installed in a non-standard place) or to turn components on of off. By default all components are enabled. To disable, use -DENABLE_COMPONENT=On/Off/True/False/Force, where COMPONENT is the directory name in all caps, like gr-qtgui becomes GR_QTGUI.

See CMakeWork for more details.

The old autotools way where $(top_srcdir) is the directory where the source is located and $(top_builddir) is where you want to build everything (they can be the same).

cd $(top_srcdir)
cd $(top_builddir)
$(top_srcdir)/configure [OPTIONS]
make [-jN]
make check
sudo make install

VOLK is a required component[edit]

The Volk component has been available for a while in GNU Radio but nothing inside has made use of it. That is changing with 3.5. Volk is now a requirement for GNU Radio blocks. Blocks inside gnuradio-core will start to use Volk functions, which will make it absolutely depend on Volk being built, much like the gruel package.

New Documentation Directory[edit]

All new components must have a doc directory that contains a README that provides a basic overview of the component and a Doxygen-formatted main page that gives more detail, which is then build into the Doxygen manual. The Doxygen files are named component.dox, where 'component' is the name of that component. See gr-qtgui/doc/qtgui.dox for an example of this file.

Digital Modulation[edit]

We are separating the digital modulation-specific blocks from gnuradio-core into their own top-level directory gr-digital. This creates a new gnuradio module in Python called digital that can be accessed as:

from gnuradio import digital

Many blocks have been moved from gnuradio-core and others have been removed completely as they were obsolete or duplicated elsewhere.

New Blocks[edit]

  • digital_constellation_decoder_cb
  • digital_constellation
  • digital_constellation_receiver_cb
  • digital_cpmmod_bc
  • digital_gmskmod_bc
  • python/
  • python/
  • python/
  • python/
  • /python/utils/
  • /python/utils/
  • /python/utils/

Moved Blocks[edit]

  • digital_binary_slicer_fb
  • digital_clock_recovery_mm_cc
  • digital_clock_recovery_mm_ff
  • digital_cma_equalizer_cc
  • digital_correlate_access_code_bb
  • digital_costas_loop_cc
  • digital_crc32
  • digital_fll_band_edge_cc
  • digital_kurtotic_equalizer_cc
  • digital_lms_dd_equalizer_cc
  • digital_mpsk_receiver_cc (superseded in new blocks; may be removed)
  • digital_ofdm_frame_acquisition
  • digital_ofdm_frame_sink
  • digital_ofdm_insert_preamble
  • digital_ofdm_mapper_bcv
  • digital_ofdm_sampler
  • python/
  • python/
  • python/
  • python/ (replaces modulation_utils2)
  • python/
  • python/
  • python/
  • python/
  • python/
  • python/
  • python/
  • python/
  • python/
  • python/

Removed Blocks[edit]

  • python/
  • python/
  • python/
  • python/
  • python/
  • python/

The dXpsk(2).py blocks have been replaced by the blocks that allow both differential and non-differential operation. Use of dbspk in the past is now accessed through bpsk with --differential (on by default).

The files and have been replaced with and

Control Loops[edit]

All blocks that use a second-order control loop to track a phase and frequency are being replaced to inherit from the gri_control_loop parent class. This class takes care of setting the gains given a loop bandwidth and damping frequency. By default, it sets the damping frequency for a critically damped system so only the loop bandwidth is required. The constructor looks like:

gri_control_loop(float loop_bw, float max_freq, float min_freq);

All blocks that have this structure used to set the internal alpha and beta gains individually. Now, the constructors for their blocks have been replaced to accept the loop bandwidth instead of the two gains. All values, the loop bandwidth, damping factor, alpha, beta, current phase, and current frequency can all be retrieved (get_) and set (set_).

This affects the following blocks:

  • gr_pll_carrier_tracking_cc
  • gr_pll_freqdet_cf
  • gr_pll_refout_cc
  • gr_pfb_clock_sync_ccf (TBD)
  • gr_pfb_clock_sync_fff (TBD)
  • digital_costas_loop_cc
  • digital_constellation_receiver_cb
  • digital_mpsk_receiver_cc
  • digital_fll_band_edge_cc

Removing USRP and USRP2 libraries[edit]

All USRP-related activity is done using the Ettus Research UHD code ( The firmware and drivers are now provided by Ettus, and so libuhd has become an external dependency for GNU Radio when using USRPs. As such, libusrp (usrp), libusrp2 (usrp2), and the GNU Radio wrapper components (gr-usrp and gr-usrp2) have been REMOVED and are no longer supported.

All USRP-based examples/apps have been move to UHD, including:


  • apps/hf_explorer/
  • apps/hf_radio/
  • apps/hf_radio/
  • apps/hf_radio/
  • digital/
  • digital/
  • digital/
  • digital/
  • digital/
  • digital/
  • digital/
  • digital/
  • digital/
  • digital/
  • digital/
  • multi-antenna/ (removed, easily redone in GRC)
  • multi-antenna/ (removed, easily redone in GRC)
  • multi-antenna/ (removed, easily redone in GRC)
  • multi_usrp/ (removed, easily redone in GRC)
  • multi_usrp/ (removed, easily redone in GRC)
  • ofdm/
  • ofdm/
  • ofdm/
  • ofdm/
  • ofdm/
  • usrp/
  • usrp/
  • usrp/
  • usrp/
  • usrp/
  • usrp/
  • usrp/
  • usrp/
  • usrp/
  • usrp/
  • usrp/
  • usrp/
  • usrp/
  • usrp/
  • usrp/
  • usrp/
  • usrp/
  • usrp/
  • usrp2/
  • usrp2/




  • usrp_rx_hrpt.grc
  • usrp_rx_htpt_nogui.grc
  • usrp_rx_lrit.grc


  • usrp_rx_flex.grc




Removed. The radio astronomy has been replaced by simple-ra in cgran (


GNU Radio Release 3.4.x (Release Branch)[edit]

Changes in release 3.4.0 from release 3.3.0:[edit]

Release 3.4.0[edit]

GNU Radio Release 3.3.x (Release Branch)[edit]

Latest Official Release Tarballs[edit]

Changes in release 3.3.0 from release 3.2.2:[edit]

Release 3.3.0-rc3[edit]

Johnathan Corgan (4):

  • build: refactor GR_GIT and GR_VERSION
  • Make C++ shared libraries versioned
  • howto: make versioned libraries

Release 3.3.0-rc2[edit]

Don Ward (10):

  • Changes to gr_udp_{source,sink} for MinGW
  • Ignore ENOPROTOOPT return from setsockopt(SO_LINGER)
  • Use getaddrinfo in gr_udp_{source,sink}
  • Discard data in gr_udp_sink until receiver is started.
  • Updates to udp source/sink (select(), wait, cleanup)
  • Merge branch 'master' into udp
  • Merge branch 'master' into udp
  • Rework UDP source and sink, with incompatible API changes
  • Merge branch 'master' into udp
  • Flush pending errors in gr_udp_sink on disconnect()

Eric Blossom (9):

  • Add additional conditionalization of networking includes
  • Use -1 as file descriptor "not open" value instead of 0
  • Identify memory leaks that occur on error conditions
  • Correct update of d_temp_offset (parallel construction)
  • Move initialization of select timeout
  • Defend against a peer that sends an invalid message length.
  • Return immediately when using d_residual.
  • Simplify USE_SELECT usage
  • Refactor to move common files from 3 libraries into a single variable.

Eric Schneider (1):

  • Add USRP2 clock source parameter to GRC blocks.

Johnathan Corgan (9):

  • grc: update UDP source and sink block wrappers
  • gnuradio-core: allow swig to handle exceptions in UDP source/sink
  • gnuradio-core: update copyrights
  • libvrt: remove from 3.3 API.
  • Merge remote branch 'gnuradio/wip/udp_source_sink'
  • Fix erroneous file modes
  • usrp2-firmware: fix missing files in tarball
  • Merge remote branch 'ets/grc-usrp2-clock-source'

Release 3.3.0-rc1[edit]

Don Ward (1):

  • howto: fix make check for win32, darwin (untested)

Eric Blossom (1):

  • Remove bogus check for existence of prefix directory.

John Orlando (8):

  • Update incorrectly checked in
  • Add support for the Bitshark USRP RX (BURX) daughterboard for the USRP1.
  • Add support for the Bitshark USRP RX (BURX) daughterboard for the USRP2.
  • Fixed issue with with wrong files being copied
  • Including bitshark_rx.h header file for USRP2 build
  • Updated db_bitshark_rx.c to the proper version that includes the
  • Once and for all, here is the properly updated for the apps
  • Updated to allow BURX support to be built into standard txrx.bin

Johnathan Corgan (17):

  • usrp: Cleanup for merge of bitshark daughterboard code
  • Change default bandwidth to 25 MHz to match maximum USRP2 bandwidth
  • Merge branch 'master' into wip/burx_support
  • Merge remote branch 'nldudok1/gr-wxgui_emulate_analog' into master
  • gr-wxgui: Renamed "emulate analog" feature to "use persistence"
  • gr-wxgui: update copyrights
  • gnuradio-core: Disable (temporarily) interpolator tap calculation
  • build: force use of from libtool 2.2.6b
  • build: use correct comment delimiter
  • build: distribute version controlled in tarball
  • Merge remote branch 'bitshark/burx_support' into wip/burx_support
  • Revert "build: force use of from libtool 2.2.6b"
  • Revert "build: distribute version controlled in tarball"
  • Merge branch 'wip/burx_support'
  • gnuradio-core: removed gr.dd_mpsk_sync_cc block as obsolete
  • grc: rename execution binary from 'grc' to 'gnuradio-companion'
  • Update revision to release 3.3.0-rc1, update autotools

Martin Dudok van Heel (1):

  • Add analog CRT screen afterglow emulation for gr-wxgui

Release 3.3.0-rc0[edit]


GNU Radio Release 3.2.x (Release Branch)[edit]

Latest Official Release Tarballs[edit]

Latest Unofficial or Pre-Release Tarballs[edit]

The BuildGuide has the instructions for compiling and installing GNU Radio on your system.

Unreleased changes in repository (3.2.3svn)[edit]

  • PMT: Optimizations, switched from omnithreads to Boost (Stephan Bruens) (r11482)
  • CORE: Added build configuration API and utility (Johnathan Corgan) (r11477)

Changes in release 3.2.2 from release 3.2.1[edit]

  • CORE: Added new gru.msgq_runner convenience class (Johnathan Corgan) (r11428)
  • EXAMPLES: Fixed broken digital examples from 3.2.1 (Josh Blum) (r11429)
  • QTGUI: Fixed USRP and USRP2 display programs (Tom Rondeau) (r11426)
  • GRC: Added short CLI argument capability (Johnathan Corgan) (r11427)
  • BUILD: Fixed missing files from packaging (Johnathan Corgan) (r11430)

Changes in release 3.2.1 from release 3.2[edit]

  • ALL: Fixed gcc 4.4 compatibility issues (Achilleas Anastasopoulos) (r11301)
  • CORE: Fixed QPSK phase error detector (Ben Green) (r11300)
  • CORE: Fixed ofdm_cp.i base class (Eric Blossom) (r11222)
  • EXAMPLES: Improved QT digital comms example (Tom Rondeau) (r11367)
  • EXAMPLES: Fixed dual-FM radio receiver (Johnathan Corgan) (#372) (r11349)
  • EXAMPLES: Improved USRP1/USRP2 auto-sense (Josh Blum) (r11298)
  • EXAMPLES: New QT-based digital comms example (Tom Rondeau) (r11298)
  • USRP2: Updated firmware for revision 4 hardware (Matt Ettus) (r11220)
  • WXGUI: Created new forms module (Josh Blum) (r11296)
  • GRC: Added new notebook display widget (Josh Blum) (r11366)
  • GRC: Fixed standard squelch wrapper (Josh Blum) (r11348)
  • GRC: Restored screenshot capability (Josh Blum) (r11348)
  • GRC: Fixed gr_argmax wrapper (Josh Blum) (r11348)
  • GRC: Fixed Python 2.5 incompatibility (Josh Blum) (r11303)
  • GRC: Assorted performance improvements (Josh Blum) (r11302)
  • GRC: Make block paths configurable (Josh Blum) (r11302)
  • GRC: Generated apps use new forms module (Josh Blum) (r11296)
  • GRC: Make block definition locations configurable through environment (Josh Blum) (r11219)
  • GRC: Add tooltips to category window (Josh Blum) (r11219)
  • GRC: Fixed chained variable evaluation (Josh Blum) (r11219)
  • GRC: Fixed deprecated number sink param (Josh Blum) (r11219)
  • GRC: Fixed random source example (Josh Blum) (r11177)
  • GRC: Removed Python 2.6 deprecations (Josh Blum) (r11176)
  • BUILD: Fixed missing files from gr-radar-mono Ubuntu Package (Nick Withers) (r11355)
  • BUILD: Fixed erroneous Makefile entry (Josh Blum) (r11348)
  • BUILD: Use common system configuration directory (Josh Blum) (r11297)
  • BUILD: Fixed typos and dependencies in Ubuntu packaging (Johnathan Corgan) (r11223, r11370)
  • BUILD: Fixed --with-usrp configuration for OSX (Michael Dickens) (r11128)

GNU Radio Release 3.1.x (Release Branch)[edit]

Latest Official Release Tarballs[edit]

Latest Unofficial or Pre-Release Tarballs[edit]


The BuildGuide has the instructions for compiling and installing GNU Radio on your system.

Browse Source Code Repository[edit]


Releases tagged:

  • source:/gnuradio/tags/releases/3.1.0rc0 (r6632)
  • source:/gnuradio/tags/releases/3.1.0 (r6681)
  • source:/gnuradio/tags/releases/3.1.1 (r6822)
  • source:/gnuradio/tags/releases/3.1.2rc0 (r8001)
  • source:/gnuradio/tags/releases/3.1.2 (r8107)
  • source:/gnuradio/tags/releases/3.1.3 (r9394)

Changes in release 3.1.3 from release 3.1.2[edit]

New Signal Processing Blocks[edit]

  • Added new block: gr.repeat (Johnathan Corgan) (r8263)
  • Added new block: gr.integrate_XX (Johnathan Corgan) (r8265)
  • Added new block: gr.cpfsk_bc(), continuous phase FSK modulator (Johnathan Corgan) (r8267)
  • Added new block: blks2.stream_to_vector_decimator (Johnathan Corgan) (r9127)
  • Added new block: blks2.logpwrfft_c,f (Johnathan Corgan) (r9128)
  • Added new block: gr.moving_average_XX (Matt Ettus) (r9134)

Other New Functionality[edit]

  • Added R1/2, K=7 convolutional encoder and viterbi decoder (Johnathan Corgan) (r8699)
  • Added new daughterboard support for dtt754 and dtt768 (Matt Ettus) (r9131)
  • Added missed gr_clip() from r7389 (Tom Rondeau) (r9141)
  • Added alternative integrate & dump to gr-gpio (Johnathan Corgan) (r9139, r9393)
  • Added CIC compensation filter tap calculator (Johnathan Corgan) (r8262)
  • Added gru.daemonize() for running apps as daemons (Johnathan Corgan) (r8266)
  • Added concurrent peak hold for fftsink2 (Johnathan Corgan) (r8333, r8336)
  • Added FFT sink control panel (Josh Blum) (r8707)
  • Added flowgraph dump method (Johnathan Corgan) (r8704)
  • Added random noise seed to channel model (Eric Blossom) (r8705)
  • Added 'omni_time' class to omnithreads (Eric Blossom) (r9107)
  • Added dynamic configuration to gr.costas_loop_cc (Johnathan Corgan) (r9135)
  • Allow odd decimation with halfband disabled (Firas Abbas) (r9136)
  • Added SSE test predicates in gr_cpu (Jason Coy)

Important Bug Fixes[edit]

  • Fixed dynamic reconfiguration failure (Johnathan Corgan) (#241, r8332)
  • Fixed gr.top_block start/stop behavior (Eric Blossom) (r9125)
  • Fixed C++ hierarchical blocks (Eric Blossom) (r9130)
  • Fixed gr.repeat() to actually work (Dean Armstrong) (r8706)
  • Updated for GCC 4.3 compatibility (Marek Mahut) (r8340, r8341)
  • Fixed signed/unsigned error in gr_fxpt_nco (Stefan Bruens, Phillip Ballister) (#258) (r9388)
  • Fixed compilation bug (log2) on Win32 (Don Ward) (#243) (r9391)

Other Bug Fixes[edit]

  • Fixed audio module list for Win32 (Bob McGwier) (#71, r8260)
  • Fixed endianness issue with wavefile source/sink (Tim Meehan) (#238, r8261)
  • Fixed gr.arg_max and gr.max_XX issue (Bob McGwier) (r8264)
  • Fixed race condition in fftsink2 (Josh Blum) (r8339)
  • Fixed busy wait in fusb_linux (Eric Blossom) (r8342)
  • Fixed potential invalid read in gr_complex_to_xxx (Dan Halperin) (r8343)
  • Fixed missing initialization in gr-atsc (Dan Halperin) (r8344)
  • Fixed invalid memcpy in gr-atsc (Dan Halperin) (r8345)
  • Fixed PATH modification in sdl.m4 (Don Ward) (r8346)
  • Fixed make check failure (Don Ward) (r8346)
  • Fixed libusrp build in OSX 10.4 (Michael Dickens) (r8700)
  • Fixed channel model functions (Josh Blum) (r8701)
  • Fixed version requirement in gr-howto (Eric Blossom) (r8701)
  • Fixed obsolete import in (Eric Blossom) (r9108)
  • Fixed SDCC configuration error (Eric Blossom) (r9122)
  • Fixed algorithm URL in filterbank code (Bob McGwier) (r9126)
  • Fixed typo in gr_sync_interpolator (Dominik Auras) (#250) (r9129)
  • Fixed flowgraph QA failure (Martin Dvh) (r9386)

Miscellaneous Changes[edit]

  • Refactored FFT blocks (Eric Blossom) (r8329)
  • Distribute bootstrap script with tarballs (Eric Blossom) (r8703)
  • Allow use of libtool 2.2 or 1.5. Implements #249. (Don Ward) (r9106)
  • Improved SIMD code profiling output (Eric Blossom ) (r9123)
  • Renamed dot product benchmark (Eric Blossom) (r9124)
  • Updated comment in (Eric Blossom) (r9140)
  • Cleaned up gr_flowgraph code (Johnathan Corgan ) (r9387)

Changes in Release 3.1.2 from Release 3.1.1[edit]

New features[edit]

  • Added AM BCB receive demo (Martin Dvh) (r7298)
  • Added mouse hover display to fftsink2 (Johnathan Corgan) (r7280,r7282,r7283)
  • Added 'double-click to recenter' to (Johnathan Corgan) (r7284)
  • Added 'ctrl-double-click moves max power to center' to (Johnathan Corgan) (r7287,r7288)
  • Added gr.peak_detector2 and branchless clipping (Tom Rondeau) (r7654)
  • Added SciPy based plotting utilities to gr-utils (Tom Rondeau) (r7655,r7656,r7657,r7996)
  • Added variable number of vertical ticks to fftsink2 (Matt Ettus) (r7803)
  • Changed to show 100dB dynamic range (Matt Ettus) (r7804)
  • Added gr.wavfile_source and gr.wavfile_sink blocks (Martin Braun) (r7805)
  • Added set of boolean operator blocks (Tim Meehan) (r7809)
  • Added gr-gpio: Streaming digital GPIO aligned with RF (Johnathan Corgan) (r7817)
  • Added reference scaling to fftsink2, calibrated for dBFS (Johnathan Corgan) (r7878,r7885)
  • Added --avg-alpha parameter to (Johnathan Corgan) (r7879)
  • Added -with* build configuration implementation (Michael Dickens) (#186, r7946)

Bug fixes[edit]

  • Fixed missing library in gnuradio-omnithread.pc (Eric Blossom) (r7293)
  • Fixed VPATH build issue with USRP firmware (Eric Blossom) (r7658)
  • Fixed Debian package conflict with release 3.0 (Johnathan Corgan) (r7286)
  • Fixed fftsink2 center frequency display (Johnathan Corgan) (r7281)
  • Fixed firmware vector numbering (Michele Bavaro) (r7294)
  • Fixed 8-bit receive mode (Matt Ettus, Martin Dvh) (r7289,r7299)
  • Fixed include file specification for USRP for Darwin/OSX (Michael Dickens) (r7301)
  • Fixed std:min/max issue on Win32 (#145) (Don Ward) (r7296)
  • Fixed OSX 10.5 threading issues (Michael Dickens) (r7507)
  • Fixed weak-reference error in db code (Johnathan Corgan) (r7508,r7510)
  • Fixed UDP and PPIO handling in FreeBSD (Diane Bruce) (r7511)
  • Fixed exceptions turning into aborts issue (#181) (Johnathan Corgan) (r7512,r8099)
  • Fixed segfault in set_taps() (#227) (Don Ward) (r7513)
  • Fixed blks2.synthesis_filterbank wiring (Beezle Bub) (r7514)
  • Fixed noise floor issue in RFX daughterboards (Johnathan Corgan) (r7515,r7516)
  • Fixed NBFM filter constants in demos (Johnathan Corgan) (r7653)
  • Fixed abort in gr.top_block() (Johnathan Corgan) (r7659)
  • Fixed return value in gr.peak_detector (Tom Rondeau) (r7660)
  • Fixed waterfallsink2 display for wxGTK-2.8 (Tobias Gresch) (r7810)
  • Fixed waterfallsink2 display update on Win32 (Don Ward) (r7875)
  • Fixed some parameter checking in new flowgraph code (Dan Halperin) (r7811)
  • Fixed missing gr.sample_and_hold files in distribution (Dan Halperin) (r7876)
  • Fixed potential segfault in gr.test (Andrew Rose) (r7877)
  • Fixed VPATH build error with (Michael Dickens) (r7880)
  • Fixed indeterminate parallel make (Eric Blossom) (#236, r7993,r8094)
  • Fixed missing flowgraph connection in (Johnathan Corgan) (#237, r7994)
  • Fixed incorrect FFT size compensation in (Tim Meehan) (r7999)
  • Fixed Subversion configuration check (Greg Troxel) (r8052)
  • Fixed RANDOM_MAX definition (Greg Troxel) (r8053)
  • Fixed missing header file include (Jason Potterf) (#193, r8054)
  • Fixed missing symlink in Debian package (Johnathan Corgan) (r8055)
  • Fixed missing peak hold initialization in numbersink2 (Josh Blum) (r8098)
  • Fixed gr.udp_source,sink for Win32 (Don Ward) (#194, r8100)

Documentation updates[edit]

  • Updated top-level README with current information (Eric Blossom) (r7291)
  • Added Python docstrings to generated documentation (Firas Abbas) (r7509)
  • Updated numerous header file comments (Firas Abbas) (r7517)
  • Updated gr.hier_block2 documentation (Johnathan Corgan) (r7806,r7807)

Miscellaneous updates[edit]

  • Cleaned up omnithread header file (Eric Blossom) (r7300)
  • Cleaned up distribution tools (Eric Blossom) (r7285, r7290)
  • Removed unfinished filter blocks (Johnathan Corgan) (#165, r7874)
  • Reorganized C++/Python exception handling (Eric Blossom) (r7295)
  • Updated Ubuntu Gutsy helper script to use python-wxgtk2.8 (Johnathan Corgan) (r7292)
  • Updated pkgsource configuration (Greg Troxel) (r7518)
  • Updated Debian packaging (Johnathan Corgan) (r7824)

Changes in Release 3.1.1 from Release 3.1.0[edit]

  • Updated autotools, cleanup (r6819, r6820, r6822)
  • Fixed regression in (#198, r6801)
  • Fixed "benchmark_rx not working" issue (#196, r6787)
  • Fixed "weird sideband" (I/Q phase offset) on multi-channel RX (#195, r6785)
  • Fixed intermittent I/Q swap on transmit (#179, r6784)
  • Fixed pktno warning in examples/digital (r6739)
  • Fixed loopback bug in gr-sounder (r6738)
  • Added complex and dual-channel options for Basic RX and LFRX (r6737)

Changes in Release 3.1.0 from Release 3.1.0rc0[edit]

  • Updated autotools, clean up (r6677, r6679)
  • Fix gr.top_block to allow proper subclassing (r6673)
  • Updated Debian packaging to reflect stable series, clean up (r6671, r6672)
  • Added workaround for broken libtool on Win32 (r6645)
  • Added missing include file (affects Win32 builds) (r6635)

Changes in Release 3.1.0rc0 from development trunk[edit]

Removed the wobbly bits (r6622:6624, r6626:6627):

  • gr-qtgui (incomplete)
  • gr-cvsd-vocoder and examples (buggy)
  • OFDM blocks and examples (incomplete)
  • DECT example (incomplete)
  • C++ dial tone example (incomplete)
  • USRP in-band signaling (incomplete)
  • libpmt and libmblock (incomplete)
  • Miscellaneous cruft (limbo, etc.)

GNU Radio Release 3.0.x (Stable Branch)[edit]

Latest Official Release Tarballs[edit]

Latest Unofficial Release Tarballs[edit]

The BuildGuide has the instructions for compiling and installing GNU Radio on your system.

Browse Source Code Repository[edit]


Releases tagged:

  • source:/gnuradio/tags/releases/3.0 (r3737)
  • source:/gnuradio/tags/releases/3.0.1rc1 (r3939)
  • source:/gnuradio/tags/releases/3.0.1 (r3958)
  • source:/gnuradio/tags/releases/3.0.2 (r3968)
  • source:/gnuradio/tags/releases/3.0.3rc1 (r4559)
  • source:/gnuradio/tags/releases/3.0.3rc2 (r4652)
  • source:/gnuradio/tags/releases/3.0.3 (r4669)
  • source:/gnuradio/tags/releases/3.0.3-usb-fix (r5186)
  • source:/gnuradio/tags/releases/3.0.4 (r6078)

Release History[edit]

Changes in Release 3.0.4 since 3.0.3[edit]

  • Updated license to GPLv3 or newer (r6076, r6077)
  • Updated to latest config.guess, config.sub (r6073)
  • Fixec gr_crc32 header prototype (r6072)
  • Updated AUTHORS (r5181, r6071)
  • Fixed gain setting for BasicTX and LFTX in digital examples (r6070)
  • Fixed wfm_rcv_pll stereo operation (r6069)
  • Fixed incorrect itemsize in gr_kludge_copy (r6068)
  • Fixed USRP stop() ordering (r6067)
  • Fixed realtime priority calculation (r6066)
  • Fixed USB kernel memory issues (r6065)
  • Fixed USRP "disappearing" with Linux kernel 2.6.20 (r5182, #148)
  • Fixed autoconf update issue (r5180, #143)

Changes in Release 3.0.3 since 3.0.2[edit]

Bug Fixes:

  • Fixed false sync problem with digital packet code (r4641)
  • Fixed gr.firdes.band_reject tap calculation (r4077, #113)
  • Fixed initial value problem with (r4404, #104)
  • Fixed USB read failure for MSYS/Cygwin platform (r4405, #115)
  • Fixed Powermate import operation MSYS/Cygwin platform (r4406, #102)
  • Fixed shared memory leak on NetBSD (r4420)

Minor Enhancements:

  • Merged trunk (@4071) versions of dqpsk and dbpsk modulators (r4072)
  • Stuff zeros in head of FPGA Tx pipeline when Tx FIFO is empty (r4446)


  • Clarified/updated READMEs (r4024, r4028, r4408, r4410, r4421)
  • Doxygen documentation now covers whole tree (r4422, #4)

Build System:

  • Use autoconf discovered path for $PYTHON in build (r4415,r4416,r4419,r4423,r4599 #133)
  • Fixed python usage in build check (r4026)
  • Fixed Python installation path failure on FC5 and FC6 (r4630,r4643, #39)
  • Fixed PYTHONPATH portability for MSYS platform (r4076, #110)
  • Fixed MSYS/Cygwin portability issues (r4403,r4426 #117)
  • Removed non-portable make rules in build system (r4027, r4074, #107, #108)
  • Removed non-portable 'ln -s' usage in usrp (r4075, #109)
  • Fixed OS/X 'make check' failure (r4598, #140)
  • Use PORTAUDIO_CFLAGS in gr-audio-portaudio build (r4029)
  • Cleaned up build system linking macro usage (r4649)


  • Remove extraneous includes in gr-video-sdl (r4073, #99)
  • Fixed compilation warning in (r4409)
  • Added QA test for gr.noise_source_f (r4412)
  • Removed obsolete bus_interface.v file (r4411)
  • Removed obsolete (r4413)

Changes in 3.0.2 since 3.0.1[edit]

  • Improve help on (r3964)
  • Fix missing files in distribution tarball (r3965, r3966, #97, #98)

Changes in 3.0.1 since 3.0.1rc1[edit]

  • Clarify bug fix for #95 (r3942)
  • Fix undefined type for MinGW platform (r3956, #93)

Changes in 3.0.1rc1 since 3.0[edit]

  • Updated AUTHORS file (r3740, r3750)
  • Changed line ending style on config/*.m4 and (r3751, r3776, r3929, r3931, #88)
  • Improved gr-video-sdl configuration error message (r3752, #84)
  • Fixed 'make clean' breakage in gr-trellis using BSD make (r3753, #87)
  • Fixed non-portable constructs in build (r3775, r3839, r3840)
  • Remove bashisms in build system (r3797, r3838)
  • Updated gr-how-to-write-a-block README (r3841)
  • Improved error message on size mismatch in fg.connect (r3849)
  • Eliminate compiler warnings (r3854)
  • Fix for systems missing include/linux/compiler.h (r3914)
  • Fixes for working with automake >= 1.10.0 (r3923, r3925, r3926, #92, #94)
  • Fix semaphore error handling for MinGW (r3937, #95)