SDR sobre Raspberry

 Las cuatro R que salvarán a la humanidad son: 

  • Reutilizar (darle utilidad a algo. El ejemplo más clásico es la venta de segunda mano, pero también cuando ampliamos la memoria de  un ordenador)
  • Reusar (dar nuevos usos a algo. El caso mas conocido es ofrecer el champú de niños, para adultos con cabello delicado) 
  • Reciclar (reincorporar los elementos al ciclo productivo). Toda la vida se han usado los residuos orgánicos como abono de los campos
  • Reducir, si todo lo anterior ya se ha hecho el residuo que queda debe ser compactado y destruido.
Pues esta entrada va de reusar una Raspberry pi como un receptor y/o un  servidor de radio definida por software SDR, es decir desempolvarla y darle nueva vida, y de paso refrescamos el Linux.

Vamos a detallar los elementos que necesitamos para ello:

  • Disponer de un dispositivo dongle SDR: En nuestro caso usaremos un  RTL-SDR.com v3
  • Disponer de una placa Raspberry Pi: que será una Raspberry Pi model 3 que no es el modelo más reciente y potente pero que nos resultara útil para nuestro proyecto
  • Cargar un SO en la microSD de la Raspberry Pi, para ello debemos disponer de:
    • Un lector de microSD en nuestro ordenador, en nuestro caso caso un Lexar MicroSD RDR Media 
    • Una tarjeta de memoria microSD (mínimo 8 GB, formateada como FAT es decir FAT32, El programa Raspberry Imagen  que es el que usaremos lo hace)
    • Una imagen que queremos usar (.iso o .img .xy) en la Raspberry para lo que deberemos descargarla de Internet teniendo en cuenta si el procesador de nuestra Raspberry es  de 32bits o de 64bits. Elegimos el SO que nos recomiendan que es la de 32bits. Tras la descarga debemos comprobar el checksum MD5 para verificar su integridad dado que suelen ser ficheros de gran tamaño ( > 1GB), por ejemplo en  en Apple se hace desde el terminal con el comando md5 <nombre del fichero> (El programa Raspberry Imagen  que es el que usaremos lo hace por defecto)
    • Un programa para copiar la imagen descargada en la memoria micro SD en nuestro caso nos decantamos por el que facilita Raspberry, el Raspberry Pi Imager, que es la versión 1.7.5 para iOS (2023)
      • Elegir el SO que queremos instalar en nuestro caso el Raspberry Pi OS (Hay muchas versiones del propio Raspberry Pi OS, de otros SO como Ubuntu, reproductores multimedia como Volumio o LibreELEC, emuladores de videojuegos como Retropie o Recalbox, u otras aplicaciones como 3Dprinting o FullpageOS, u una imagen que tengamos descargada en el ordenador como será el caso de piSDR, etc.)
      • Elegir el periférico o dispositivo donde almacenar el SO


      • Es software copia en una primera pasada y verifica la copia en una segunda pasada. También como ya hemos avanzado permite borrar (erased) y formatear la tarjeta de memoria SDmicro.
      • Como la descarga de internet y la copia requiere su tiempo es buena idea disponer de varias SDmicro con los distintos SO y configuraciones que deseemos, antes que estar todo el rato borrando y copiando.
    • Decidir que función queremos darle a la Raspberry + SDR 
      • Incluir un software de recepción SDR como SDR++ como un programa más
      • Crear un entorno SDR como piSDR
      • Crear un servidor SDR para conectarnos a él en remoto

Hay dos temas prácticos que descubrimos durante la configuración de la raspberry:

  • Las entradas USB están demasaido juntas para conectar sin problemas el dongle RTL-SDR.COM lo que resolvimos con una alargadera USB
  • El consumo del dongle es importante y dejo en evidencia el clon de la fuente de alimentación que teníamso y tuvimos que buscar otra. Ya puestos compramos la original de Raspberry para el modelo 4, junto a un adaptador macho USB-Micro / hembra USB-C
  • SER++ va justito con la Raspberry 3, lo que provoca algún hipo

