Post

Sevidor SDR usando sdrpp y RSP01

Sevidor SDR usando sdrpp y RSP01

Introducción

Desde hace un tiempo tengo en mente este pequeño proyecto. Tengo varios SDR (algunos mejores que otros), pero siempre es un engorro tener que enchufarlos al portátil junto con la antena y tener todo el montaje colgando del puerto USB.

Hace unos meses leí que existen programas que incluyen herramientas para funcionar como servidor. En esta entrada os explicaré cómo lo solucioné, pero antes de nada, aclaremos qué es un SDR.

¿Qué es un SDR? SDR son las siglas de Software Defined Radio (Radio Definida por Software). Estos dispositivos se distinguen de las radios convencionales en que gran parte de sus componentes —como filtros, moduladores y demoduladores— están gestionados por software en lugar de depender exclusivamente de la electrónica física.

Un SDR consta de un sintonizador con un oscilador de frecuencia variable, un amplificador, un mezclador, un filtro que convierte la señal a frecuencia intermedia y un conversor analógico-digital. Una vez que la señal está digitalizada, entra en juego el software.

En palabras más coloquiales, son radios de gran ancho de banda (normalmente receptores) que sirven para infinidad de aplicaciones: desde seguimiento de sondas y satélites hasta análisis de frecuencias y recepción de todo tipo de datos.

El Proyecto Para que un SDR funcione, necesitamos un software en el ordenador que controle el hardware. El problema habitual es la necesidad de estar físicamente conectado al dispositivo. El objetivo de hoy es configurar un servidor con todos los SDR conectados a sus antenas fijas, lo que nos permitirá conectarnos a él de forma remota, sentados cómodamente en el sofá.

SDR++

SDR++ es un proyecto de código abierto que ha ganado mucha popularidad recientemente por resolver uno de los problemas históricos de la radio definida por software: la fragmentación entre sistemas operativos. Al estar escrito completamente en C++ y evitar librerías pesadas, ofrece el mismo rendimiento y funcionalidad tanto en Windows como en Linux, macOS e incluso Android.

Más allá de su compatibilidad, su característica más relevante para nosotros es su arquitectura modular y su capacidad de gestión remota (casi total). El software permite visualizar el espectro de radiofrecuencia con una fluidez que no sobrecarga el procesador, algo vital cuando queremos dedicar los recursos del sistema a la decodificación de señales o al análisis de datos en lugar de a la interfaz gráfica. Además, su función de servidor facilita separar la antena de nuestra pantalla sin pérdida de calidad en los datos.

sdr++

RSP1 MSI2500 (El problema)

Este SDR es una copia china del RSP1 original de SDRplay. El chip original es una absoluta locura: con 12 bits de resolución (4 más de lo normal) y un ancho de banda de 10 MHz, lo que lo hace superpotente para casi cualquier uso.

El problema real es que, al ser una copia china, la placa no tiene la misma calidad que la original; sobre todo se nota en los filtros y en la cantidad de ruido que se cuela en bandas que no debería. Sin embargo, un punto a favor son sus 5 entradas de antena. Puedo tener 5 antenas optimizadas para bandas distintas, lo que me facilita la vida al evitar tener que conectar y desconectar cables para cambiar de frecuencia.

No obstante, el mayor inconveniente es la compatibilidad. Al ser un clon, el software oficial de SDRplay no lo detecta como original y no funciona. La pesadilla real será ponerlo en marcha y gestionarlo a distancia. Por eso he decidido usar SDR++, ya que es open source y me da la libertad de compilarlo desde el código fuente haciendo los cambios necesarios.

rsp1

Instalación del servidor

El servidor que lo va a mantener es un “ubuntu server”, por lo que la instalación va a correr en Linux. En nuestro caso no nos vale una instalación de las predeterminadas. Vamos a usar una solución que me dijo ericek111, un maquina, que lo que hizo fue integrar librerías para mirisdr-sdrpp en el código fuente de sdrpp, y creando su propia versión. Los pasos que vamos a seguir son los siguientes: Primero instalamos algunas competencias que necesita dsr++:

1
2
$ sudo apt update
$ sudo apt install build-essential cmake git libfftw3-dev libvolk2-dev libglfw3-dev libzstd-dev libhackrf-dev librtlsdr-dev

Lo segundo es clonar su repositorio:

1
2
$ git clone https://github.com/ericek111/SDRPlusPlus.git
$ cd SDRPlusPlus

Lo siguiente es la compilación y la instalación:

1
2
3
4
5
$ mkdir build
$ cd build
$ cmake .. -DOPT_BUILD_MIRISDR_SOURCE=ON
$ make -j$(nproc)
$ sudo make install

Si lo anterior no ha fallado (no aseguro nada), nos vamos a la parte del blacklist:

1
2
3
4
5
$ sudo bash -c 'cat <<EOF > /etc/modprobe.d/blacklist-msi.conf
  blacklist sdr_msi001
  blacklist msi001
  blacklist msi2500
  EOF'
1
$ sudo reboot

Y tras esto, con un poco de suerte, tendremos este sdr funcionando, cosa que no es nada fácil. ahora lo que vamos a ver es como conectarnos a este servidor de manera remota.

Ejecución del servidor

Bueno, hasta ahora ha funcionado todo mas o menos decente, si no ha habido ningún problema por el camino, claro esta. La ultima parte es de las mas sencillas. de momento no vamos a crear un servicio en “systemctl”, eso lo dejamos para el futuro. Antes que nada, es necesario tener sdr++ en otro ordenador o incluso en un Android, para que sea el cliente, desde donde nos vamos a conectar. Para ejecutar el sdr del servidor en modo servidor (valga la redundancia), tenemos que poner el siguiente comando:

1
sdrpp --server

Estando dentro de la misma red, conociendo la ip del servidor y el puerto (que por defecto es 5259), en sdr++ nos vamos a “fuentes” y seleccionamos “SDR++ Server” con la ip y el puerto.

server sdr++

Y ya estaríamos conectados.

Conclusiones y usos

ealmente no voy a profundizar en los usos, ya que al ser un SDR se puede utilizar para muchísimas cosas. Una aplicación habitual es escuchar conversaciones de PMR o la banda aérea en VHF, pero las posibilidades son infinitas.

En lo que sí quiero centrarme es en la cantidad de problemas que dan los SDR chinos. Al no llevar un chip estándar como el RTL-SDR, no tienen una configuración sencilla en Linux. Este proceso, que aquí os he contado como algo de “una tarde”, en realidad me ha llevado varios meses de peleas con distintos sistemas operativos, llegando incluso a tener que modificar el código fuente para que el software aceptara el dispositivo como un SDRplay.

Mi consejo es que no os compréis un clon chino, a menos que queráis vivir de primera mano la experiencia de la configuración manual.

Bibliografía

Algunos sitios web de donde he sacado la información: sdr-es, sdr++ , sdrplay , Reddit , marxy’s blog’

This post is licensed under CC BY 4.0 by the author.