GNU Radio es un proyecto de software libre orientado a radio definido por software, basado en Python; existen diversos medios para instalar el conjunto de herramientas que comprenden a GNU Radio, desde los repositorios utilizando apt hasta la instalación desde el código fuente del proyecto en la terminal, con ayuda de un script o con un gestor de paquetes. La ventaja de instalar GNU Radio desde el código fuente con respecto a los repositorios es la versión de instalación, ya que los repositorios pueden tardar en actualizarse con respecto a los avances del proyecto.

Anteriormente, GNU Radio desarrolló una primera versión de PyBombs que permitía la instalación del proyecto de una manera sencilla e inclusive intuitiva. Debido a la popularidad de PyBombs para la instalación de proyectos OOT de GNU Radio, se realizó una actualización que permite la fácil distribución e instalación de proyectos pero ahora es incluido desde el gestor pip de Python.

Instalación.

Primero se debe de instalar el gestor pip de Python, desde una terminal.

$ sudo apt-get install python-pip python-dev build-essential git
$ sudo pip install --upgrade pip
$ sudo pip install --upgrade virtualenv
$ sudo pip install setuptools

Una vez instalado el gestor de aplicaciones de Python, se procede a la instalación de PyBombs.

$ sudo pip install pybombs

Teniendo una vez instalado el proyecto de PyBombs, se descargan las recetas donde están indicadas las ubicaciones de los proyectos para su descarga.

$ sudo pybombs auto-config
$ sudo pybombs recipes add-defaults

Para que GNU Radio pueda ser ejecutado desde cualquier ubicación se tiene que indicar donde se instalará el proyecto.

$ sudo pybombs prefix init /usr/local -a myprefix

Una vez inicializado el prefijo, se procede a la instalación de GNU Radio desde PyBombs.

$ sudo pybombs -p myprefix install gnuradio

Para ejecutar la interfaz gráfica de GNU Radio, sólo se ejecuta el comando.

$ gnuradio-companion

Íconos de GNU Radio

Para la instalación de los íconos, desde una terminal se ejecuta el comando:

$ sudo /usr/local/libexec/gnuradio/grc_setup_freedesktop install

De este modo, de manera automática se agregarán los íconos a los diferentes menús de la distribución de Linux.

Error en instalación de paquetes

Durante la instalación de GNU Radio, PyBombs descargará todos los programas necesarios para el correcto funcionamiento de GNU Radio, por ello, se requiere de una conexión a Internet para la descarga. En caso de que exista un error en la instalación de algún prerequisito se debe de ejecutar nuevamente el comando de PyBombs o en su defecto instalar a través de pip o apt el paquete que genere algún problema durante la instalación de GNU Radio, por ejemplo, si el programa PyCairo no se instala correctamente se puede utilizar el siguiente comando:

$ sudo pip install pycairo

Error en instalación de apache-thrift para Ubuntu 18.04 LTS

En Ubuntu 18.04 se puede presentar un error en la instalación de apache-thrift, para ello se debe de instalar el paquete directamente desde el código fuente.

Primero se descarga desde github

$ git clone https://github.com/apache/thrift.git

Una vez descargado se ingresa al folder donde se descargó y se ejecutan los siguientes comandos

$ ./bootstrap.sh

$ ./configure

$ ./configure --with-boost=/usr/local

$ ./configure  --enable-coverage

$ make

$ sudo make install

En caso de presentarse algún error al momento de ejecutar make se debe de correr de nuevo los comandos de configure, de este modo al ejecutar nuevamente make ya no se presentarán nuevamente los errores.

Descarga de paquetes de PyBombs

Si se desea instalar otros paquetes de GNU Radio se puede hacer desde PyBOMBS

$ sudo pybombs -p myprefix install gr-iio

Instalación de una versión específica de PyBombs

En caso de que se desee instalar una versión en específico se puede utilizar el siguiente comando

$ sudo pip install -Iv PyBOMBS==2.1.0

Descarga de recetas desde github

En versiones anteriores de PyBombs las recetas se descargan directamente desde la página de github con el comando:

