Original author(s) | Eric Blossom |
---|---|
Developer(s) | GNU Radio Community President: Derek Kozel Maintainer: Josh Morman |
Initial release | 2001 |
Stable release | |
Repository | |
Written in | C++, Python |
Operating system | Cross-platform |
Available in | English |
Type | Radio |
License | 2007: GPL-3.0-or-later [2] 2001: GPL-2.0-or-later [3] |
Website | www |
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 radio frequency (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.
The GNU Radio software provides the framework and tools to build and run software radio or just general signal-processing applications. The GNU Radio applications themselves are generally known as "flowgraphs", which are a series of signal processing blocks connected together, thus describing a data flow.
As with all software-defined radio systems, reconfigurability is a key feature. Instead of using different radios designed for specific but disparate purposes, a single, general-purpose, radio can be used as the radio front-end, and the signal-processing software (here, GNU Radio), handles the processing specific to the radio application.
These flowgraphs can be written in either C++ or Python. The GNU Radio infrastructure is written entirely in C++, and many of the user tools (such as GNU Radio Companion) are written in Python.
GNU Radio is a signal processing package and part of the GNU Project. It is distributed under the terms of the GNU General Public License (GPL), and most of the project code is copyrighted by the Free Software Foundation. [4]
First published in 2001, GNU Radio is an official GNU package. Philanthropist John Gilmore initiated GNU Radio with the funding of $320,000 (US) to Eric Blossom for code creation and project-management duties. One of the first applications was building an ATSC receiver in software.
The GNU Radio software began as a fork of the Pspectra code that was developed by the SpectrumWare project at the Massachusetts Institute of Technology (MIT). In 2004, a complete rewrite of GNU Radio was completed, so today GNU Radio no longer has any original Pspectra code.
Matt Ettus joined the project as one of the first developers, and created the Universal Software Radio Peripheral (USRP) to provide a hardware platform for use with the GNU Radio software. In 2004, Matt founded Ettus Research LLC and began selling USRPs that worked with GNU Radio. [5]
In September 2010, Eric Blossom stepped down as Project Lead and was replaced by Tom Rondeau. [6]
Early in the project, the core developers began holding semi-annual Hackfests . In 2011, the GNU Radio project began holding a yearly conference, called "GRCon", which generally has a Hackfest on the last day of the conference.
In March 2016, Tom Rondeau stepped down and was replaced by Ben Hilburn as the Project Lead, and Johnathan Corgan, a long-time maintainer, as the Chief Architect. [7]
In January 2018, Johnathan Corgan retired from his role as Chief Architect and was replaced by Marcus Müller. [8]
In September 2020, GNU Radio became part of the SETI Institute (a non-profit, multi-disciplinary research and education organization) for all financial and contractual purposes. [9]
In October 2020, Ben Hilburn and the project officers at the time voted to reorganize the GNU Radio Project's leadership, forming a General Assembly with a set of by-laws that regulate details of how the organization operates. [10] [11] A three-member Board made up of elected General Assembly members took over the roles previously handled by the Project Lead.
The GNU Radio Companion is a graphical UI used to develop GNU Radio applications. [12] This is the front-end to the GNU Radio libraries for signal processing. GRC was developed by Josh Blum during his studies at Johns Hopkins University (2006–2007), then distributed as free software for the October 2009 Hackfest. Starting with the 3.2.0 release, GRC was officially bundled with the GNU Radio software distribution.
GRC is effectively a Python code-generation tool. When a flowgraph is compiled in GRC, it generates Python code that creates the desired graphical user interface (GUI) windows and widgets, and creates and connects the blocks in the flowgraph.
GRC currently supports GUI creation using the Qt toolkit.
GNU Radio provides many common plotting and data visualization data sinks, including FFT displays, symbol constellation diagrams, and scope displays. These are commonly used both for debugging radio applications and as the user-interface to a final application.
Many users create "out-of-tree modules" for use with GNU Radio. To manage these, and the dependencies required to run GNU Radio, the organization created the PyBOMBS (Python Build Overlay Managed Bundle System) project. [13]
Free software, libre software, libreware or rarely known as freedom-respecting software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, not price; all users are legally free to do what they want with their copies of a free software regardless of how much is paid to obtain the program. Computer programs are deemed "free" if they give end-users ultimate control over the software and, subsequently, over their devices.
The GNU Debugger (GDB) is a portable debugger that runs on many Unix-like systems and works for many programming languages, including Ada, Assembly, C, C++, D, Fortran, Haskell, Go, Objective-C, OpenCL C, Modula-2, Pascal, Rust, and partially others.
Source Mage is a source-based Linux distribution descended from Sorcerer. Components of this operating system are downloaded as source code and compiled locally on the user's computer.
GNU Mailman is a computer software application from the GNU Project for managing electronic mailing lists. Mailman is coded primarily in Python and currently maintained by Abhilash Raj. Mailman is free software, licensed under the GNU General Public License.
GnuTLS is a free software implementation of the TLS, SSL and DTLS protocols. It offers an application programming interface (API) for applications to enable secure communication over the network transport layer, as well as interfaces to access X.509, PKCS #12, OpenPGP and other structures.
Universal Software Radio Peripheral (USRP) is a range of software-defined radios designed and sold by Ettus Research and its parent company, National Instruments. Developed by a team led by Matt Ettus, the USRP product family is commonly used by research labs, universities, and hobbyists.
GNU Readline is a software library that provides in-line editing and history capabilities for interactive programs with a command-line interface, such as Bash. It is currently maintained by Chet Ramey as part of the GNU Project.
Tivoization is the practice of designing hardware that incorporates software under the terms of a copyleft software license like the GNU General Public License, but uses hardware restrictions or digital rights management (DRM) to prevent users from running modified versions of the software on that hardware. Richard Stallman of the Free Software Foundation (FSF) coined the term in reference to TiVo's use of GNU GPL licensed software on the TiVo brand digital video recorders (DVR), which actively block modified software by design. Stallman believes this practice denies users some of the freedom that the GNU GPL was designed to protect. The FSF refers to tivoized hardware as "proprietary tyrants".
Linux is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution (distro), which includes the kernel and supporting system software and libraries, many of which are provided by the GNU Project.
License compatibility is a legal framework that allows for pieces of software with different software licenses to be distributed together. The need for such a framework arises because the different licenses can contain contradictory requirements, rendering it impossible to legally combine source code from separately-licensed software in order to create and publish a new program. Proprietary licenses are generally program-specific and incompatible; authors must negotiate to combine code. Copyleft licenses are commonly deliberately incompatible with proprietary licenses, in order to prevent copyleft software from being re-licensed under a proprietary license, turning it into proprietary software. Many copyleft licenses explicitly allow relicensing under some other copyleft licenses. Permissive licenses are compatible with everything, including proprietary licenses; there is thus no guarantee that all derived works will remain under a permissive license.
The GNU Affero General Public License is a free, copyleft license published by the Free Software Foundation in November 2007, and based on the GNU GPL version 3 and the Affero General Public License (non-GNU).
Toybox is a free and open-source software implementation of over 200 Unix command line utilities such as ls, cp, and mv. The Toybox project was started in 2006, and became a 0BSD licensed BusyBox alternative. Toybox is used for most of Android's command-line tools in all currently supported Android versions, and is also used to build Android on Linux and macOS. All of the tools are tested on Linux, and many of them also work on BSD and macOS.
A free-software license is a notice that grants the recipient of a piece of software extensive rights to modify and redistribute that software. These actions are usually prohibited by copyright law, but the rights-holder of a piece of software can remove these restrictions by accompanying the software with a software license which grants the recipient these rights. Software using such a license is free software as conferred by the copyright holder. Free-software licenses are applied to software in source code and also binary object-code form, as the copyright law recognizes both forms.
The GNU General Public Licenses are a series of widely used free software licenses, or copyleft licenses, that guarantee end users the freedoms to run, study, share, and modify the software. The GPL was the first copyleft license for general use and was originally written by Richard Stallman, the founder of the Free Software Foundation (FSF), for the GNU Project. The license grants the recipients of a computer program the rights of the Free Software Definition. The licenses in the GPL series are all copyleft licenses, which means that any derivative work must be distributed under the same or equivalent license terms. It is more restrictive than the Lesser General Public License and even further distinct from the more widely-used permissive software licenses such as BSD, MIT, and Apache.
The Linux kernel is a free and open source, UNIX-like kernel that is used in many computer systems worldwide. The kernel was created by Linus Torvalds in 1991 and was soon adopted as the kernel for the GNU operating system (OS) which was created to be a free replacement for Unix. Since the late 1990s, it has been included in many operating system distributions, many of which are called Linux. One such Linux kernel operating system is Android which is used in many mobile and embedded devices.
A software GNSS receiver is a Global Navigation Satellite System (GNSS) receiver that has been designed and implemented using software-defined radio.
The following outline is provided as an overview of and topical guide to the Perl programming language:
Natron is a free and open-source node-based compositing application. It has been influenced by digital compositing software such as Avid Media Illusion, Apple Shake, Blackmagic Fusion, Autodesk Flame and Nuke, from which its user interface and many of its concepts are derived.
Software relicensing is applied in open-source software development when software licenses of software modules are incompatible and are required to be compatible for a greater combined work. Licenses applied to software as copyrightable works, in source code as binary form, can contain contradictory clauses. These requirements can make it impossible to combine source code or content of several software works to create a new combined one.