The June updates for GNU Radio are out. Here is the changelog summary for v3.9.2.0.

[] - 2021-06-10


SoapySDR support (gr-soapy)

The new gr-soapy built-in module provides access to Soapy hardware drivers using the SoapySDR driver framework. See for more information.

If SoapySDR 0.7.2 or newer is available during GNU Radio configuration, the gr-soapy module will be enabled.

The SoapySDR framework and Soapy driver modules are not maintained by the GNU Radio project. Driver modules are dynamically discovered and linked. They may be added and updated independently from the GNU Radio release cycle.


  • Parameter expressions and/or values can be displayed in blocks on the flowgraph. Previously, only values were displayed. Look for the “Show Parameter …” toggles under the View menu.
  • Deprecated blocks are shown in a distinct color (orange), and the optional deprecated property has been added to block yaml
  • Dark theme works better, especially for parameter fields
  • Vector length is now correctly applied to all input ports
  • Validation has been improved. Raw types are validated. Port connections are checked by type rather than by item size.
  • Variable names that cause name conflicts in Python code (e.g., with package names) are rejected
  • Bus logic fixes
  • Blocks can no longer be dragged off the screen and lost forever


  • Remove pmt::pmt_* functions, which were not actually implemented. This is technically an API change, but any use of the API would have resulted in a link error.
  • Remove Python bindings for internal buffer functions


  • Added an example for PLL Frequency Detector
  • Better names for parameters in PLL GRC blocks


  • Consistent naming for Vector Length parameter in GRC blocks
  • count_bits uses VOLK popcnt for better performance (used for example in the Correlate Access Code block)
  • Rotator block phase increment parameter is controllable via a message, and a tag can be added at the point where the increment is adjusted


  • MPSK example updated to use a Linear Equalizer (replacing deprecated block)


  • Filter Delay documentation improvement
  • Interpolating FIR filter can generate C++ code


  • VL-SNR bugs fixed (incorrect constants).


  • Improve autoscaling for vector sinks
  • Fix floating-point resolution problems in several widgets, due to interpretation of PMT doubles as floats


  • Add policy enum to Python bindings for tune_request
  • Additional time spec options on UHD blocks (PC Clock on Next PPS, GPS Time on Next PPS)
  • Fix up code that was generating warnings
  • Fix command handler logic to apply commands from messages to the correct channel


  • “File/Save” is disabled until the taps have been computed, and the GUI is reset after a save, to make it clearer which data is being saved.
  • Entries are hidden for parameters that do not apply to the selected filter type.
  • Save window type as an integer instead of a Python enum name


  • Improve validation of module and block names

Build System and Infrastructure

  • Improved messages related to dependencies MPIR and GMP. Only one of these packages is required, and the previous error messages were confusing.
  • Cleaner builds for Windows and Conda. A number of general cmake improvements have resulted from this work.
  • In-tree packaging files for DEB and RPM, used with Launchpad and COPR
  • Added man pages for GNU Radio tools
  • Test code generation for all in-tree GRC examples
  • In GrPybind.cmake, PYBIND11_INCLUDE_DIR (incorrect) was changed to pybind11_INCLUDE_DIR


At LEAST the following authors contributed to this release. Note that only authors of commits are included here. A number of people contribute in other ways, including code review, documentation and testing.