GNU Radio es un conjunto de herramientas de desarrollo de software libre que proporciona bloques de procesamiento de señales para implementar radios definidas por software y sistemas de procesamiento de señales . Se puede utilizar con hardware de radiofrecuencia (RF) externo para crear radios definidas por software, o sin hardware en un entorno similar a una simulación. Se utiliza ampliamente en entornos comerciales, académicos y de aficionados para respaldar tanto la investigación de comunicaciones inalámbricas como los sistemas de radio del mundo real.
El software GNU Radio proporciona el marco y las herramientas para crear y ejecutar aplicaciones de radio por software o simplemente de procesamiento de señales en general. Las aplicaciones GNU Radio se conocen generalmente como "gráficos de flujo", que son una serie de bloques de procesamiento de señales conectados entre sí, describiendo así un flujo de datos.
Como sucede con todos los sistemas de radio definidos por software , la reconfigurabilidad es una característica clave. En lugar de utilizar diferentes radios diseñadas para propósitos específicos pero dispares, se puede utilizar una única radio de uso general como interfaz de radio, y el software de procesamiento de señales (en este caso, GNU Radio) se encarga del procesamiento específico de la aplicación de radio.
Estos diagramas de flujo se pueden escribir en C++ o Python . La infraestructura de GNU Radio está escrita completamente en C++ y muchas de las herramientas de usuario (como GNU Radio Companion) están escritas en Python.
GNU Radio es un paquete de procesamiento de señales y parte del Proyecto GNU . Se distribuye bajo los términos de la Licencia Pública General GNU (GPL), y la mayor parte del código del proyecto está protegido por derechos de autor de la Free Software Foundation . [4]
GNU Radio, publicado por primera vez en 2001, es un paquete oficial de GNU . El filántropo John Gilmore inició GNU Radio con una financiación de 320.000 dólares estadounidenses a Eric Blossom para la creación de código y las tareas de gestión de proyectos. Una de las primeras aplicaciones fue la creación de un receptor ATSC en software.
El software de GNU Radio comenzó como una bifurcación del código Pspectra desarrollado por el proyecto SpectrumWare en el Instituto Tecnológico de Massachusetts (MIT). En 2004, se completó una reescritura completa de GNU Radio, por lo que hoy en día GNU Radio ya no tiene código Pspectra original.
Matt Ettus se unió al proyecto como uno de los primeros desarrolladores y creó el Universal Software Radio Peripheral (USRP) para proporcionar una plataforma de hardware para su uso con el software GNU Radio. En 2004, Matt fundó Ettus Research LLC y comenzó a vender USRP que funcionaban con GNU Radio. [5]
En septiembre de 2010, Eric Blossom renunció como líder del proyecto y fue reemplazado por Tom Rondeau. [6]
Al principio del proyecto, los desarrolladores principales comenzaron a realizar Hackfests semestrales . En 2011, el proyecto GNU Radio comenzó a realizar una conferencia anual, llamada "GRCon", que generalmente tiene un Hackfest el último día de la conferencia.
En marzo de 2016, Tom Rondeau renunció y fue reemplazado por Ben Hilburn como líder del proyecto y Johnathan Corgan, un mantenedor de larga data, como arquitecto jefe. [7]
En enero de 2018, Johnathan Corgan se retiró de su puesto de arquitecto jefe y fue reemplazado por Marcus Müller. [8]
En septiembre de 2020, GNU Radio pasó a formar parte del Instituto SETI (una organización de investigación y educación multidisciplinaria sin fines de lucro) para todos los fines financieros y contractuales. [9]
En octubre de 2020, Ben Hilburn y los funcionarios del proyecto en ese momento votaron para reorganizar el liderazgo del Proyecto de Radio GNU, formando una Asamblea General con un conjunto de estatutos que regulan los detalles de cómo opera la organización. [10] [11] Una Junta de tres miembros compuesta por miembros electos de la Asamblea General asumió los roles que anteriormente manejaba el líder del proyecto.
GNU Radio Companion es una interfaz gráfica de usuario que se utiliza para desarrollar aplicaciones de GNU Radio. [12] Se trata de la interfaz de usuario de las bibliotecas de GNU Radio para el procesamiento de señales . GRC fue desarrollado por Josh Blum durante sus estudios en la Universidad Johns Hopkins (2006-2007) y luego distribuido como software libre para el Hackfest de octubre de 2009. A partir de la versión 3.2.0, GRC se incluyó oficialmente en la distribución de software de GNU Radio.
GRC es, en efecto, una herramienta de generación de código Python. Cuando se compila un diagrama de flujo en GRC, se genera código Python que crea las ventanas y los widgets de la interfaz gráfica de usuario (GUI) deseados , y crea y conecta los bloques en el diagrama de flujo.
Actualmente, GRC admite la creación de GUI utilizando el kit de herramientas Qt .
GNU Radio ofrece muchos receptores de datos comunes para la representación gráfica y la visualización de datos, incluidas pantallas FFT, diagramas de constelaciones de símbolos y pantallas de osciloscopio. Estos se utilizan comúnmente tanto para depurar aplicaciones de radio como para la interfaz de usuario de una aplicación final.
Muchos usuarios crean "módulos fuera del árbol" para utilizarlos con GNU Radio. Para gestionarlos y las dependencias necesarias para ejecutar GNU Radio, la organización creó el proyecto PyBOMBS (Python Build Overlay Managed Bundle System). [13]