miércoles, 24 de julio de 2013

RTL2832-Radio definida por software. Linux Debian7

RTL2832-Radio definida por software

 Linux Debian7

xsetaseta@gmail.com

Plataforma Linux DEBIAN7

La radio definida por software o SDR ( del inglés Software Defined Radio) es un sistema de radiocomunicaciones donde los componentes típicamente implementados en hardware (mezcladores, filtros, amplificadores, moduladores/demoduladores, detectores, etc) son implementados en software.
Un programador de kernel Linux identificado como Antti Palosaari ha descubierto un modo no documentado en un chip Realtek RTL2832. Al RTL2832 puedes encontrarlo en pequeños sintonizadores de televisión digital DVB-T con un costo que difícilmente supere los 20€. El chip puede enviar a un ordenador muestras de ocho bits a un máximo teórico de 3.2 Mhz, y esto se utiliza para recibir las ondas de radio.

Mi intención es la de poder recibir señales de radio si tener que recompilar todas las fuentes. Tendréis razón los que me critiquéis diciendo que de esa forma no enseño a compilar nuestro propios programas, pero me he encontrado en la situación de tener que meter los programas en un portátil en el cual no quería meter todos los programas y las librerías para compilar.

He de comentar, que me he encontrado con un problema, si compilaba los programas en mi sobremesa con un AMD, al pasar las librerías y algunos programas al portátil con un Pentium me daba errores. Creo que en alguna de las compilaciones, utilizan optimizaciones para el procesador en el que se compila. Eso es bueno y malo, bueno debido a que el programa va a ser mas rápido, y malo, debido a que no se puede utilizar en ordenadores con microprocesador diferente al que se a compilado.
Por este motivo he realizado dos compilaciones diferentes, para AMD y para Pentium. Las compilaciones de Pentium si valen para el AMD de sobremesa.

Como programa para escuchar radio he utilizado el gqrx, esta realizado en torno a la librería QT, y en mi opinión funciona a la perfección.  http://gqrx.dk/
También distribuyo los binarios e indico las dependencias necesarias para su ejecución.

Empecemos con las malditas dependencias, seguro que a todos nos pasa que siempre nos falta una dependencia cuando instalamos algún programa.
De un golpe instalamos todos estos programas:

Debian7
apt-get install libboost-program-options1.49.0 libboost-system1.49.0 libboost-date-time1.49.0 libboost-filesystem1.49.0 libboost-thread1.49.0 libgnuradio-core3.5.3.2 libgruel3.5.3.2 libvolk0.0.0  libgsl0ldbl libvolk0.0.0 libqt4-svg libgnuradio-audio3.5.3.2 libgnuradio-fcd3.5.3.2 gstreamer0.10-pulseaudio libasound2-plugins libsystemd-daemon0 libwebrtc-audio-processing-0 pulseaudio pulseaudio-module-x11 pulseaudio-utils rtkit

El fichero que adjunto ra_rtl2.tar.gz  se descomprime en una carpeta.
Tenemos dos  carpetas amd o pentium, utilizar la que corresponda a vuestro ordenador. Siendo administrador del sistema o root, copiar las carpetas usr a la raíz de vuestro ordenador.
Ahora que hemos copiado las librerías y los programas necesarios, debemos actualizar las librerías y el lugar que por defecto busca las librerías.
Siendo root editamos el fichero  /etc/ld.so.conf y añadimos al final /usr/local/lib .
Quedando en mi caso:
            include /etc/ld.so.conf.d/*.conf
            /usr/local/lib
Solo nos queda actualizar las librerías con la orden   ldconfig  .Recuerden ejecutarlo como root.

Por ultimo debemos copiar el archivo rtl-sdr.rules  en el directorio /etc/udev/rules.d/ . Este fichero hace que identifique el modelo de TDT cuando se enchufa al usb.

Llegamos al final de este tutorial y solo nos queda ejecutar el programa gqrx , si todo fue bien nos saldrá la siguiente pantalla que nos pregunta el tipo de decodificador que tenemos. Nosotros indicamos  Realtek RTL2838UHIDIR, y ahora a disfrutar.



Mi TDT_USB es el siguiente: Bus 001 Device 008: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
En ebay se puede comprar por 8€ RTL2832U


Saludos.
Juan Galaz

P.D.
Para hacer este tutorial me he vuelto loco en las compilaciones, esto de que el Linux tenga tantas distribuciones y que las versiones de las librerías suelen ser diferentes, te da muchos errores al compilar. Pero bueno, siempre hay alguien que le a pasa lo mismo y seguro que lo soluciono de alguna forma. Si quiere alguien que le indique la forma de compilar desde las fuentes, que me pase un correo.

Bibliografía:

http://sdr.osmocom.org/trac/wiki/GrOsmoSDR
http://vereniging.opensource.nl/wiki/index.php/Software-Defined_Radio_on_Ubuntu#Install_Gqrx
http://sdrlatino.wordpress.com/2013/05/23/162/#more-162