Mostrando entradas con la etiqueta sdr. Mostrar todas las entradas
Mostrando entradas con la etiqueta sdr. Mostrar todas las entradas

lunes, 24 de noviembre de 2014

Radio Definida por Software para pobres (Episodio II)

En una entrada anterior presenté la posibilidad de tener un SDR de bolsillo y muy económico gracias a una placa sintonizadora de TV digital USB con el chip RTL2832U.

Recibí varios comentarios en el blog y por correo electrónico de varios que se han entusiasmado con la idea. A pedido de muchos de ellos es que en esta oportunidad voy a explicar como instalar todo lo necesario para sacarle provecho a este dongle en Windows. Los que siguen este blog saben que desde aquí evangelizo por estaciones de radio libres de software privativo y que  priorizo todo aquel que corra sobre GNU/Linux. Así que disculpen esta excepción.


Acerca de SDR#

El software que vamos a usar en Windows se llama SDR# (se pronuncia SDR sharp). El nombre se debe a que fue programado en C#.

Antes de la aparición de SDR# las opciones para hacer RTLSDR eran los programas WINSDR y HDSDR. Debido a que ninguno de estos dos programas soporta el chip RTL2832U se necesita instalar un plugin llamado EXTIO de spench.net para poder operar, lo cual es engorroso y complejo de configurar para humanos normales. SDR# simplificó mucho las cosas y ayudó a acercar el RTLSDR a las masas.

SDR# nace de la necesidad de Youssef Touil de poner en práctica sus conocimientos en técnicas de DSP. Luego el proyecto comezó a tomar vuelo propio y se sumaron colobaradores como Ian Gilmour (MM6DOS) y Tony BenBrahim (K5DEV).

Se distribuye bajo licencia MIT para lo que es la interfaz de usuario (GUI) y los plugins, lo cual lo acerca bastante a ser software de código abierto ya que permite modificar, crear y redistribuir dichos componentes. Sin embargo, el código del DSP (Digital Signal Processor, el corazón de todo SDR) se distribuye bajo Microsoft Reference Source License (MS-RSL) la cual impide modificar o distribuir el binario (es decir, el archivo SDRSharp.Radio.dll) y su código.


Instalación de SDR#

La placa sintonizadora USB viene con un mini CD el cual les recomiendo que sólo lo usen como apoya vaso o para hacer un bonito reloj. No instalen nada de ese CD si quieren usar el dongle como SDR y no tener que estar renegando después.

Hecha esta aclaración, comencemos a trabajar.

Para simplificar las cosas, vamos a bajar el siguiente archivo comprimido:

http://sdrsharp.com/downloads/sdr-install.zip

Dentro del directorio sdr-install, creado al descomprir el archivo, vamos a enontrar un script llamado install.bat el cual debemos ejecutar con un doble click.

Este script va a descargar en forma automática (usando el comando wget.exe incluido en el archivo comprimido) todo aquello que necesitamos.

Fig. 1. Ejecución del script de instalación de SDR#.

Al finalizar la ejecución del script tendremos un directorio nuevo llamado sdrsharp que contendrá la última versión de SDR#, el último controlador para el manejo de nuestro dongle RTLSDR (obtenido del sitio de Osmocom) y un programa llamado Zadig.

El siguiente paso consiste en colocar el dongle en un puerto USB. Windows intentará instalar un controlador para nuestro dispositivo.

Fig. 2. Windows intentará instalar un controlador para el dongle
cuando lo conectemos por primera vez.

No importa si lo consigue o no ya que el programa Zadig tiene la misión de configurar el controlador USB correcto para el dongle RTLSDR de modo de ser reconocido posteriormente por el SDR#.

Es recomendable dejar sólo aquellos dispositivos USB indispensables conectados a nuestra computadora. Es decir, el mouse, el teclado y nuestro dongle. El resto deberíamos desmonarlos para este paso.

Una vez que ejecutemos Zadig, si tenemos activado en Windows el Control de cuentas de usuario, pulsaremos Sí al mensaje ¿Desea permitir que este programa de un publicador desconocido realice cambios en el equipo?. Esto se debe a que la aplicación requiere de privilegios de administración. Si tienen Windows XP ese mensaje no les va a aparecer.

Fig. 3. Mensaje de advertencia del control de cuentas de usuario.

Luego de esto, deberíamos visualizar la siguiente ventana:

Fig. 4. Ventana de Zadig.

En el menú Options seleccionamos List all devices:

Fig. 5. Tildar List all devices para encontrar nuestro dongle.
Hacemos click en el desplegable para ver todos los dispositivos USB conectados. De todos ellos nos intereza seleccionar aquel que está indicado como Bulk-In, Interface (Interface 0):