$ pybombs recipes add gr-recipes git+https://github.com/gnuradio/gr-recipes.git
$ pybombs recipes add gr-etcetera git+https://github.com/gnuradio/gr-etcetera.git

Imágenes del firmware de USRP

Para poder utilizar las tarjetas USRP en el entorno de GNU Radio es necesario descargar las imágenes del firmware, esto se realiza con el siguiente comando:

$ sudo /usr/local/lib/uhd/utils/uhd_images_downloader.py

Otros comandos de PyBombs para GNU Radio

La aplicación de PyBombs tiene diferentes parámetros que permiten agregar, actualizar o remover diferentes elementos del entorno de GNU Radio.

usage: pybombs [-h] [--version] [-p PREFIX] [--prefix-conf PREFIX_CONF]
               [--config CONFIG] [--config-file CONFIG_FILE] [-r RECIPES] [-q]
               [-v] [-y]
               <command> ...
pybombs: error: argument <command>: invalid choice: 'upgrade' (choose from 'config', 'lint', 'remove', 'update', 'install', 'rebuild', 'refetch', 'fetch', 'help', 'show', 'digraph', 'inv', 'deploy', 'recipes', 'prefix')

Para actualizar el entorno o uno de los elementos de GNU Radio se utiliza el comando:

sudo pybombs -p myprefix update gnuradio

Si se desea conocer la lista de las aplicaciones instaladas,

sudo pybombs -p myprefix update inv

Actualización de GNU Radio

El entorno de GNU Radio se puede actualizar con el comando de update de PyBombs

sudo pybombs -p myprefix update gnuradio

En caso de que se presenten errores durante la actualización, puede que sea necesario mandar descargar nuevamente el código fuente de GNU Radio

sudo pybombs -p myprefix rebuild gnuradio

En caso de que todavía se presenten errores, es necesario reinicializar PyBombs, esto se hace eliminando diversas carpetas ocultas.

Una de ellas se ubica en la carpeta de Home, se llama .pybombs, que es donde se descargaron los archivos de recipes.

La segunda de ellas se ubica en /usr/local, se llama .pybombs, y en ella se encuentra el archivo que indica el prefijo de instalación de GNU Radio.

Finalmente se eliminan las carpetas relacionadas a las descargas del código fuente del entorno de GNU Radio, ubicado en /usr/local/src.

Una vez eliminado todos estos archivos, se procede a descargar los archivos recipes e indicar el prefijo. De este modo, PyBombs instalará el entorno de GNU Radio sin tomar en consideración las versiones previas descargadas.

En caso de que el problema de la actualización persista, será necesario eliminar todos los archivos de GNU Radio ubicados en usr/local/, realizando de este modo una desinstalación manual del entorno.

Permisos de UHD para GNU Radio

En caso de que al querer ejecutar un archivo de GRC que incluya el bloque de UHD y salga el error siguiente:

UHD Error:
    USB open failed: insufficient permissions.
    See the application notes for your device.

    RuntimeError: LookupError: KeyError: No devices found for ----->
Empty Device Address

Se debe a que no se tienen los permisos para utilizar el puerto USB, una solución rápida es ejecutar GRC con permisos de root.

$ sudo gnuradio-companion

Para evitar ejecutar GRC como superusuario, es necesario actualizar las reglas, en primera instancia hay que localizar el archivo de las reglas de UDH, copiar el archivo en la ubicación de las reglas y finalmente volver a cargar las reglas del sistema.

$ sudo find / -name uhd-usrp.rules
/usr/local/src/uhd/host/utils/uhd-usrp.rules
/usr/local/lib/uhd/utils/uhd-usrp.rules

$ sudo cp /usr/local/src/uhd/host/utils/uhd-usrp.rules /etc/udev/rules.d/

$ sudo udevadm control --reload-rules

Conclusión.

El proyecto de PyBombs de GNU Radio ha mostrado un cambio que puede interpretarse como positivo, ya que permite agregar proyectos OOT de una manera sencilla e incluso modificar las recetas para proyectos personales y facilitar su distribución e instalación.

@viktor_ivan