Radio definida por software (SDR) (II)

Tras un tiempo sin publicar recojo en esta entrada algunas experiencias más con SDR. Es una continuación de la publicación http://www.radiotecnia.es/radio-definida-por-software-sdr/

Dongle rtl v3

Recientemente compré el receptor rtl promovido por el grupo de gente tras el blog https://www.rtl-sdr.com/ Tiene un precio muy económico y sus prestaciones son claramente mejores que la versión no específica para SDR. Los dongles originales eran aparatos de bajísimo precio (menos de 10€) y calidad precaria, diseñados para decodificar TDT desde un PC. Ningún elemento del diseño estaba optimizado para nuestros fines pero casualmente podían servir. Otras personas partieron de ese diseño, conservando los chips que permiten sintonizar y digitalizar, y mejoraron todo lo demás: layout del circuito impreso para un menor ruido, oscilador de cristal más preciso y estable, carcasa metálica para reducir EMI y disipar mejor el calor, conector SMA, posibilidad de muestreo directo y de inyección de DC por el coaxial (tipo bias-tee); éstas son las principales mejoras.

Para el usuario son evidentes la estabilidad en frecuencia, que hace el uso mucho más cómodo al evitar tener que estar midiendo y corrigiendo constantemente el error de frecuencia. Si el dongle «barato» tenía 66 ppm de error, éste tiene tan sólo 1 ppm. Con el primero incluso se veían patinar las señales en la pantalla de waterfall del ordenador simplemente por abrir una ventana de la habitación y que el aire de la calle lo enfriase un poco. La recepción por debajo de 24 MHz gracias al muestreo directo es otra prestación interesante, aunque debemos tener claro que su rendimiento va a ser muy limitado. Es fácil recibir estaciones de radiodifusión en onda media. Para señales de aficionados en HF sería muy necesario ayudarle con un filtro adicional, pero para eso casi es más conveniente pensar en adquirir un receptor de más categoría. La reducción de ruidos por el layout y blindaje no es tan inmediata de medir y no puedo confirmarla.

Muestreo directo y diezmado

Para emplear el modo de muestreo directo en el programa GQRX hay que añadir la cadena «direct_samp=2» en la ventana de configuración.

GQRX direct sampling
GQRX direct sampling

Se pueden recibir cinco estaciones de onda media. Por la noche llegan más, incluso extranjeras.

GQRX OM
GQRX OM

El diezmado (decimation) es un proceso sobre el flujo de muestras que consiste en muestrear a una frecuencia mayor de la necesaria, filtrar la banda que nos interesa, y después descartar muestras (diezmar) en determinada proporción. El efecto es el mismo que aumentar el número de bits de resolución, es decir, aumenta el margen dinámico al reducir el nivel de ruido de cuantificación. GQRX permite valores de diezmado de 2 a 32.

rtl_fm

Algunos ejemplos interesantes para usar el programa rtl_fm por parte de su autor: http://kmkeen.com/rtl-demod-guide/ El programa permite demodular señales desde línea de comandos y es muy versátil y eficiente. Para muestreo directo hay que usarlo con la opción

rtl_fm -E direct

Por ejemplo:

rtl_fm -M am -E direct -f 881000 | play -r 32k -t raw -e s -b 16 -c 1 -V1 -

Pero no se oye nada y, entre otras cosas, el comando devuelve:

Enabled direct sampling mode, input 1/I.

Parece tomar la señal de la rama I del ADC, cuando el pincho rtl la entrega por la rama Q. Por ese motivo no se oye nada. Lo comentan en este foro: https://www.rtl-sdr.com/forum/viewtopic.php?t=1334. Sugieren editar el código fuente y recompilarlo pero como lo he instalado por paquetes del repositorio de Debian no me planteo hacer esto por ahora.

Se puede habilitar un silenciador squelch al receptor con la opción «-l». El número que le sigue debe ser positivo y el 20 funciona bien pero depende de ajustes de la frecuencia de muestreo y de la ganancia.

rtl_fm -M fm -f 144.8M -g 30 -l 20 | play -r 24k -t raw -e s -b 16 -c 1 -V1 -

El programa permite escanear un rango de frecuencias. Esto obliga a usar un valor no nulo para el squelch. El defecto que le encuentro es que cuando detecta una señal y abre el squelch no informa de la frecuencia en la que está.