Configurar el SO

    En cualquiera de los tres casos la primera vez que arranquemos la raspberry con el Raspberry OS o con piSDR debemos configurarlo 

    • Configurar primeramente: 
      • country (pais)
      • language (idioma)
      • timezone (zona horaria)
      • keyboard ( teclado). 
    • Con el comando de terminal locate podemos ver a-posteriori como han quedado
    • Definimos un usuario de trabajo  y su la contraseña.
    • Definir la pantalla.
    • Seleccionar la Wi-Fi e introducir la contraseña de la red wi-fi seleccionada.
    • Se comprueban actualizaciones (update software, advierte que puede ser una tarea costosa). También desde el terminal con el comando  sudo dpkg --configure -a
    • Es bueno rearrancarla (restart) para asegurar que los cambios se actualizan
    • Modificar las credenciales o contraseña por defecto (Usuario: pi Contraseña: raspberry) con el comando de treminal sudo passwd 
    • Crear usuarios adicionales si lo necesitamos con sudo adduser <nuevo_usuario> si queremos lo podemos añadir al gurpo de superusuario sudo usermod -aG sudo <nuevo_usuario> y conectarnos como el su <nuevo_usuario>, si queremos bloquear a un usuario haremos sudo usermod -L <usuario>
    • Habilitar SSH y VNC con $ ssh pi@pisdr.local Password: <nueva contraseña> si lo vamos a usar. VNC nos permite controlar la raspberry en remoto.
    • la versión del SO la podemos ver con cat /etc/release ... vemos que es la v11 (Bullseye)
    • la versión del procesador con lscpu

Necesitamos disponer de una  Raspberry Pi con el Raspberry Pi SO instalado, tras lo cual procederemos a   instalar el software  SDR++ para la distribución Debian de LINUX que es la base de la Raspberry OS.

Instalación de  SDR++

Aqui hay dos opciones:

  • Descargar los fuentes clonando el repositorio de git, compilarlos todos ellos e instalarlos: es un proceso largo y tedioso, que puede dar problemas y errores, y que solamente tiene sentido abordarlo si no estuvieran disponibles los paquetes del producto por parte del desarrollador, que no es el caso de Raspberry

  • Descargar los paquetes e instalarlos: es el procedimiento que recomienda el desarrollador del programa. 

sudo apt install libfftw3-dev libglfw3-dev libvolk2-dev libsoapysdr-dev libairspyhf-dev libiio-dev libad9361-dev librtaudio-dev libhackrf-dev 

Comentarios

Al arrancar con sdrpp este falla pues Glfw OPENGL 2.1 GLSL 

sudo apt-get upgrade 

sudo apt-get install freeglut3-dev

MESA_GL_VERSION_OVERRIDE=4.5

export MESA_GL_VERSION_OVERRIDE=4.5  

Una vez fijado el problema anterior encontramos que el arranque falla SoapySDR_Source not found (En estas estamos)  

La solución a este problema es según SSRpp:  "edit ~/.config/sdrpp/config.json and remove the entry (not just changing the entry to disabled) for soapy_source."

No tengo claro si hay que ejecutar en el terminal el comando volk_profile para optimizar math (tarda unos minutos en devolver el control) pero evita que se entrecorte el audio con frecuencia, no es malo hacerlo aunque ya esté hecho

Para arrancarlo bastará con teclear en el terminal el comando sdrpp

Como habrá comprobado en Raspberry Pi OS el navegador se llana Chromium que es navedador en código abierto de Google, y el buscador duckduckgo que permite la navegación provada, el bloqueo de rastreadores y el cifrado de las comunicaciones.