Fig. 6. Debemos asegurarnos que el fabricante sea el esperado
antes de proceder a instalar el controlador.

Para confirmar que se trata de nuestro dongle detenemos el puntero del mouse sobre el primer campo del cuadro texto USB ID y deberíamos visualizar Realtek Semiconductor Corp como texto emergente, el cual indica el nombre de fabricante del dispositivo.

Sólo nos queda pulsar el botón Install Driver para instalar el driver correcto que hará del dongle nuestro dispositivo SDR.

Windows nos advertirá que nuestro controlador no es el original firmado por el fabricante. Por supuesto, nosotros justamente queremos instalando un controlador que va a reemplazar al proporcionado por el fabricante. Pulsamos la opción Instalar este software de controlador de todas formas.

Fig. 7. Mensaje de advertencia de Windows al instalar el controlador.

Luego de unos segundos recibiremos un mensaje que el controlador ha sido instalado correctamente:

Fig. 8. Mensaje luego de la instalación.

Y si todo ha ido bien,  de nuevo en la pantalla principal de Zadig deberíamos ver en la sección Drive la opción WinUSB seguida del número de versión del controlador como se observa en la figura:

Fig. 9. Ventana de Zdig luego de la instalación del controlador.

Nota: Esta configuración debemos realizarla para cada puerto USB donde vamos a utilizar nuestro dongle RTLSDR. También podemos utilizar un puerto USB para trabajar como RTLSDR y otro para usarlo como DVB-T con el manejador suministrado por el fabricante (o el propuesto por Windows)



Ejecutando SDR#

Una vez que hemos instalado el manejador WinUSB como se ha descripto estamos en condiciones de comenzar a usar SDR#. Para ello simplemente hacemos doble click sobre SDRSharp.exe con lo cual deberíamos ver la siguiente ventana:

Fig. 10. Ventana principal de SDR#.

Seleccionamos en el desplegable ubicado en la parte superior izquierda la opción RTL-SDR/USB:

Fig. 11. Seleccionando RTL-SDR/USB como fuente.

Puede ocurrir que al realizar esta operación obtienen un error como el mostrado en la Fig. 12:

Fig. 12. Error frecuente cuando se conecta el dongle en un puerto USB versión 3.
Normalmente dicho error aparece cuando se conecta el dongle en un puerto USB versión 3. Si bien hay muchos reportes en foros de este error no he encontrado aún una solución confiable. Por lo tanto, siempre que sea posible, van a tener que conectar el dongle en un puerto USB versión 2 y probar.



Primer contacto con SDR#

La mejor manera de aprender es comenzar a utilizar SDR#. Es un programa sencillo que no requiere a mi parecer de grandes explicaciones.

El primer acercamiento lo haremos sintonizando la banda de FM comercial. Lo se, no es muy ambiciosa mi propuesta pero les permitirá comprender la interface del software. 

Lo primero que debemos hacer es tildar en la sección Radio la opción WFM (Wideband FM, en español FM de banda ancha)

Fig. 13. Seleccionando WFM.

El resto de los parámetros pueden dejarlos con sus valores por defecto.

Ahora tenemos que sintonizar en la banda de FM comercial, por ejemplo en la frecuencia de 88 MHz.

Para ello, tenemos varias formas:

a) Colocamos el cursor sobre el VFO y tipeamos la frecuencia central elegida, en nuestro caso 88,000,000 y damos Enter.

b) Hacemos click en en la parte superior (la zona se torna roja) o en la parte inferior (la zona se torna azul) para aumentar o disminuir el valor de la frecuencia en esa posición.

Fig. 14. Podemos subir o bajar en frecuencia haciendo click en la
cifra que queremos modificar.
c) Arrastramos con el cursor hacia la derecha o hacia la izquierda sobre el espectro de frecuencia o sobre la cascada para movernos hacia abajo o hacia arriba en frecuencia.

d) Giramos la rueda del mouse para subir o bajar en frecuencia, según el sentido.

Para comenzar a escuchar pulsamos el botón de Play en el panel superior donde está el VFO.

A partir de entonces deberíamos escuchar al menos el ruido de banda por el parlante de la PC y a visualizar el espectro de frecuencia en la mitad superior del panel principal y la cascada en la inferior.

Por alguno de los métodos ya nombrados podemos movernos en frecuencia hasta sintonizar una emisora de FM. En la siguiente imagen se puede apreciar sobre la cascada varias líneas verticales de color rojo. Estas son las ubicaciones de emisoras de FM para el rango de frecuencia visualizado.

