GNU Radio 3.9.3.0-rc1

GNU Radio is a free software development toolkit that provides signal processing blocks to implement software-defined radios and signal-processing systems. It can be used with external RF hardware to create software-defined radios, or without hardware in a simulation-like environment. It is widely used in hobbyist, academic, and commercial environments to support both wireless communications research and real-world radio systems.

Tags signal processing radio sdr amateur radio
License GNU GPL
State stable

Recent Releases

3.9.3.0-rc114 Sep 2021 07:05 minor feature: 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. 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 (incorrect constants). Improve autoscaling for vector sinks. 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). up code that was generating warnings. 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 res
3.9.2.011 Jun 2021 06:05 minor feature: 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. 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 (incorrect constants). Improve autoscaling for vector sinks. 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). up code that was generating warnings. 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 res
3.9.2.0-rc104 Jun 2021 06:05 minor feature: (internal) Build system improvements and. (internal) Use C++14 features instead of Boost where possible. Fewer compiler warnings (due to code, not removal of warnings!). cmake: standard FindGSL used in lieu of custom one, so OOTs should no longer copy this module from the GNU Radio tree if needed. modtool: better exception/error handling. modtool: will non-interactively add blocks with no parameters (--argument-list=""). PyBind11 header hash hotr (gr-utils/bindtool/scripts/binding-hash-hotr.zsh) makes life easier. Block param values can be shown as expressions and/or evaluated values. Under the View menu, see "Show parameter..." options. Better handling of gui hints, avoid hiding widgets in cases where some have GUI hints and some do not. Ensure that strings are valid utf8 when evaluating parameters. Save embedded python blocks/modules to hier_block_directory. Save config and update recent file sub-menu before executing flowgraph. Revert to previous "block id" display behavior. drag n' drop with Quartz (macOS) backend. C++ generated code: remove gnuradio prefrom linked libraries. Python generated code: pregenerated modules with flowgraph id. connect() will be called for hier blocks even if they don't have ports. Check for PyYAML 3.11 (was checking for 3.10 even though 3.11 was required). Default buffer size can be adjusted by setting buffer_size in the Default section of the GNU Radio config file. Otherwise, the longstanding default of 32768 is used. Windows/Python: add DLL search path, as required by newer versions of Python. Windows: reduce priority of Windows native audio to LOW, preferring Portaudio. Message De: prints warning when a non-PDU message is received on the Print PDU port. File Source handles EOF properly in non-seekable files (e.g., pipes). Several bounds checking and boundary condition improvements. Remove DC Spike AutoSync algorithm. MSK timing error detector improvement. Python bindings include control_loop parent class in child class. Correl
3.9.1.023 Mar 2021 03:16 minor feature: (internal) Build system improvements and. (internal) Use C++14 features instead of Boost where possible. Fewer compiler warnings (due to code, not removal of warnings!). cmake: standard FindGSL used in lieu of custom one, so OOTs should no longer copy this module from the GNU Radio tree if needed. modtool: better exception/error handling. modtool: will non-interactively add blocks with no parameters (--argument-list=""). PyBind11 header hash hotr (gr-utils/bindtool/scripts/binding-hash-hotr.zsh) makes life easier. Block param values can be shown as expressions and/or evaluated values. Under the View menu, see "Show parameter..." options. Better handling of gui hints, avoid hiding widgets in cases where some have GUI hints and some do not. Ensure that strings are valid utf8 when evaluating parameters. Save embedded python blocks/modules to hier_block_directory. Save config and update recent file sub-menu before executing flowgraph. Revert to previous "block id" display behavior. drag n' drop with Quartz (macOS) backend. C++ generated code: remove gnuradio prefrom linked libraries. Python generated code: pregenerated modules with flowgraph id. connect() will be called for hier blocks even if they don't have ports. Check for PyYAML 3.11 (was checking for 3.10 even though 3.11 was required). Default buffer size can be adjusted by setting buffer_size in the Default section of the GNU Radio config file. Otherwise, the longstanding default of 32768 is used. Windows/Python: add DLL search path, as required by newer versions of Python. Windows: reduce priority of Windows native audio to LOW, preferring Portaudio. Message De: prints warning when a non-PDU message is received on the Print PDU port. File Source handles EOF properly in non-seekable files (e.g., pipes). Several bounds checking and boundary condition improvements. Remove DC Spike AutoSync algorithm. MSK timing error detector improvement. Python bindings include control_loop parent class in child class. Correl
3.9.1.0-rc119 Mar 2021 10:25 minor feature: Release v3.9.1.0-rc1 Signed-off-by: Jeff Long lt;willcode4@gmail.com gt;.
3.10.0.0git19 Feb 2021 06:05 minor feature: Josh Morman. Thomas Habets. Jacob Gilbert. Andrej Rode. Ryan Volz. We now require commits to be signed off (DCO); this means you have to attach -s to your git commit command line. License headers now SPDX format. C++14. use C++11 facilities in a lot of places where Boost was still used, especially smart pointers, range loops. lambdas where boost::bind was used. C11. Dependency versions: Python 3.6.5 numpy 1.13.3 VOLK 2.4.1 CMake 3.10.2 Boost 1.65 Mako 1.0.7 PyBind11 2.4.3 . Python 3.6.5. numpy 1.13.3. VOLK 2.4.1. CMake 3.10.2. Boost 1.65. Mako 1.0.7. PyBind11 2.4.3. Compiler options: GCC 8.3.0 Clang 11.0.0 / Apple Clang 1100 MSVC 1910 (Microsoft VS 2017 15.0) . GCC 8.3.0. Clang 11.0.0 / Apple Clang 1100. MSVC 1910 (Microsoft VS 2017 15.0). VOLK now "regular" dependency, not in-tree submodule. numpy now also a CMake-checked hard dependency for Python support. Exception Handling: throw by value, catch by reference (clang-tidy check). C++11: Emplace in vectors where you can; brings performance boni, but not included in clang-tidy-checks. Further clang-tidy based code optimizations: empty() instead of size() == 0. override where overriding virtual functions (which we do a lot). Logging: removed all std::cerr and fprintf(stderr, ) by GNU Radio logging. Logging: Changed logging format for many multiline error logs. purged snprintf, printf logging. There were a lot of places where a malloc'ed object was used internally, where that was inappropriate. Using simple instance-holding fields now. const for members that were only set at construction time is now desired, and implemented in most places. const - constexp in a lot of places. assert - static_assert. An exception-throwing block will now terminate the flow graph process, configurable through top_block. gr-utils cleanup, folder restructuring. config version checks installed CMake file will accept "at least this version" now. PyBind11 replaces SWIG Full tree conversion from SWIG to Pybind11 bindings . Full tree conversi
3.9.0.018 Jan 2021 11:05 minor feature: Josh Morman. Thomas Habets. Jacob Gilbert. Andrej Rode. Ryan Volz. We now require commits to be signed off (DCO); this means you have to attach -s to your git commit command line. License headers now SPDX format. C++14. use C++11 facilities in a lot of places where Boost was still used, especially smart pointers, range loops. lambdas where boost::bind was used. C11. Dependency versions: Python 3.6.5 numpy 1.13.3 VOLK 2.4.1 CMake 3.10.2 Boost 1.65 Mako 1.0.7 PyBind11 2.4.3 . Python 3.6.5. numpy 1.13.3. VOLK 2.4.1. CMake 3.10.2. Boost 1.65. Mako 1.0.7. PyBind11 2.4.3. Compiler options: GCC 8.3.0 Clang 11.0.0 / Apple Clang 1100 MSVC 1910 (Microsoft VS 2017 15.0) . GCC 8.3.0. Clang 11.0.0 / Apple Clang 1100. MSVC 1910 (Microsoft VS 2017 15.0). VOLK now "regular" dependency, not in-tree submodule. numpy now also a CMake-checked hard dependency for Python support. Exception Handling: throw by value, catch by reference (clang-tidy check). C++11: Emplace in vectors where you can; brings performance boni, but not included in clang-tidy-checks. Further clang-tidy based code optimizations: empty() instead of size() == 0. override where overriding virtual functions (which we do a lot). Logging: removed all std::cerr and fprintf(stderr, ) by GNU Radio logging. Logging: Changed logging format for many multiline error logs. purged snprintf, printf logging. There were a lot of places where a malloc'ed object was used internally, where that was inappropriate. Using simple instance-holding fields now. const for members that were only set at construction time is now desired, and implemented in most places. const - constexp in a lot of places. assert - static_assert. An exception-throwing block will now terminate the flow graph process, configurable through top_block. gr-utils cleanup, folder restructuring. config version checks installed CMake file will accept "at least this version" now. PyBind11 replaces SWIG Full tree conversion from SWIG to Pybind11 bindings . Full tree conversi
3.9.0.0-rc208 Jan 2021 03:16 minor feature: Call SWIG without -modern flag if new enough to make that inherent, thus removing warnings. Mako templating now strict_undefined. Show block comments by default. dynamically updated block namespaces (execute imports from templates). Name-lookup detection of dark color themes, adjusted input box color scheme. dvb_bbscrambler: LUT 8B alignment (private, but relevant for future usable optimization). incorrect "clear console" and "save console" labels. generator: flow_graph.py.mako now contains import for print_function for compatibility in Py2 generation. variable_config.block.yml now properly handles configparser /ConfigParser import. Change port types of all selected block on key-press cycling, not just first one. Always check for Python version in flow graph generation, not only in specific block types. Don't run stale flow graphs. Prevent search keystrokes from modifying flowgraph. file_sink flushes contents to file on stop(). file_meta_sink block YAML: emit proper default PMT dict. XMLRPC client/server block templates: use Py3 XMLRPC when possible. soft_dec_lut_gen now explicitly casts 2.0prec to int. map_bb: add missing definition of static constexpr size_t s_map_size. Reduce send_frame_size in UHD examples (broken after UHD v3.13.0.3-rc1). logpwrfft YAML was hiding FFT length. FFT frequency range calculation was occasionally off due to abuse ofnumpy.arange. GRC band pass filter taps block: use firdes.complex_band_pass when complex. firdes.root_raised_cosine gain for unity alpha. qtgui_chooser regained 3.7 capability to set default. Frequency Sink hovering now respects set units. GRC blocks had optional stream inputs. ignore len_tag_name in USRP Source YAML generator python. uhd_fft/uhd_siggen_gui: import order of sip and Qt. GRC example block errors. OS X: Meta modifier key support (eq. Ctrl on other platforms). configuration setting show_block_comments. Signal source cmd port. Message-based ZMQ blocks take bind argument, as necessary for N:1 patterns. Changes A
3.8.2.022 Aug 2020 16:05 minor feature: Call SWIG without -modern flag if new enough to make that inherent, thus removing warnings. Mako templating now strict_undefined. Show block comments by default. dynamically updated block namespaces (execute imports from templates). Name-lookup detection of dark color themes, adjusted input box color scheme. dvb_bbscrambler: LUT 8B alignment (private, but relevant for future usable optimization). incorrect "clear console" and "save console" labels. generator: flow_graph.py.mako now contains import for print_function for compatibility in Py2 generation. variable_config.block.yml now properly handles configparser /ConfigParser import. Change port types of all selected block on key-press cycling, not just first one. Always check for Python version in flow graph generation, not only in specific block types. Don't run stale flow graphs. Prevent search keystrokes from modifying flowgraph. file_sink flushes contents to file on stop(). file_meta_sink block YAML: emit proper default PMT dict. XMLRPC client/server block templates: use Py3 XMLRPC when possible. soft_dec_lut_gen now explicitly casts 2.0prec to int. map_bb: add missing definition of static constexpr size_t s_map_size. Reduce send_frame_size in UHD examples (broken after UHD v3.13.0.3-rc1). logpwrfft YAML was hiding FFT length. FFT frequency range calculation was occasionally off due to abuse ofnumpy.arange. GRC band pass filter taps block: use firdes.complex_band_pass when complex. firdes.root_raised_cosine gain for unity alpha. qtgui_chooser regained 3.7 capability to set default. Frequency Sink hovering now respects set units. GRC blocks had optional stream inputs. ignore len_tag_name in USRP Source YAML generator python. uhd_fft/uhd_siggen_gui: import order of sip and Qt. GRC example block errors. OS X: Meta modifier key support (eq. Ctrl on other platforms). configuration setting show_block_comments. Signal source cmd port. Message-based ZMQ blocks take bind argument, as necessary for N:1 patterns. Changes A
3.8.1.010 Apr 2020 19:45 minor feature: Clang-tidy improvements Throw exceptions by value, catch by reference Emplace_back where applicable Empty() instead of vector::size() == 0 . Throw exceptions by value, catch by reference. Emplace_back where applicable. Empty() instead of vector::size() == 0. Use CMake to check for endianness instead of BOOST_BIG_ENDIAN. Scipy becomes optional dependency (for polar channel code construction). Use Boost.UTF instead of cppunit. FindQwt paths. FloatAlmostEqual unittest assert function wrongly passing on sequence types. Only require boost unittest when testing is enabled. FindLOG4CPP typo. Numpy.fft(pack) imports. Several scipy imports that can be done with numpy alone. Block gateway shadowed system port. Flaky message passing unit test contained timeout (not the test's job). Ctrlport/rpcaggregator Co: removed storage of references to scope-lifetime objects. Sine table generation python was wrong. Get_tags_in_range for delay (end-start). Premature tag pruning. Release flattened flowgraph after stopping; restartability/shutdown. Clipping in FM receiver: remove superfluous gain. C++ generation for multiple blocks. Portaudio source: lock acquisition. Rotator VOLK workaround. Map_bb buffer overflow. Map_bb thread safety. Additive_scrambler count based reset. Heap corruption in async_decoder. Cc_encoder was broken for constraint lengths 8. Restore Boost 1.53 compat. no longer requiring unnecessary key in edit_box_msg. Examples under Py3. Multichannel objects not populating channels. Wrong use of input - raw_input. Allow empty argument list. Testing. Check for and deny TSB under Python. QA addition. Correct path for C++ QA tests. Several with YAML files. Nested objects now properly populate namespaces. Comments now included in block bounds calculation. Wiki documentation link removed from OOT blocks' docs tab. Dragging connections to auto-hide ports works now. Generated and re-generated several example flowgraphs. Bokeh_layout module name. Revert toggle buttons to text
3.8.1.0-rc117 Feb 2020 21:25 minor feature: Alba Mendez me@alba.sh. Anders Kalør anders@kaloer.com. Artem Pisarenko artem.k.pisarenko@gmail.com. Bastian Bloessl mail@bastibl.net. Brennan Ashton bashton@brennanashton.com. Chris christopher.donohue@gmail.com. Clayton Smith argilo@gmail.com. CMorin barthy42@laposte.net. Daniel Estévez daniel@destevez.net. Davide Gerhard rainbow@irh.it. Derek Kozel derek.kozel@gmail.com. duggabe. Glenn Richardson glenn.richardson@live.com. Grant Cox grant.cox@deepspaceamps.com. Gwenhael Goavec-Merou gwenhael.goavec-merou@trabucayre.com. Håkon Vågsether haakonsv@gmail.com. Igor Freire igor.auad@gmail.com. Jan Kraemer kraemer.jn@gmail.com. japm48. Josh Morman jmorman@perspectalabs.com. karel. luz.paz. Marc L marcll@vt.edu. Marcus Müller mmueller@gnuradio.org. Martin Braun martin.braun@ettus.com. Michael Dickens michael.dickens@ettus.com. Michael Roe mroe@cornstalk.org.uk. Nathan West nwest@deepsig.io. Nicolas Cuervo cuervonicolas@gmail.com. Philip Balister philip@balister.org. rear1019 rear1019@posteo.de. RedStone002. Ron Economos w6rz@comcast.net. Ryan Schutt. Ryan Volz rvolz@mit.edu. Sebastian Koslowski sebastian.koslowski@gmail.com. Sebastian Müller gsenpo@gmail.com. Sylvain Munaut tnt@246tNt.com. Terry May terrydmay@gmail.com. Thomas Habets thomas@habets.se. Vasil Velichkov vvvelichkov@gmail.com. Volker Schroer. wcampbell wcampbell1995@gmail.com. clang-tidy improvements Throw exceptions by value, catch by reference emplace_back where applicable empty() instead of vector::size() == 0 . Throw exceptions by value, catch by reference. emplace_back where applicable. empty() instead of vector::size() == 0. FindQwt paths. floatAlmostEqual unittest assert function wrongly passing on sequence types. Only require boost unittest when testing is enabled. FindLOG4CPP typo. block gateway shadowed system port. Flaky message passing unit test contained timeout (not the test's job). ctrlport/rpcaggregator Co: removed storage of references to scope-lifetime objects. Sine table generation
3.8.0.010 Aug 2019 03:18 minor feature: Roughly 36 dB, (ETOOMANY). .so versioning. C++11. merged the wholeness of the next branch. Dependency version bumps: CMake, GCC, MSVC, Swig, Boost. New dependencies: MPIR/GMP, Qt5, gsm, codec2. Removed dependencies: libusb, Qt4, CppUnit. Python: Python 2 Python 3 compatible. 3.8 will be the last Py2k-compatible release series. gengen was replaced by templates (if you don't know gengen, don't do any research; save yourself that sorrow). Modern CMake (as far as feasible at this point). VOLK version updated to v2.0.0. .clang-format file now dictates coding style. clang-format'ed the whole tree. installed CMake files now tell about configuration. reworked fractional tag time handling, especially in the context of resamplers. C++ generation as option. YAML instead of XML. removed blks2. much better canvas tooling. consistent gobject usage. ROUNDED ARROWS. moving from Qt4 to Qt5. gr_modtool now vastly improved. improved versatility. removed in-tree libgsm, libcodec2, use system-wide libs. Modules gr-comedi, gr-fcd and gr-wxgui are gone. nobody could remember who used this, or for what. It has seen 0 active code contributions in the 3.7 lifecycle. python-based packet_encoder and related tools: that were sporadic and never, so after long deprecation, we're removing it. since it's currently untestable by the CI, it's being removed, as there was no code contributions. Generally, we strive to include all batteries with GNU Radio. Re-integration within a more general SDR interface would be desirable. removed PyQwt (dead) based tools. Unmaintained, breaks on increasingly many systems, always was slower than Qtgui. We've been starting to tell people to migrate to Qt since at least 2015. Now, we're finally removing it. Maitland Bottoms bottoms@debian.org. Abhishek Bhowmick abhowmick22@gmail.com. Achilleas Anastasopoulos anastas@umich.edu. Adrian Suciu adrian.suciu@analog.com. Alexander Willecke willecke@ibr.cs.tu-bs.de. Alexandru Csete oz9aec@gmail.com. Alistair Bird alistair.
3.8.0.0-rc222 Jul 2019 04:25 minor feature: 1fancyhat. Andrej Rode mail@andrejro.de. Andy Walls awalls.cx18@gmail.com. Geof Nieboer gnieboer@corpcomm.net. gr-sp shawnp@signalscape.com. Håkon Vågsether haakonsv@gmail.com. Martin Braun martin.braun@ettus.com. Philip Balister philip@balister.org. Ron Economos w6rz@comcast.net. PMT: in multiple places, we triggered undef. behaviour by accessing the first element of potentially empty uvectors. Windows audio for higher output multiples broken. QA: udp_source_sink flakiness. Several broken optimizations. 64-APSK partially wrong ordering. OOB access in interleaver. uncovered worst case LDPC LUT generation. Compiler Warnings. polar_encoder/_common: Memory leak. GRC bindings: DC filter was could not be disabled with IQ imbalance correction disabled. ctrlport: int64 for rpcbasic_inserter. Removed generation time from generated python code.
3.8.0.0-rc118 Jul 2019 15:45 minor feature: 1fancyhat. Andrej Rode mail@andrejro.de. Andy Walls awalls.cx18@gmail.com. Geof Nieboer gnieboer@corpcomm.net. gr-sp shawnp@signalscape.com. Håkon Vågsether haakonsv@gmail.com. Martin Braun martin.braun@ettus.com. Philip Balister philip@balister.org. Ron Economos w6rz@comcast.net. PMT: in multiple places, we triggered undef. behaviour by accessing the first element of potentially empty uvectors. Windows audio for higher output multiples broken. QA: udp_source_sink flakiness. Several broken optimizations. 64-APSK partially wrong ordering. OOB access in interleaver. uncovered worst case LDPC LUT generation. Compiler Warnings. polar_encoder/_common: Memory leak. GRC bindings: DC filter was could not be disabled with IQ imbalance correction disabled. ctrlport: int64 for rpcbasic_inserter. Removed generation time from generated python code.
3.7.13.428 Feb 2019 02:51 minor bugfix:
3.7.1124 Apr 2018 01:07 minor bugfix: The GNU Radio project tracks changes via Github pull requests. You can get details on each of the below by going to: https://github.com/gnuradio/gnuradio Note: Please see the release notes for 3.7.10.2 for details on the bug fixes included in this release. gnuradio-runtime #1077 Support dynamically loaded gnuradio installs (Josh Blum) gnuradio-companion #1118 Support vector types in embedded Python blocks (Clayton Smith) gr-audio #1051 Re-implemented defunct Windows audio source (Geof Gnieboer) #1052 Implemented block in Windows audio sink (Geof Gnieboer) gr-blocks #896 Added PDU block setters and GRC callbacks (Jacob Gilbert) #900 Exposed non-vector multiply const to GRC (Ron Economos) #903 Deprecated old-style message queue blocks (Johnathan Corgan) #1067 Deprecated blks2 namespace blocks (Johnathan Corgan) gr-digital #910 Deprecated correlate_and_sync block 3.8 (Johnathan Corgan) #912 Deprecated modulation blocks for 3.8 (Sebastian Müller) #1069 Improved build memory usage with swig split (Michael Dickens) #1097 Deprecated mpsk_receiver_cc block (Johnathan Corgan) #1099 Deprecated old-style OFDM receiver blocks (Martin Braun) gr-dtv #875 Added ability to cross-compile gr-dtv (Ron Economos) #876 Improved ATSC transmitter performance (Ron Economos) #894 Refactored DVB-T RS decoder to use gr-fec (Ron Economos) #898 Improved error handling and logging (Ron Economos) #900 Improved DVB-T performance (Ron Economos) #907 Updated examples to use QT (Ron Economos) #1025 Refactor DVB-T2 interleaver (Ron Economos) gr-filter #885 Added set parameter msg port to fractional resampler (Sebastian Müller) gr-trellis #908 Updated examples to use QT (Martin Braun) gr-uhd #872 Added relative phase plots to uhd_fft (Martin Braun) #1032 Replace zero-timeout double-recv() with one recv() (Martin Braun) #1053 UHD apps may now specify multiple subdevs (Martin Braun)