piSDR es una distribución LINUX configurada para el trabajo con  SDR en  Raspberry Pi y otras  SBC y  compatible  con varios dispositivos SDR. La última versión es la 6.1 (2023), hay una versión para 32b y otra para 64 bits. Nos permite de disponer de un conjunto de software de SDR desde el primer momento sin necesidad de hacer instalaciones con sus correspondientes problemas-
  • Descargar la última versión de la distribución y tal cual (con extension .xy) copiarla con Raspberry imagen en la SDmicro
  • Introducir la SDmicro en la Raspberry y encender
  • Configurar el SO como ya hemos visto anteriormente 
  • Ejecutar en el terminal el comando volk_profile para optimizar math (tarda unos minutos en devolver el control) pero evita que se entrecorte el audio con frecuencia
  • Ejecutar los programas ( con el comando de terminal  ps podemos ver si están en ejecucion)
    • SDR++ (OK) es el receptor más popular de SDR. Se pueden actualizar los controladores con sudo apt-get remove rtl-sdr aunque no es necesario. Lo único que encontramos es que se entrecorta el audio un poco (hipos) si se trabaja con una Raspberry 3
    • QtDAB (+dabMini no responde y se cuelga) (?):  config es un software decodificador DAB
    • GLRPT (?): Aplicación gráfica interactiva para recibir, decodificar  y visualizar imágenes LRPT de los satélites meteorológicos rusos  del tipo Meteor-M.
    • GPREDICT (OK): nos indica la posición de los satélites visibles a nuestra localización (QTH) para ello hay que configurar nuestras coordenadas. 
    • GQRX (OK) es un receptor de SDR de código abierto (open source). Solamente tiene un modo de muestro y no permite el directo por lo que la frecuencia más baja que se puede sintonizar es 23,891 MHz y la mas alta 1, 75GHz. Al igual que SDR++ se entrecorta el audio
    • IIO Oscilloscope Conection - OSC (?): El osciloscopio ADI IIO es una aplicación GUI multiplataforma que demuestra cómo interconectar diferentes placas de evaluación desde un sistema Linux. La aplicación admite el trazado de los datos capturados en cuatro modos diferentes (dominio del tiempo, dominio de la frecuencia, constelación y correlación cruzada). La aplicación también permite ver y modificar varias configuraciones de los dispositivos de la placa de evaluación.
    • Inspectrum (?): inspectrum es una herramienta para analizar señales capturadas, principalmente de receptores de radio definidos por software. Lógicamente para que funcione debemos tener un fichero con la captura de la señal a analizar
    • LimeSuite (?): para trabajar con Lime SDR
    • QuIST (?)
    • Universal Radio Hacker (?): detecta señales wi-fi
    • WSJTX (Fatal Error - KO)
    • SDRangel (?): software SDR para trnsmisión y recepción
    • WSJT-X (?):  agregador de mensajes usando los siguientes protocolos FST4, FST4W, FT4, FT8, JT4, JT9, JT65, Q65, MSK144, y  WSPR, así como  Echo para señales reflejadas en la Luna.  
    • WSJX (FATAL ERROR)
    • GNU RADIo Companiation (?): sirve para crear representaciones gráficas de señales
    • SDRAngel: le abre la experiencia de la recepción con SDR a nuevos sistemas y así le permite recibir con :
      • Airspy-hf recibir señales horarias  (24 kHz)
      • Rtl-SDR:  
      • AIS (Ayuda a la navegación marina)
      • DAB (Radio Digital): sintoniza tanto los canales VHF ( Del 5A-174,928 hasta el 13F 239,200 MHz), el único problema es que exista alguna emisora DDAB cerca de su localización (Mi opinión es que es un sistema muerto frente a Spotify, You Tube audio, etc.)
      • ISS packets
      • ADS-B 
      • radio sondas