Fig. 15. Espectro y cascada visualizando varias estaciones de FM.

La intensidad de estas líneas es proporcional a la intensidad de señal con la que nuestro dongle la está recibiendo. Podemos hacer click en cualquiera de ellas para comenzar a escucharla, ya sin necesidad de estirar con el cursor.

Si observan con detenimiento en la figura anterior, en el centro de la cascada encontrarán una línea roja muy fina que se manifiesta en un pico muy angosto en el espectro. Si cambian de frecuencia, esta señal no desaparece y queda permanentemente centrada.

Fig. 16. Línea de corriente continua en el centro de la ventana.
Para eliminar ese pico de corriente continua debemos tildar la opción Correct IQ en la sección Radio:

Fig. 17. Tildando Correct IQ se elimina
la componente de continua.

Suficiente por ahora. Es tiempo que experimenten con SDR# y descubran sus posibilidades en la recepción de otros tipos de señales como balizas o telemetría de satelitales de radio aficionados por ejemplo.

En otra entrega veremos como trabajar con este dongle en Linux.

Espero sus comentarios.

73 de LW3ESH


Enlaces

Radio Definida por Software para pobres (Episodio I):
http://lw3esh.blogspot.com.ar/2013/02/radio-definida-por-software-para-pobres.html

domingo, 17 de febrero de 2013

Radio Definida por Software para pobres (Episodio I)

¿Qué tal si les dijera que por unos 20 dólares es posible hacerse de un receptor para sintonizar desde los 24 Mhz a los 1200 Mhz en AM, FM, LSB, USB y otros modos? Si, lo se. Suena tan poco real como esos llamados telefónicos que anuncian que nos hemos ganado un auto 0 Km. Pero confíen en mi y lean hasta el final esta nueva entrada de mi blog. 

Del kernel Linux a la estación de radio

El desarrollador finlandés Antti Palosaari colabora en el proyecto LinuxTV escribiendo código para que el kernel GNU/Linux soporte dispositivos tales como webcams, capturadoras de video y sintonizadoras de televisión analógica y digital, como así también los controles remotos que suelen traer estos dispositivos. En el año 2012, mientras trabajaba con una sintonizadora de TV digital de la marca Ezcap EzTV 668 DVB-T/FM/DAB, Antii descubrió que el chip Realtek RTL2832U de su interior tenía ciertos registros y comandos no documentados. Con ellos podía llevarlo a un modo de funcionamiento donde transfiere las muestras I/Q en banda base sin procesar por el puerto USB 2.0 hacia la PC.
Fig. 1. Antii Palosaari.
Para no entrar caminos sinuosos, podemos decir que estas muestras son la representación digital de la amplitud de la señal modulada (componente Q, de Quadrature) y su fase rotada 90 grados (componente I, de In phase) para un instante de tiempo dado. Dicho de una manera aún más simple, cada muestra I/Q es como una fotografía digital de la señal modulada.

Por medio de algún software en la computadora es posible demodular el flujo de muestras I/Q provenientes de la sintonizadora.

Este modo de funcionamiento del RTL2832U es el que permite a estas placas (o dongles) brindar FM y DAB, a diferencia de DVB-T que se demodulada generalmente por hardware.

Combinando lo anterior con las características del sintonizador de RF Elonics E4000 de esta placa, el cual soporta un espectro de 50 MHz a 20000 MHz, y un software apropiado en la computadora para demodular las muestras I/Q en bruto se podía conseguir un muy interesante radio definida por software o SDR (Software-defined radio) para pobres. O para un radioaficionado del Tercer Mundo como quien les escribe ;)

Quizás el post de Antii del 2 de Febrero de 2012 en una de las listas de desarrolladores del proyecto Linux TV donde explica sus impresiones sobre su descubrimiento haya sido el puntapié inicial para una serie de desarrollos que provocó una especie de fiebre por los sintonizadores basados en el RTL2832U.

Primero fue Steve Markgraf del proyecto OsmoSDR quien crea el paquete rtl-sdr el cual permitía sintonizar la placa y volcar las muestras I/Q a un archivo para su posterior procesamiento. Unas semanas después Balint Seeber anunciaba la aparición del bloque rtl_source_c para GNU Radio en su paquete gr-baz. Con este bloque GNU Radio podía recibir las muestras I/Q en bruto y procesarlas, permitiendo decodificar señales de diferentes tipos de modulaciones.

Teniendo en cuenta que un receptor con ese espectro de frecuencias disponible puede tener un costo de varios miles de dólares y que las sintonizadoras USB de TV digital con el chip Realtek RTL2832U rondan entre los 15 y 20 dólares, no sorprende la amplia repercusión que tuvo el descubrimiento de Antii entre los radioaficionados y SWLs. 

