- gr-pdu: Protocol Data Units library
- gr-iio: Linux industrial I/O library (but not packaged in pkgsrc)
- Custom Buffers Support
- switch from Log4CPP to spdlog
Changed
SoapySDR support (gr-soapy)
GRC
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
gnuradio-runtime
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
gr-analog
Added an example for PLL Frequency Detector
Better names for parameters in PLL GRC blocks
gr-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
gr-digital
MPSK example updated to use a Linear Equalizer (replacing deprecated block)
gr-filter
Filter Delay documentation improvement
Interpolating FIR filter can generate C++ code
gr-dtv
VL-SNR bugs fixed (incorrect constants).
gr-qtgui
Improve autoscaling for vector sinks
Fix floating-point resolution problems in several widgets, due to interpretation of PMT doubles as floats
gr-uhd
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
gr_filter_design
"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
gr_modtool
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
This yields one common package to provide libfftw3 (double) and libfftw3f
(single) by default and optionally the Fortran bindings as well as
OpenMP and MPI variants, and those with long double or quad precision.
This changes all packages depending on fftwf in the same commit to minimize
the time of inconsistency. Soon, math/fftwf will disappear.
Changed
C++14
C11
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
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
Doxygen now uses MathJax, full LaTeX installation no longer required
GRC
start flowgraph in folder where it resides
gnuradio-runtime
When calculating offsets in non-integer rate FEC, lround
default seed for gr::random now actually as documented time-dependent
loggers moved from gr::block to gr::basic_block
PMT serialization
PMT dicts no longer indistinguishable from pairs
PMT symbol hashing no longer suffers under oddball own implementations
gr-audio
Increased ALSA buffer nperiods
gr-blocks
add, add_const VOLK’ized, templated
this seems to break things in other places, even if it proves to be mathematically identical
wavfile infrastructure: libsndfile now dependency
gr-digital
transcendental block: default to 32 bit float complex, not double
Linear equalizer: separate adaptive algorithm, allows for using e.g. trained sequences instead of the classical LMS, CMA
DFE: better structure for decision history
gr-dtv
LDPC encoder: template functions instead of #defined macros
LDPC encoder: smaller tables through uint16_t for index tables
gr-fec
API uint8_t, not char
gr-fft
FFT blocks/functions templatized
gr-filter
logging format
rational_resampler_base -> rational_resampler
gr-uhd
Required UHD version bumped to 3.9.7
logging format
Deprecated
gr-analog
sig_source: freq port will be removed in the future
gr-audio
audio-sink, -source: Windows audio sink/source deprecated, the portaudio
sink/source works even better under windows anyway
gr-digital
In favor of symbol_sync, deprecate:
clock_recovery_mm
msk_timing_recovery
pfb_clock_sync
Added
C++ Generation all over the place
PyBind bindings + generator
gnuradio-runtime
block_gateway: set_max_output_buffer
GR_PREFS_PATH environment variable sensitivity to configure the path to the
config file
gnuradio-config-info --print-all
GRC
option to toggle ID visibilities globally
Validation check for QT GUI hints
Python snippets
block header parsing tool
block header parsing tool (GSoC 2019)
gr_modtool
option to convert blacklisted files
gr-analog
sig_source: cmd port adds support for dicts, setting of frequency, amplitude,
offset and phase parameters
gr-blocks
selector now has control message ports
Rotator-based freq shift convenience wrapper
Message-to-Variable and vice versa blocks
DC Spike removal
IQ Swap
Complex to interleaved char / short: scaling option
Delay block: control message port
Phase Shift block with message port
wavfile_sink, _source can now deal with a lot of audio formats: uncompressed
WAV/AIFF, µ- and A-law compressed audio, OGG/Vorbis, FLAC, even octave files
Stream Demux, which demuxes streams according to lengths vector
rotator: phase() getter
gr-digital
OFDM: multiple CP lengths
ofdm_equalizer_simpledfe: enable_soft_output
Constellation Encoder
Constellation: normalization options
gr-fec
{en,de}code_rs_8, {en,de}code_rs_ccsds: Reed-Solomon en- and decoders
gr-fft
Windows:
Gaussian
Flat Top
Tukey
Window build() call now with default beta
gr-filter
GRC: File taps loader block
Low pass FFT filter convenience wrapper
ichar / ishort decimator
phase continuity for freq_xlating_fir_filter
gr-network
gr-network: a whole new networking blocks module!
TCP
UDP
Much better lockup/multithreading support than 3.7-era blks2
gr-qtgui
Azimuth/Elevation plot
Autocorrelation plot
Compass visualization
Dial control
Gauge: dial, level
Distance plot
LED-like indicator
Message-passing check box
Message-passing numeric control
Message-passing push button
Toggle Button
Eye sink
Vertical slider
gr-uhd
Filter API
UHD 4.0 support
Power Reference API
Bidirectional setting messages on both sink, source
gr-vocoder
Codec2 dev branch support
FreeDV: In/output rates can differ
FreeDV: text message output
gr-zeromq
C++ GRC templates
Tag filtering for tag-forwarding blocks
Removed
VOLK is no longer a submodule
Sphinx: consolidate into doxygen, or wiki-maintained block list.
Python 2
SWIG
gru python module
gnuradio-runtime
circular_file.cc
math/common_factor.hpp
gr-blocks
bin_statistics_f
log2_const
gr-digital
PFB clock sync: set_taps
deprecated old OFDM infrastructur
ofdm_frame_acquisition
ofdm_frame_sink
ofdm_insert_preamble
ofdm_sync_fixed
ofdm_sync_pn
ofdm_sync_pnac
ofdm_sync_ml
ofdm_receiver
digital_voice
gr-fft
malloc_float, _double: rely on VOLK
Goertzel: dtor superfluous
gr-filter
deprecated window function duplicates (use them from gr-fft!)
Fixed
CMake: Qwt, Log4Cpp detection
ctrlport strings unicodified
Freedesktop install script was not executed
Redundant icons installed
Path substitution on Windows was backslash-broken
YAML definitions: more than I can count
Cross-building: py interpreter at runtime != build time
gnuradio-runtime
ctrlport: unholy stored reference to stack-allocated object removed
Sine table generation for fixed point math
gr_unittest: floatAlmostEqual had a lot of false passes due abuse of all()
get_tags_in_range for delay < (end-start)
Premature tag pruning
release flattened flowgraph after stopping, fixes restartability/shutdown
problem
PMT serialization portability
latency issue caused by setting block alias on msg block
Windows logging errors
ctrlport: Thrift >= 0.13 broke
GRC
Tab widget ID visibilities
A lot of YAML templates
Default setting in qtgui chooser restored
Boolean parameters no longer switch buttons
Nested namespace handling
Don’t rely on set ordering in tests
configparser import
input box color theme on dark themes
Search box typing doesn’t inadvertedly interact with the rest of GRC anymore
gr_modtool
Empty argument lists allowed
Boost UTF replaced CppUnit, this needed to be done here, too
gr-analog
wfm left/right, filters
gr-audio
portaudio: lock acquisition was improper
gr-blocks
Throttle now uses monotonic clock
Tag debug only saved last work call’s tags
File sink flushes on stop
gr_read_file_metadata.py used to lose rx_time precision
File source big file handling under Windows
file_*: fseek errors used to be ignored
gr-digital
map_bb: thread safety, buffer overflows
additive_scrambler: reset was broken
Constellation scalefactor wasn’t always initialized
long-standing qa_header_payload_demux bug addressed by waiting for both RX and
TX, not only either
false triggers in correlate_access_code
gr-dtv
rate mismatch in ATSC flowgraphs
gr-fec
async_decoder Heap corruption
cc_encoder: constraint length K > 8 led to wrong output
gr-fft
thread safety of copy assignment/ctor
log power FFT Python
gr-filter
variable_band_pass_filter GRC complex taps input
RRC filter gain for alpha = 1
gr-qtgui
Remove copies of image data in returns by using move semantics
Remove bogus overriding in drawing functions of plot_raster, _waterfall
Edit MSG box: don’t require key to be set
Don’t check for Python2 libs
Number Sink ignored averaging setting
gr-uhd
UHD apps: Py3 fixes
USRP blocks: multichannel objects not properly populating channels
gr-video-sdl
YUV formats fixed
gr-zeromq
Don’t depend on deprecated ZMQ functionality
Unhandled exceptions now handled, much calmer
Avoid infinite blocking in tb.stop() by using ZMQ_LINGER
## [3.7.13.3] - 2018-06-13
### Fixed
#### Project Scope
- For non-C++11 compilers, the new cstdint include doesn't work out; conditionalized it.
## [3.7.13.2] - 2018-05-31
### Fixed
#### Project Scope
- Actually bumped version in CMakeLists.txt to 3.7.13.2; the 3.7.13.1 tag was tagged off-branch; maintainer failure to simultaneously push a commit that raises the internal version number to 3.7.14.0: this had to be reverted ASAP.
## [3.7.13.1] - 2018-05-31
### Fixed
#### Project Scope
- Actually bumped version in CMakeLists.txt
## [3.7.13.0] - 2018-05-31
### Fixed
#### Project Scope
- `boost::posix_time::[milli]second` takes integer numbers, and we now at least cast the floats to integers, as Boost 1.67 forced us to realize we're (incorrectly) using floating point her
- CMake: using regex to match compiler against "Clang" now enables correct build on OS X
#### GRC
- Fixed GRC bug which broke WX and Qt (by altering the template code), in multiple (less than awesome) steps
#### gr-blocks
- `float_array_to_int`: int32 limits were wrongly hardcoded.
- Fixed the undefined behaviour happening in `float_to_complex` when accessing the second input_items element in the single-input case
## [3.7.12.0] - 2018-04-01
### Software Engineering
- Changed Changelog format
- Introducing Semantic Versioning
- Change of development model: Rather than merging bugfixes to maint, merging maint to master, and next, if applicable, we'll be moving forward more in a typical management model: Development happens on master, and bugfixes are cherrypicked onto the maint-${RELEASE} branch. More info: http://lists.gnu.org/archive/html/discuss-gnuradio/2018-02/msg00133.html
- First attempt at having a .clang-format file to improve code contribution style quality. This is Work In Progress.
### Fixed
#### Project Scope
- Buildability on systems where custom CMake command would try to find "" (empty string) as executable
- Buildable with C++11 compilers (though deprecation warning-rich, due to `unique_ptr`)
- several previously improperly handled include directories now actually included in individual lib/CMakeLists
- Unit test/QA now parallelizable
- Logger works with log4cpp <= 1.1.2 both in and out of tree
- Python linkage under MinGW64
- Documentation Directory now uniformly "docs/" (instead of sometimes "doc/")
- `log` vs `logf` performance bugs
- on-time `pmt::mp("string")` calls (instead of cached PMTs) performance bug
- Doxygen build now reproducible
#### GRC
- Dialogs' parent windows
- Embedded Python Blocks now work in hierarchical GRC flow graphs
#### gnuradio-runtime
- `random.h`: Uniform integer Generation depended on Boost version > min version
- `random.h`: time-dependency when seeding with `0` replaced with actual standard seed
- block startup now synchronized via barrier
- New tag propagation policy "custom" for own implementation
- `get_tags_in_range` used `v.resize(0)` to clear vectors, which lead to unnecessary memory reallocations
- `logger_ptr` now always a pointer, no matter whether logging is enabled; fixes heap corruption bug
- `buffer[_reader]_sptr` superfluous grab/release performance bug
- BSD threading and shared mem compatibility
- PMT: `equal()` comparison
#### gr-utils
- Sorted files in `gr_modtool` makexml processing, leading to improved reproducibility of builds
#### gr-audio
- OS X: memcpy bug
- OS X: debug mode
- Non-Linux ALSA compatibibilty
#### gr-analog
- `fmdet_cf` now has GRC file
- `fastnoise_source`: non-threadsafe `libc` `rand()` replaced by XOROSHIRO128+
#### gr-blocks
- `simple_copy` Ctrlport example
- Metadata sink/source not closing file on `close()`
- `multiply_matrix` formerly used "magic int" value where its API expected enum (and that int wasn't covered)
- TCP connection ASIO bug
- `tags_strobe`: superfluous tags addition
- `vector_sink`: multithreading hazards on `data` access
- `tuntap_pdu`: MTU-sized IP packet reception
- `socket_pdu`: Garbage Collect closed TCP connections
#### gr-channels
- IQ imbalance block formula now mathematically correct now mathematically correct
- `selective_fading_model`: proper scaling of path length
#### gr-digital
- `additive_scrambler_bb`: tag triggered reset
- `stream_to_tagged_stream`: tag offset after `unlock()`
- `blks2/packet.py`: Flushing for small packets
- `interpolating_resampler`: GCC 4.0 compile error
- `constellation`: 16QAM demapper was wrong for one constellation point
- `chunks_to_symbols`: mutex-guard LUT against modification during use
- MSVC compatibility throug `and` -> `&&` etc
- `crc32_bb`: handle unpacked bytes correctly
- `ofdm_carrier_allocator`: catching wrong allocations instead of crashing
#### gr-dtv
- All examples now are installed
- DVB-T2: Removed L1 post scrambling in spec v1.1.1 mode
#### gr-fcd
- Building on non-Linux systems
- Extended symbol bug in Reed-Solomon encoder
- DVB-T Cell identifier
#### gr-fcd
- Building on non-Linux systems
#### gr-fec
- `channel_construction.py`: return int frozen bit output
- `GSL_LDFLAGS` propagation
- `polar_decoder` used to be flaky
#### gr-fft
- locking of fftw wisdom
- `window.cc`: removed NaN due to FP math
- compilation under MinGW
- `logpwrfft.py` reference scaling integer division bug
#### gr-filter
- Simpson's rule code removed in favor of GSL call
#### gr-qtgui
- Time sink: Segfault with tag trigger
#### gr-uhd
- Antenna selection in UHD apps
- `uhd_fft` scalar gain-capability
- Device selection for multi-device operations in UHD apps
- TX streamer creation
#### gr-zeromq
- Multi-part messages reception
### Added
#### Project Scope
- Ninja (https://ninja-build.org) now a supported build system
#### gnuradio-runtime
- Python can now get `gr.WORK_CALLED_PRODUCE` and `gr.DONE`
#### gr-utils
- `gr_modtool`: Autocompletion, line editing
- `gr_modtool`: `copyrightholder` option
#### GRC
- "Create Duplicate"
- "Save a copy"
- BokehGUI
#### gr-blocks
- New `tag_share` block: take tags from one two input streams to one output stream
- `tag_gate`: tag filtering
- `file_source`: configurable `file_begin` stream tag
- `moving_average`: Vector mode (with element-wise MA)
- `plateau_detector`: threshold get/set
#### gr-digital
- `costas_loop_cc`: Optional loop variable outputs
- New `correlate_access_code_tag` block
- `glfsr` exposed through Python
#### gr-dtv
- 256QAM mode for ITU-T J.83B transmitter
#### gr-fec
- negative Polynomials in `cc_encoder`
#### gr-filter
- `symbol_sync_{cc|ff}`
#### gr-uhd
- `uhd_app.py`: selectable time/clock sources
- make `recv()` call's timeout parameterizable
- message-based RX tuning through sink, TX through source
### Changed
#### Project Scope
- VOLK version requirement: 1.4.0
- Minimal required SWIG version now 2.0.4
- GSL optional dependency
- Threw out completely unused `gr_??int` types
- Doxygen build no longer contains timestamps
- Doxygen build now reproducible
- Though factually before, now officially include ZeroMQ and Sphinx as optional dependencies in docs
#### gnuradio-runtime
- Python gateway allows variable number of ports
#### gr-utils
- `gr_modtool`: Block template now uses `numpy.float32` instead of float. 32bit float is actually the default GNU Radio type.e.
#### gr-blocks
- `vector_sink` can preallocate memory for desired amount of items
#### gr-digital
- `header_format_default` now sps>1-capable
- `correlate_acces_code` uses `GR_LOG`
#### gr-uhd
- `uhd_fft`: respect `lo_offset` in `set_bandwidth`
- `usrp_source`: freq tag now actually reflects last set frequency, even on multiple channels
#### gr-qtgui
- Labels: now with 98.121212388% improved floating point formatting
- Time Sink: Stem plot option exposed
### Deprecated
#### gnuradio-runtime
- `gr::sys_pri`
--------------------------------------------
ChangeLog v3.7.11
This is a feature release of the 3.7 API series, and incorporates all
the bug fixes implemented in the 3.7.10.2 maintenance release.
Contributors
(omitted in this commit log, sorry)
Changes
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 correlateandsync 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 mpskreceivercc 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)
#1101 Support TwinRX LO sharing parameters (Andrej Rode)
#1139 Use UHD internal normalized gain methods (Martin Braun)
gr-utils
#897 Improved python docstring generation in gr_modtool
------------------------------------------------------------
ChangeLog v3.7.10.1
This is the first bug-fix release for v3.7.10
This contains bug fixes primarily for GRC and DTV.
- GRC
* 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/checks.py.
- DTV
* 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.
- Digital
* 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.
- Analog
* Fix the derivative calculation in fmdet block.
- Builds
* Fix linking GSL to gr-fec.
* Use gnu99 C standard rather than gnu11 standard to maintain
support for GCC 4.6.3.
- Other
Minor spelling and documentation fixes.
Fix uhd_siggen_gui when using lo_locked.
(pkgsrc changes on gnuradio-core/Makefile.common)
- Following lines added
CXXFLAGS+= -pthread
.include "../../devel/cppunit/buildlink3.mk"
.include "../../math/gsl/buildlink3.mk"