GNU Radio 3.9.0.0

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