Quiero eso

En la búsqueda de una sintonizadora de TV Digital norma DVB-T encontré que la mayoría traen en su interior el deseado RTL2832U. Sin embargo, no todas estas placas usan el mismo chip sintonizador.

La elección del sintonizador es un punto fundamental a la hora de decidirse por una sintonizadora USB para usarla como SDR . La razón de ello es que no todos los chips sintonizadores están soportados. Además, la elección del sintonizador define el rango de frecuencia con que contaremos.

Actualmente, están soportados cuatro chips sintonizadores:
  • Elonics E4000: Durante bastante tiempo fue el clásico compañero del RTL2832U y el único soportado por los programas para SDR. Pero Elonic ha discontinuado este integrado, con lo cual los fabricantes de estas sintonizadoras han empezado a reemplazarlo. Permite sintonizar señales de radio de entre 52 MHz a 2200 MHz, con un hueco entre las frecuencias de 1100 MHz y 1200 MHz (aunque puede variar).
  • Rafael Micro R820T: Con la caída del E4000 este chip ha ganado popularidad, teniendo un rendimiento comparable. El rango de frecuencia de operación va de 24MHz a 1850MHz.
  • Fitipower FC0013: Proveen de un rango de frecuencias de entre 22 MHz y 1100 MHz. Los chips FC0013B/C y FC0013G tienen una entrada separada para la banda L que normalmente está sin conectar en las sintonizadoras.
  • Fitipower FC0012: Proveen de un rango de frecuencias de entre 22 MHz y 948.6 MHz.
  • FCI FC2580: Brindan un rango de entre 146 MHz a 308 MHz y de entre 438 MHz a 924 MHz.
Por todo esto, me decidí por una placa con el Rafael Micro R820T como sintonizador ya que permite un rango continuo de sintonización y muy amplio.

Luego de unos 10 días de espera llegó el pedido a mi casa, conteniendo la sintonizadora USB, un control remoto, una antena con conector MCX y soporte magnético, un CD para la instalación en Window$ de los drivers y el software para la visualización de TV.

Fig. 2. La placa sintonizadora en su embalaje.

De todo eso, sólo interesa para la función como SDR la sintonizadora USB. La antena sólo sirve para las primeras pruebas, esto es, para sintonizar radioaficionados locales en VHF y UHF y estaciones de FM comercial cercanas. Para un uso más profesional es necesario cambiarla.


Hackeando mi sintonizadora


Decidí por desnudar la placa y ver en su interior. Esto no era un acto de arrojo de mi parte ya que es sumamente fácil deshacerse de las carcasas plásticas, las cuales están colocadas a presión. Basta con ejercer algo de fuerza en uno de sus bordes para conseguir destriparla. Además, los autores de otros blogs lo han hecho y no quiero ser menos.

Con un poco de esfuerzo y mis nuevos lentes de aumento, mis ojos lograron identificar los componentes principales de la placa.

Fig.3. Destripando la placa recién llegada (click para agrandar)

En la Fig. 2 se puede observar los componentes más importantes. El cristal de 28.8 MHz sirve para la generación de la señal de clock. Cerca de este se encuentra el sintonizador R820T. El integrado más grande corresponde al RTL2832U.

El RTL2832U entrega muestras I/Q de 8 bits a una tasa teórica de 3.2 MS/s (Mega-muestras por segundo), sin embargo en la práctica ese valor se lleva a 2.4 MS/s para garantizar que no se perderán muestras.

Una memoria EEPROM serial que mantiene la configuración del fabricante para el RTL2832U.
En uno de los extremos se observa un LED que al conectar la placa en el USB emite luz azul y el receptor infrarrojo por donde se recibe los comandos emitidos por el control remoto.
Fig. 3. Azul, como el LED azul (?)

En una próxima entrega voy a mostrar el software que he utilizado y los resultados obtenidos, especialmente en la recepción de satélites de órbita baja (LEO).

Por lo pronto, les dejo el audio de la telemetría en CW del satélite chino HO-68, transmitiendo en 435.7900 MHz, en su órbita 15088, desde mi QTH en Grid GF05RL (Argentina).


No está mal teniendo en cuenta que uso una antena externa moxon de compromiso y que el HO-68 transmite con sólo 200 mW su baliza y telemetría.

Luego de esto, creo que van a esperar con ansia la segunda parte ;)

¿Una antena para VHF hecha con dos perchas?

Hace poco di con una nota de la revista QST de Abril de 2018 donde John Portune, W6NBC ( @w6nbc ) donde cuenta que con Ernie, W6DN y otro...