rtl_fm -M fm -f 144.8M:145.5M:25k -g 30 -l 20| play -r 24k -t raw -e s -b 16 -c 1 -V1 -

Este programa funciona incluso en un router openwrt como el HG556a. Se debe instalar el paquete madplay para poder reproducir audio. Tras muchos intentos no escuchando más que ruido descubrí que hay que modificar una opción en la reproducción del audio (parámetro S16_BE) ya que su cpu ordena los bytes al revés que la de un PC (big endian frente a little endian):

rtl_fm -M wbfm -f 88600000 -g 30 -r 24000 | aplay -r 24000 -f S16_BE -t raw -c 1
rtl_fm -M fm -f 145337000 -g 26 -r 24000 | aplay -r 24000 -f S16_BE -t raw -c 1
rtl_fm -M am -f 126200000 -g 30 -r 24000 | aplay -r 24000 -f S16_BE -t raw -c 1

Un sencillo y barato pincho (o tarjeta) usb de sonido permite reproducir el audio. Esto permitiría montarse un económico reproductor de radio de lo más versátil. Incluso se puede enviar el flujo mp3 resultante a través de la red local o internet.

Paquetes en Openwrt

Por si alguien desea utilizar un router con el sistema operativo OpenWRT, recojo aquí los paquetes que tengo instalados. Con esto se pueden utilizar el dongle rtl, sonido por usb, almacenamiento (pendrive) y webcam, así como el servidor de vídeo por http mjpg. El comando:

opkg list-installed

Devuelve esta lista: Paquetes instalados

Vortrack

En esta entrada del blog rtl-sdr mostraban un nuevo y sencillo programa para demodular la información de una baliza VOR. Sin entrar en más detalles, estas balizas consisten en una doble modulación de la portadora a 30 Hz: una componente en AM cuya fase depende del ángulo con que el receptor es visto por el transmisor, y otra componente que modula en FM una subportadora alejada 9960 Hz de la portadora de RF. Del desfase entre ambas moduladoras el receptor deduce el radial del VOR en el que se encuentra. El programa vortrack hace esa demodulación del mismo modo como lo hace el demodulador que lleva cualquier aeronave, y nos muestra el radial numéricamente. Es sencillo de instalar, compilar y ejecutar:

git clone https://github.com/TLeconte/vortrack
cd vortrack/
make -f Makefile.rtl 
./vortrack -g 400 -l 2 -r 0 -p 1 117.300
Found Rafael Micro R820T tuner
Exact sample rate is: 2000000.052982 Hz
174.9
173.3
173.7
173.6
172.8
173.7
175.0
172.9
173.9

Evidentemente hace falta una cierta relación señal a ruido para que funcione. Cerca de Madrid hay varios VOR pero es necesario tener un camino despejado para que su señal llegue fuerte. En este caso el resultado tiene sentido puesto que estamos al sur, ligeramente sureste, de Colmenar Viejo. Según la web https://acscdg.com, el rumbo es de 168º. Se aprecia un error sistemático de unos 5º. Puede deberse a que recibo la señal por alguna reflexión.

Charla en URE

En el mes de Diciembre de 2018 Antonio EA4NI y yo mismo dimos una charla introductoria sobre SDR en la sede de URE. Mostramos los programas SDR#, GQRX y utilidades de línea de comandos de Linux, y compartimos experiencias y consejos prácticos con casi una treintena de colegas, socios y no socios de URE.

Empleamos dos ordenadores portátiles viejos, comprados hacia 2004. Sus capacidades estaban al límite pero podían servir para un uso no muy exigente. En debian xxxx no funcionaba gqrx porque la librería libusb no estaba actualizada. Se puede actualizar mediante backports a la versión 1.0.18. Tras esto ya me funcionó. El programa gqrx consume un 55% de una cpu que funciona a 1.5 GHz. Hicimos también funcionar el programa SDR# en otro ordenador similar con Windows, tanto con el dongle conectado como tomando los datos de un servidor rtl_tcp que funcionaba o bien en el pc con Linux o bien en un router con Openwrt. Observamos también el efecto que tiene el filtro notch para FM: la recepción era prácticamente imposible sin él.

Aquí álbum de fotos en Facebook. Espero que hayamos contribuido a difundir esta faceta.