TDT en Linux
Después de un largo parón en este blog, inaguramos el nuevo año con un HOWTO especialmente pensado para estos reyes…
El otro día me compre un gadget que sin duda será el regalo geek de estas navidades: un receptor de TDT portátil en un stick USB. Obviamente, el nivel de geekismo es mucho superior si este gadget se usa en conjunción con un Linux como Dios manda.
Así que, si más dilaciones pasemos a explicar como configurar y usar sintonizadores TDT en linux en general (y el Freecom DVB-T USB Stick y compatibles WT-220u en particular).
- CONFIGURAR EL KERNEL:
Primeramente es necesario tener soporte en el kernel para dispositivos DVB-T. En función del kernel que se esté usando ya se dispondrá de este soporte.
Para asegurarnos, empezaremos por conectar el dispositvio y comprobar que el kernel reconoce el sintonizador. Por ejemplo:ferran@debian:~$dmesg
...
usb 2-3: new high speed USB device using ehci_hcd and address 2
dvb-usb: found a 'WideView WT-220U PenType Receiver (Typhoon/Freecom)' in cold state, will try to load a firmware
dvb-usb: did not find the firmware file. (dvb-usb-wt220u-01.fw) Please see linux/Documentation/dvb/ for more details on firmware-problems.
dvb-usb: WideView WT-220U PenType Receiver (Typhoon/Freecom) error while loading driver (-2)
usbcore: registered new driver dvb_usb_dtt200uSi se obtiene una salida similar significará que nuestro kernel soporta dvb-t (Digital Video Broadcast - Terrestrial) y reconoce nuestro dispositvo, con lo que podremos proceder al siguiente paso. Sino se tendrá que configurar el kernel con las siguientes opciones (dando por supuesto de que ya está configurado el soporte USB).
Device Drivers --->
Multimedia Devices -->
Digital Video Broadcasting Devices --->
[*] DVB For Linux
[M] DVB Core Support
[M] Support for various USB DVB devices
[M] WideView WT-U and WT-220U (pen) DVB-T USB2.0 support (Yakumo/Hama/Typhoon/Yuan)Obviamente, el driver que elegiremos tendrá que ser el del dispositvo que usemos (el mensaje anterior debería darnos alguna pista).
Si el driver que necesitamos no aparece en la configuración del kernel quizás necesitemos una versión más nueva del kernel (yo usé la 2.6.14.5). Compilamos el kernel nuevo kernel y ya estamos listos para usar el dispositivo. - DESCARGA DEL FIRMWARE:
Hay dos métodos para descargar el firmware:
a) Usar el script que viene con el kernel en linux/Documentation/dvb/get_dvb_firmware.
b) Descargar el firmwarer adecuado de LinuxTV y guardarlo en /lib/firmware/.En nuestro caso descargamos el fichero http://www.linuxtv.org/download/dvb/firmware/dvb-usb-wt220u-01.fw a /var/lib (el directorio puede variar en función de la distribución que se tenga, de si se usa hotplug o no, etc…).
Para comprobar que lo hemos hecho correctamente, si conectamos de nuevo el sintonizador ahora veremos:
ferran@debian:~$dmesg
...
dvb-usb: WideView WT-220U PenType Receiver (Typhoon/Freecom) successfully deinitialized and disconnected.
usb 2-3: new high speed USB device using ehci_hcd and address 5
dvb-usb: found a 'WideView WT-220U PenType Receiver (Typhoon/Freecom)' in cold state, will try to load a firmware
dvb-usb: downloading firmware from file 'dvb-usb-wt220u-01.fw' to the 'Cypress FX2'
dvb-usb: WideView WT-220U PenType Receiver (Typhoon/Freecom) successfully initialized and connected. - ESCANEO DE CANALES:
El software para linux que tiene funcionalidades dvb (xine, mplayer, etc…) usa un fichero llamado channels.conf como la lista de canales. Debemos generar este fichero a través de la utilidad scan contenida en el paquete dvb-utils. Para usuarios del sistema de paquetes apt (debian, knoppix,…):
ferran@debian:~$ apt-get install dvb-utilsUna vez tenemos instalado el paquete, podemos ejecutar la utilidad scan. scan no escanea las frequencias en busca de canales de TDT, usa un fichero con la lista de canales para comprobar que se reciben.
Se pueden encontrar estos ficheros de partida en /usr/share/doc/dvb-utils/examples/scan/dvb-t/. Ejecutamos scan con el fichero de configuración adecuado. scan sacará nustro fichero channels.conf por stdout, por tanto:
debian:/usr/share/doc/dvb-utils/examples/scan# scan dvb-t/es-Collserola|tee channels.conf
scanning dvb-t/es-Collserola
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
initial transponder 514000000 0 2 0 3 1 3 0
initial transponder 570000000 0 2 0 3 1 3 0
initial transponder 794000000 0 2 0 3 1 3 0
initial transponder 818000000 0 2 0 3 1 3 0
initial transponder 834000000 0 2 0 3 1 3 0
initial transponder 842000000 0 2 0 3 1 3 0
initial transponder 850000000 0 2 0 3 1 3 0
initial transponder 858000000 0 2 0 3 1 3 0
>>> tune to: 514000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE
0x4e48 0x7850: pmt_pid 0x0020 BTV -- Barcelona tv (running)
Network Name 'Barcelona'
>>> tune to: 570000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE
Network Name 'EMISSIONS DIGITALS DE CATALUNYA'
0x0161 0x0001: pmt_pid 0x0020 NDS -- CITY-TV (running)
...
Con lo que habréis generado un fichero channels.conf con los canales que escanéis. Es muy importante disponer de la mejor calidad de recepción a la hora de hacer el escaneo para no perder canales (a ser posible con antena comunitaria) - PROBAR EL FUNCIONAMIENTO:
En mi caso uso Xine para ver la TDT en linux. Para configurarlo, tan sólo hay que copiar el fichero channels.conf al directorio de configuración de xine:
debian:/usr/share/doc/dvb-utils/examples/scan:~$ cp channels.conf ~/.xinePara ver la TDT tan sólo hay que selccionar la fuente DVB. Los canales pasan a ser el playlist, por lo que podéis pasarlos de uno en uno con Next MRL/PreviousMRL o navegar directamente sobre la playlist.
Alternativamente, si usamos mplayer…
debian:/usr/share/doc/dvb-utils/examples/scan:~$ cp channels.conf ~/.mplayerPara sintonizar directamente un canal por línea de comando, tan sólo hay que indicar como parámetro “dvb://NombreDelCanal”, dónde NombreDelCanal es el nombre que le ha dado scan al canal que queráis sintonizar.
ferran@debian:~$ mplayer dvb://"TVE 1"
ferran@debian:~$ xine dvb://"TVE 1"Y eso es todo, puede parecer un poco largo, pero con un kernel con soporte para DVB se tiene listo en menos de 5′. Como detalle apuntaré que un amigo mio que se lo compró e instaló en su windows mientras yo hacía lo propio en Linux tardó más en tener todo el sistema listo.
A disfrutarlo!
LinuxTV
Wiki de DVB-T
Lista de dispositvos DVB-T comaptibles con Linux
Como compilar el kernel







Hola:
solo comentar que si tu receptor de dvb tienes varias sintonizadora, en mplayer debes poner dvb://num_sinto@blabla
Comment by Jesus — June 18, 2008 @ 9:27 pm
Gracias por el post. He coincido con él buscando otra cosa pero apoyo la última frase. Se tarda menos en hacer funcionar una tarjeta en Linux que en Windows. Simplemente enchufar y sintonizar
Comment by Anonymous — October 29, 2008 @ 6:45 pm
No hay manera, le he puesto el archivo channels.conf en el directorio .xine de home y siempre me dice que: no valid channels.conf found, que desastre!
Comment by ARghhhh — January 5, 2009 @ 8:46 pm
Pues generalmente suele ser cosa de permisos. No sea que creases y copiases el fichero como root y por tanto no tengas permiso para acceder.
Puedes ver el propietario del fichero haciendo un ls en el directorio, y cambiar los permisos con “chmod 666 nombre_del_fichero”.
Si no, es útil ejecutar el programa desde un terminal y ver los mensajes que salen cuando da el error. A veces dan más pistas que la gui.
Comment by Anonymous — January 7, 2009 @ 3:51 pm