GNU Radio

By Marcus Müller | October 20, 2023


Generally, up-to-date information on installing GNU Radio can be found on the Installing GNU Radio page on the wiki.

Release notes

[] - 2023-10-20



  • Add MAP_FIXED to circular buffer implementations using shm_open() and mmap backed by tmp files. These versions are not used by most system, and flaws were discovered during a FreeBSD build.
  • PMTs can be formatted for logging (format wrapper added).
  • New io_signature::make() variant replaces makev(), and optionally specifies buffer types. Previous variants are still valid, for backward compatibility. The single-stream make(), along with the makev(), make2() and make3() variants should not be used in new code, and may be removed in the future.
    make(int min_streams,
         int max_streams,
         const std::vector<size_t>& sizeof_stream_items,
         const gr::gr_vector_buffer_type& buftypes =
             gr::gr_vector_buffer_type(1, default_buftype::type));
  • Fix logging params to be compatible with C++20


  • Add “Choose Editor” button to Python block properties. Use the GTK app chooser. Save choice to the config file.
  • Correct Python Qt imports in Hier blocks and flowgraph templates.


  • Enable building the benchmark testing executable, which runs tests on various math functions.
  • Repeat block implemented as a basic block (vs sync interpolator) and output buffer allocation fixed.
  • Add a GRC example for Throttle usage.


  • Add set_sps() to Symbol Sync.
  • Header Format: Fix CRC and OFDM formats, add option to header_buffer to read bits lsb first, and refactor extract_bits functions as templates.
  • Constellation Sink uses different colors for each input by default.
  • Rework Constellation Soft Decoder, Constellation Object and LDPC Decoder Definition. Previously, the LDPC Decoder did not work at all. The sigma parameter was removed from the decoder and an optional noise power npwr parameter was added to the constellation.


  • Better support for vectorized output from UDP source. The payload size must still be a multiple of item size * vector size for this to work.


  • Range widget eng_slider and eng modes can now be selected in GRC.
  • Range widget and a couple of UHD apps now accept values on editingFinished, e.g., loss of focus, rather than on returnPressed. Since UIs generated by GRC do not have OK/Apply for such values, there is no “correct” behavior. The behavior is now selectable on the Entry widget.
  • Frequency Sink startup time improved where sample rate is low


  • RTLSDR buffer size may be specified


  • RFNoC NullSrcSink block added. The block may be both source and sink.
  • Add support and examples for RFNoC loopback.
  • RFNoC Rx Radio adds issue_stream_cmd() and block message handler.


  • Explicitly shutdown and close source/sinks to prevent hangs in some cases.
  • Require zmq.hpp (cppzmq) version with context_t.shutdown() defined. If shutdown is not defined, the gr-zeromq is disabled.


  • Add cmake-format support for generated modules

Build system and packaging

  • Update Read-the-docs config to include


  • Change Debian 11 to Debian 12 in CI