After a year of development, a significant new release of the open-source digital signal processing platform GNU Radio 3.10 has been formed. The platform includes a set of programs and libraries that allow for the creation of arbitrary radio systems, modulation schemes, and the forms of received and transmitted signals that are defined programmatically, while basic hardware devices are used for capturing and generating signals. The project is distributed under the GPLv3 license. Most of the components of GNU Radio are written in Python, while performance-critical and latency-sensitive parts are written in C++, allowing the package to be used for real-time tasks.
In combination with universal programmable transceivers that are not tied to frequency bands and signal modulation types, the platform can be used to create devices such as base stations for GSM networks, devices for remote reading of RFID tags (electronic IDs and passes, smart cards), GPS receivers, WiFi, FM radio receivers and transmitters, TV decoders, passive radars, spectral analyzers, and so on. Besides USRP, the package can also utilize other hardware components for signal input and output; for example, drivers for sound cards, TV tuners, BladeRF devices, Myriad-RF, HackRF, UmTRX, Softrock, Comedi, Funcube, FMCOMMS, USRP, and S-Mini are available.
It also includes a collection of filters, channel codecs, synchronization modules, demodulators, equalizers, voice codecs, decoders, and other elements necessary for building radio systems. These elements can be used as building blocks for assembling a complete system, which, combined with the ability to define data flows between blocks, enables the design of radio systems even without programming skills.
Key Changes:
- A new module gr-pdu has been added, which moves tools for manipulating objects of the PDU (Protocol Data Unit) type, used for data transported between GNU Radio blocks. All PDU blocks from the gr-blocks module have been moved to the gr-network and gr-pdu modules, while a layer has been left in gr-blocks to ensure backward compatibility. Vector types of PDU are now available in the namespace gr::types, and functions for manipulating PDU are in the namespace gr::pdu.
- A new module gr-iio has been added, providing an input/output framework for organizing data exchange between GNU Radio and industrial devices based on the IIO (Industrial I/O) subsystem, such as PlutoSDR, AD-FMCOMMS2-EBZ, AD-FMCOMMS3-EBZ, AD-FMCOMMS4-EBZ, ARRADIO, and AD-FMCOMMS5-EBZ.
- Experimental support for the Custom Buffer class has been introduced, simplifying the transfer of data between GNU Radio blocks and hardware accelerators based on GPU, FPGA, and DSP. The use of custom_buffer eliminates the need to write special blocks to utilize GPU acceleration, allowing direct movement of data from the GNU Radio ring buffer to GPU memory, launching CUDA kernels, and returning results to GNU Radio buffers.
- The logging infrastructure has been transitioned to use the spdlog library, enhancing the ease of working with logs, eliminating the need for iostream and cstdio, providing support for libfmt expressions for string formatting, and modernizing the interface. The previously used Log4CPP library has been removed from dependencies.
- The development has shifted to using the C++17 standard. The boost::filesystem library has been replaced with std::filesystem.
- Compiler requirements have been raised (GCC 9.3, Clang 11, MSVC 1916) along with dependencies (Python 3.6.5, numpy 1.17.4, VOLK 2.4.1, CMake 3.16.3, Boost 1.69, Mako 1.1.0, PyBind11 2.4.3, pygccxml 2.0.0).
- Python bindings for RFNoC blocks have been added.
- Support for Qt 6.2 has been integrated into the gr-qtgui blocks for building graphical interfaces. The GRC (GNU Radio Companion) graphical interface has been updated to include the “—output” option for hierarchical blocks.
Source: opennet.ru