Problemas
  • No se oye a través de la salida jack de la Raspberry: se prueba la salida de audio del HDMI y funciona
  • Se oye entrecortado tanto  con SDR++ u GQRX se entrecorta el audio, lo que me lleva a pensar que:
    • Falla algo en la configuración de esta distribución: no es probable pues no aparece comentado como incidencia en la web.
    • Que la Raspberry 3 no tiene suficiente capacidad para el procesado: no parece probable pues aparece como compatible este modelo
    • Que Raspberry + SRD consume más energia que la que suministra la fuente de alimentación. Es la causa más probable pues en la pantalla aparece el mensaje "low-voltage-warning" lo que puede provocar  un funcionamiento errático de la Raspberry (el comando de terminal vgencmd get_throttled informa de ello throttled=0x50005 o dmesg para comprobar los mensajes emitidos por la SO o dmesg | grep -iC 3 "under-voltage detected" ) y que podría estar asociado a las necesidades de la dongle RTL-SDR.  La fuente recomendada por el fabricante proporciona 5.1V / 3.0A-2,5A DC un aparato como USB Detector KW203 permite conocer el voltaje proporcionado por una Fuente de Alimentación y el consumo en amperios (4,86V 0,74A sin SDR pasa a a 4,66/4,77V 1,04A con SDR), la mejor de las fuentes disponible es la Aukru Power BS-18W0503000W ( USB tipo B - micro USB) que proporciona teoricamente 3A a 5V, pero parece que no. Algunas soluciones
      • Buscar una fuente más potente y estable
      • Reducir el consumo haciendo que la frecuencia de muestreo del SDR sea menor (no basta)
      • Disminuir los perifericos conectados a las salidas USB de la Raspberry

SPYServer (Sin probar)

    • Si lo que queremos es configurar un servidor SDR para poder acceder a través  de Internet (OJO Nosotros o cualquier otro usuario) podemos instalar un software como SPYServer de airspy, que es capaz de de transmitir porciones separadas del espectro de radiofrecuencia a múltiples clientes a través de la LAN o Internet, de alguna forma se separa la parte de captación de RF (P.e. azotea)  de la de su audición (p.e. el salón de su casa) . Para ello arrancar la raspberry y configurarla según el manual de EA5WA
      • Cargar los drivers para que reconozca la raspberry al dongle 
        • sudo apt-get install rtl-sdr librtlsdr-dev
      • Instalar el software spyserver
        • cd   (para volver al directorio raíz)
        • mkdir spyserver    (Crear carpeta para el spyserver)
        • cd spyserver   (vamos a dicha carpeta)
        • wget –O spyserver.tgz https://airspy.com/?ddownload=4247  ( Descarga del archivo spyserver.  Ojo,es una letra O mayúscula lo que aparece después del wget - ). Además tampoco vale copiar-pegar ya que no funciona y no descarga el archivo, por lo tanto, habrá que teclear esta línea.
        • tar xvzf spyserver.tgz    (descomprime el archivo descargado)
        • sudo nano spyserver.config    (Abre el editor de textos para configurar el spyserver)
        • device_type = AirspyHF+ (Indicamos en el archivo el Receptor que vamos a utilizar. En caso de utilizar un RTL-SDR sería device_type=rtl-sdr)
        •  ./spyserver  spyserver.config   (Ejecutamos el spyserver)

Despues hay que configurar el cron apra que arranque automáticamente , y desde un navegador acceder a la IP:PORT en el que se encuentra el servidor o desde un SDR#(solo funciona bajo windows)

Con todo las pruebas nos dieron error usb_claim_interface error -6 linrtlsdr podria tener otra instalncia ¿?

KiwiSDR

Llegados a este puto es sencillo entender lo que es un KiwiSDR , que tiene un precio aproximado de unos 200 €, es un todo en uno al incorporar en una única placa

    • Un procesador embebido  BeagleBone   en lugar de una Raspberry 
    • Un receptor SDR en lugar de un RTL-SDR.com
    • Un servidor SDR en lugar de un Spy Server.
    • Un receptor GPS

La versión actual recibe en una banda de 0 a 30 MHz y permite hasta  4 usuarios simultáneos. 

En 2023 se anunciaba el KiwiSDR2


Para leer mas


Referencias



Prohibida la reproducción parcial o total de este artículo sin permiso previo del autor

Comentarios

Entradas populares de este blog

SDR - Software Defined Radio - IIIb: Receptores RSP o MSI (MSI3001: MSI2500 + MSI001)

Ayudas a la navegación aerea: NDB, VOR, ILS y ATIS

Por una montaña más segura