Televisión digital terrestre (TDT) en GNU/Linux

Arco

Últimamente todo el mundo por la televisión sale hablando de una cosa difusa que llaman TDT. El nombre de TDT es algo que se inventó algún redactor de T5 por lo visto, lo que llaman TDT es la implementación del DVB-T en el territorio español. Vemos como aparecen en el mercado muchos sintonizadores TDT con HDTV y "nosecuantas" cosas "nuevas"... ¿qué es todo esto? pues vamos a intentar hacer una breve introducción para explicar conceptos fundamentales a ver si todos (incluído yo) nos enteramos un poco mejor... al final un ejemplo de uso: ver la "tele" digital en nuestro escritorio (o en nuestra consola!).

Introducción

Antes de nada, creo que habría que decir que esto de la TDT no es algo de ahora... tal vez alguno recuerde un operador de televisión que intentó competir con Via Digital y Canal Satélite Digital... se llamaba QuieroTV... ¡pues eso ya era TDT!.

Por aquel entonces a todo eso se le llamaba "televisión digital", tanto por satélite, por cable o por "la antena normal de casa", lo que en términos más exactos se llama DVB o Digital Video Broadcasting. DVB también se llama al grupo de trabajo de la ETSI (el European Standard Telecommunications Series, una organización de empresas europeas interesadas en esto de emitir estándares). Entre los muchos estándares que han emitido los más conocidos en este ámbito son: DVB-S, DVB-C, DVB-T y recientemente DVB-H; que básicamente es la transmisión de televisión digital satelital, por cable, terrestre y por último para dispositivos tipo handhelds.

Aquí tenemos como operador de DVB-S a Digital+, como operador de DVB-C por ejemplo a Ono y finalmente de DVB-T todos esos canales que se han subido al carro de la TDT (no me gusta nada este nombre...). Desconozco si existen en España emisiones de DVB-H.

Brevísima introducción al DVB-T

Bien, la señal DVB-T se modula mediante OFDM, esta modulación permite distribuir el flujo binario de información entre un gran numero de portadoras de forma que cada una maneje una velocidad de datos reducida con respecto a la del flujo total. Las otras portadoras pueden tener esquemas de modulación distintas, se usan: QPSK, 16-QAM y 64-QAM. En España todas usan 64-QAM que es la que tiene una constelación más compleja (tasas de transferencia mayores pero menor inmunidad al ruido... básicamente). Las portadoras pueden tener dos modos de transmisión distintas: de 2k y 8k, en el modo de 2k se pueden tener hasta 1.705 portadoras y en el modo de 8k hasta 6.817 portadoras, éste es el modo usado en territorio español. El modo de transmisión determina los parámetros de modulado internos. A parte, existen otros parámetros a tener en cuenta: la relación de codificación para protección interna de errores y las longitudes para el intervalo de guarda; estos factores determinan cómo y cúantos bits redundantes se añadirán a la señal para poder corregir posibles errores en la transmisión. Estos parámetros también están presentes en la transmisión DVB-S. En la modulación digital terrestre aparece además un nuevo parámetro: modulación jerárquica o no jerárquica. DVB-T permite dos flujos de transporte, uno de alta prioridad (baja velocidad y muy robusto frente al ruido) y otro de baja prioridad que complementa al anterior en cuanto a velocidad y a calidad de imagen (para asegurar cierta calidad de imagen en zonas con una mala cobertura).

Debemos conocer todos estos parámetros para poder sintonizar correctamente un canal (o transpondedor) y sus portadoras. Exite una característica en el canal que permite la auto-sintonización en los receptores domésticos, pero ignoro si los sintonizadores para equipos personales tienen esta característica pero desde luego los programas que he encontrado para GNU/Linux no permiten autosintonizar (esto no es lo mismo que buscar canales de TV... es más bien "buscar transpondedores", la búsqueda de canales de TV la veremos más adelante...).

En España cada provincia tiene sus propios parámetros para los canales, básicamente son todos iguales y sólo se diferencia en las frecuencias.

Una vez que conocemos la frecuencia de un conjunto de portadoras y los parametros de las mismas podemos sintonizar nuestro receptor a esas portadoras... vemos ya la TV? pues no... todavía no...

El flujo de transporte

Toda la información DVB (sea cual sea el tipo) viaja dentro de un flujo MPEG, este flujo se llama concretamente MPEG2-TS (estándarizado por ISO), es decir: MPEG-2 Transport Stream. En este flujo se encapsula todo: audio, video, paquetes IP... etc. Este es el flujo que sintonizamos cuando establecemos los parámetros citados anteriormente en nuestro receptor y es en éste flujo en el que viajarán un determinado número de canales de TV, de radio y servicios interactivos de forma simultánea. Además también viaja información de señalización tales como horarios de programación o tipo de programa en emisión actual. Podéis crear/ver vuestros propios flujos de transporte con herramientas como ffmpeg o mplayer.

Sintonización de servicios

Una vez que nuestro receptor está recibiendo un flujo TS sólo nos queda seleccionar un servicio en concreto, esto se realiza mediante un nuevo valor llamado pid (que suele venir representado en hexadecimal). El pid identifica un servicio dentro de un conjunto del flujo.

Aquí podemos realizar una pausa para hablar un poco de las sintonizadoras para PC que podemos encontrar por ahí, las podemos clasificar en dos grandes grupos: las que linux soporta y las que no... :-P vale... y ahora en otros dos grupos: las USB1.1 y las USB2.0 (dentro de las USB2.0 hay unas pocas que también permiten USB1.1, estas son 2.0 a todos los efectos...) esta distinción es muy importante ya que con las USB1.1 no se puede acceder al TS completo (debido a la tasa de transferencia sobre todo) y el mismo DSP del receptor demultiplexa el flujo y obtiene el servicio con el pid especificado. Las capturadoras USB2.0 tienen un modo de funcionamiento conocido como tsraw que permite obtener el flujo completo para luego tratarlo por software en un nivel superior. Éstas sintonizadoras son las necesarias para utilizar programas tipo VCR-Linux de captura de programación y son las que más versatilidad nos ofrecerán. Después de este inciso sigamos...

Los canales de TV (y otras cosas) es lo que ya vamos a buscar dentro del flujo de transporte, esto se puede hacer de dos formas: un pid-scan y una búsqueda directa. Un pid-scan consiste en mandar al receptor pid's uno a uno para ver si encontramos algo o no, la forma directa emplea un pid conocido donde se encuentran señalizados el resto de pid's del flujo, es decir, contiene información del tipo: pid 0x101 --> La primera. La forma en la que nuestro programa busca los canales ya nos da igual, pero no está de más saberlo... ;-)

A lo que ibamos: ver la tele en KDE

Y que pasa con Gnome?!... más adelante... ya veréis porqué...

Para ver la televisión digital instalaremos kaffeine que en realidad es un frontend de otros programas como xine por ejemplo (que es el que usaremos para Gnome). Al instalar kaffeine, el solito se bajará un montón de información sobre la sintonización de los canales en distintas áreas geográficas de todo el mundo (incluído Madrid ;-)). Lamentablemente (al menos no cuando yo lo hice) no viene la información para Ciudad Real. Eso lo haremos nosotros ahora, copiaremos el archivo de Madrid, por ejemplo:

$ cp ~/.kde/share/apps/kaffeine/dvb-t/es-Madrid ~/.kde/share/apps/kaffeine/dvb-t/es-CReal

Ahora abrimos el archivo con gedit por ejemplo y veremos algo como esto:

T 770000000 8MHz 2/3 1/2 QAM64 8k 1/4 NONE     # Canal 58: La Primera, La 2, Canal 24H, Clan/TVE 50, RNE1, RNE Clásica, RNE 3
T 810000000 8MHz 2/3 1/2 QAM64 8k 1/4 NONE     # Canal 63: Telemadrid, La Otra, Onda 6
T 834000000 8MHz 2/3 1/2 QAM64 8k 1/4 NONE     # Canal 66: Veo, Veo 2, Net TV, Teledeporte
T 842000000 8MHz 2/3 1/2 QAM64 8k 1/4 NONE     # Canal 67: Cuatro, CNN+, 40 Latino, La Sexta 1
T 850000000 8MHz 2/3 1/2 QAM64 8k 1/4 NONE     # Canal 68: Telecinco, Telecinco Sport, Telecinco Estrellas, Fly Music
T 858000000 8MHz 2/3 1/2 QAM64 8k 1/4 NONE     # Canal 69: Antena 3, Antena Neox, Antena Nova, La Sexta 2

Esto es lo que se llama archivo de sintonización inicial y en cada fila se especifican los siguientes campos en este orden:

  1. Tipo de televisión digital. T de terrestial en este caso.
  2. Frecuencia.
  3. Ancho del canal. Suele ser 8Mhz pero en otros paises se usan anchos como 6Mhz y 7Mhz.
  4. Code rate (Hi) o relación de codificación para protección de errores. Los valores admisibles son: 1/2, 2/3, 3/4, 5/6 y 7/8.
  5. Code rate (Lo). Los valores admisibles son los mismos pero éstos se aplican al flujo de baja prioridad (o LP) mientras que el anterior se empleaba en el flujo de alta prioridad o HP.
  6. Guard interval o intervalo de guarda. Los valores admisibles son: 1/4, 1/8, 1/16 y 1/32.
  7. Esquema de modulación de las portadoras. Los permitidos por DVB-T son: QPSK, 16-QAM y 64-QAM. En España se emplea 64-QAM únicamente.
  8. Modo de transmisión. Los dos tipos son 2K y 8K, aquí usamos el de 8K.
  9. Guard interval o intervalo de guarda. Los valores admisibles son: 1/4, 1/8, 1/16 y 1/32.
  10. Parámetro de modulación jerárquica. En el territorio nacional no se emplea esta modulación.

Mediante este fichero proporcionamos al programa un punto de partida donde empezar a buscar servicios, el programa sintonizará el receptor con estos parametros y buscará los pid's para cada conjunto de ellos. Para empezar a buscar en nuestra zona territorial tenemos que buscar por internet dónde están los canales en dicha zona. El problema está que lo que encontraremos será algo como (datos de Ciudad Real):

Canal 65: La Primera, La 2, Canal 24H, Clan/TVE 50
Canal 66: VeoTV, NetTV, Teledeporte, Veo 2
Canal 67: Cuatro, CNN+, 40TV Latino, La Sexta 1
Canal 68: Telecinco, Telecinco Sport, Telecinco Estrellas, Fly Music
Canal 69: Antena 3, Antena 3 Nova, Antena 3 Neox, La Sexta 2

Pues vale... ¿y que hacemos con ésto?... muy fácil (o no): ahora tendremos que buscar por google la tabla de equivalencias entre canales y frecuencias, voy adelantando el trabajo y os planto aquí unos pocos:

65 - 826000000
66 - 834000000
67 - 842000000
68 - 850000000
69 - 858000000

Es curioso... la diferencia entre canales es... ¡tachán! 8Mhz ;-)

Ahora cambiamos las frecuencias en el archivo de sintonización inicial y lo dejamos como sigue:

T 826000000 8MHz 2/3 1/2 QAM64 8k 1/4 NONE     # Canal 65: La Primera, La 2, Canal 24H, Clan/TVE 50
T 834000000 8MHz 2/3 1/2 QAM64 8k 1/4 NONE     # Canal 66: VeoTV, NetTV, TeleDeporte, Veo 2
T 842000000 8MHz 2/3 1/2 QAM64 8k 1/4 NONE     # Canal 67: Cuatro, CNN+, 40TV Latino, La Sexta 1
T 850000000 8MHz 2/3 1/2 QAM64 8k 1/4 NONE     # Canal 68: Telecinco, Telecinco Sport, Telecinco Estrellas, Fly Music
T 858000000 8MHz 2/3 1/2 QAM64 8k 1/4 NONE     # Canal 69: Antena3, Antena3 Nova, Antena3 Neox, La Sexta 2

Lo de los canales no es necesario... es un comentario y kaffeine lo ignorará... pero así nosotros nos enteramos mejor.

Ahora conectamos el sintonizador DVB-T y lanzamos kaffeine (es paquete Debian y supongo que Ubuntu también así que no es necesario explicar su instalación), ahora pinchamos en DVB > Configure DVB y como source elejimos es-CReal (nuestro archivo!) y aceptamos. Ahora volvemos a DVB > Channels, activamos los filtros de Emisión en abierto, TV y Radio y pinchamos en Start Scan. Si tenemos el sintonizador correctamente conectado a una buena antena empezarán a salir canales en la lista de encontrado, cuando finalice los seleccionamos todos (o los que queramos) y pinchamos en << Add Selected.
Ahora si pinchamos en Digital TV podremos ver nuestros canales de TV favoritos (si es que tenéis alguno) ;-). Ah!... una cosa que a mi me encantó: probad las funciones de pause y control del flujo ;-).

Ahora sí: ver la tele en GNOME

Bueno... pues usaremos el (para mi) maravilloso xine (de hecho kaffeine usa el xine-engine para estas mismas labores). Xine tiene un "pequeño" problema: no permite la búsqueda de canales :-(. Tenemos que buscarlos nosotros... pero tranquilos! el paquete dvb-utils tiene herramientas que lo hacen por nosotros, así que: lo instalamos. Este paquete tiene una herramienta llamada scan que necesita de un archivo de sintonización inicial con el que poder buscar todos los servicios posibles.

Llegados a este punto he de reconocer mi ignorancia: la razón por la que primero configurábamos kaffeine era porque así teníamos un archivo de sintonización inicial con el que trabajar. Al escribir esta receta descubrí que el paquete dvb-utils YA incluye todos esos archivos que también están en kaffeine por lo que la instalación de dicho reproductor no es necesaria.

Para buscar los canales con scan simplemente tenemos que indicarle cual es el archivo de sintonización:

$ scan ~/.kde/share/apps/kaffeine/dvb-t/es-CReal

Si vuestra recepción no es muy buena, podéis encontrar algo más si indicáis a scan que se lo curre más:

$ scan -5 -n ~/.kde/share/apps/kaffeine/dvb-t/es-CReal

Veréis que la salida es una malgama de numeros y tal: parámetros de frecuencias, pid's, nombres de progama, etc. pues esto es justo lo que xine necesita para sintonizar canales DVB-T así pues tenemos dos opciones: copiamos la salida y la pegamos en un fichero que llamaremos channels.conf o ejecutamos lo siguiente:
$ scan -5 -n ~/.kde/share/apps/kaffeine/dvb-t/es-CReal > channels.conf

Ese archivo lo copiamos a ~/.xine/ y ahora ejecutamos xine, pinchamos en el botón de DVB y al desplegar la lista de reproducción tendremos los canales que encontramos con scan, los controles como pause también los tenemos disponibles ;-).

Algunos consejos sobre el hardware

Yo hasta ahora sólo he probado sintonizadoras USB de ambos tipos. Con la USB1.1 no conseguía muy buenos resultados pero algo se podía hacer. No son muchas las tarjetas que directamente soporta el núcleo linux y para el resto de tarjetas la cosa esta un poco verde. Mi recomendación (no lo toméis como publicidad) es: AverMedia DVB-T USB2.0 HDTV-1080i ready (o mod. A800). Es completamente compatible con linux (de hecho tiene una pegatina en la caja que lo dice!) y en su página tenéis un PDF de los de avermedia que explican cómo hacerla funcionar (que es tan fácil como pincharla y listo ;-)). Te funciona directamente hasta el mando a distancia... una delicia vamos...

Enlaces de interés

Veréis que en toda la receta no he puesto un sólo enlace... he preferido organizarlos todos aquí por orden, empecemos:

  • En la página de la ETSI, podéis descargar gratuitamente los estándares relativos a DVB previo registro. El correspondiente a DVB-T tiene como referencia EN 300 744, la versión más actual es la v1.5.1 (hasta la fecha de publicación de la receta). http://www.etsi.org/.
  • También podéis entrar en ISO/IEC y compraros el estándar del Mpeg2-ts que está definido en la norma ISO/IEC 13818-1. http://www.iso.org/.
  • Si queréis saber cómo se está implantando el DVB-T en España, legislación, etc. podéis consultar la página de la comisión de seguimiento de TDT en España: http://www.televisiondigital.es/Terrestre/Ciudadanos/index.htm
  • La página por excelencia de todo esto en linux, donde encontraréis los repositorios de toda la api DVB/V4L, documentación, información sobre el hardware... vamos, antes de compraros una sintonizadora visitad la página y leed detenidamente. Todas las que no aparezcan ahi... malo malo... en fin, la página es: http://linuxtv.org/.

Comentarios

Bueno... la receta ha resultado ser larga y probablemente "rollo", si os fijáis las cosas "linuxeras" que cuento son cuatro comandillos chorras... vamos que es muy fácil... lo que pretendía más bien era que todos vieramos un poco que esto de la TDT (sigue sin gustarme nada ese nombre) por si a alguno le pica el gusanillo... está muy interesante (o al menos para mi) y en cuanto a DVB... es un mundo... ya me contaréis si os vale esto para algo... ;-)

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

sintonizadora de television

hola, tengo una artec modelo HTDY-00001 y he intentado instalarla en mi ubuntu, he instalado los paquetes kaffeine, dvb-utils y xine-ui pero al poner cp ~/.kde/share/apps/kaffeine/dvb-t/es-Madrid ~/.kde/share/apps/kaffeine/dvb-t/es-CReal me sale cp: no se puede efectuar `stat' sobre « ~/.kde/share/apps/kaffeine/dvb-t/es-Madrid»: No existe el fichero ó directorio. He buscado el es-Madrid y esta en /usr/share/doc/dvb-utils/examples/scan/dvb-t .
Aparte no se si al utilizar gnome tengo que instalar el kaffeine o no.

Imagen de int-0

Wuops...

Lo de los ficheros no se si es problema de que tu usas Ubuntu y yo Debian, pero en mis tiempos ese fichero estaba ahí.

En cuanto a lo usar kaffeine... en aquel momento tampoco es que hiciese falta, pero te autoconfiguraba un par de cositas... ahora supongo que no hará falta... esto ya sabes que no para de evolucionar. De todas formas, no pasa nada porque lo uses.
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

Imagen de fsancho

Receptor TDT de Siemens en oferta en Carrefour

Según he podido leer en varios sitios, el receptor TDT de Siemens Gigaset M740, que lleva un Linux empotrado, disco de 80GB, etc etc. Está esfos días rebajado a 160€ en Carrefour. En la web de carrefour aparece el precio antiguo (269), pero según esto, está rebajado.

Imagen de int-0

oh diosmio un spammer!

Ah noo... perdón... jejeje...
------------------------------------
init=/bin/bash to conquer the world!

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

¿sabes algo de la winTv HVR 900?

Es una tarjeta sintonizadora USB, que además sintoniza la televisión analógica. La tarjeta está muy bien, pero tiene un problema...que no va en Linux Sad En el curso de introducción a GNU/Linux me ayudaron Paco Moya y David Villa a intentar ponerla en marcha pero no pudieron, supongo que por falta de tiempo. Yo por falta de conocimientos tampoco puedo, ya que, sinceramente, con muchas cosas me pierdo, y mira que llevo tiempo mirando en sitios por internet para ver si encuentro algo, pero nada.
Bueno, si alguien sabe algo de esta tarjeta le agradecería que me ayudase.
Saludos
][ALeX][

][ALeX][

Imagen de int-0

Sobre el HW de DVB...

El HW del que no hablen en linuxtv.org es poco probable que funcione. Son ellos los que se encargan de todo el sistema v4l/dvb de linux... no he encontrado drivers para sintonizadoras DVB fuera de lo que es linuxtv.org y sus enlaces... Sad

Siempre puedes mandar un mail a los de winTV... tal vez a ti no te hagan caso... pero si más gente como tu lo pide...
------------------------------------
init=/bin/bash to conquer the world!

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

por fin

Bueno, por fin, ya puedo ver la TDT en mi Ubuntu Laughing out loud
Los de winTv no han dado soporte pero alguien por ahí se lo ha currado de maravilla y han conseguido hacerla funcionar a las mil maravillas. Es la winTV HVR 900 (USB y además híbrida) que menciono un post más arriba.
Lo dicho, una maravilla.

][ALeX][

][ALeX][

wintv 900

Hola yo segui el tutorial que esta en la pagina de caligari pero no puedo hacer funcionar mi tarjeta, podrias decirme los pasos que seguiste por favor? tengo ubuntu dapper actualizada.

HVR-900

Yo ya he conseguido hacerla funcionar, faltaba un detalle, pero bastante importante, lo he dejado todo en:

http://www.espinosa.nom.es/2007/10/25/tdt-en-mi-ubuntu-mini-howto/

Espero que sirva

Targeta wintv hvr 900

Hola Alex, acabo de leerte en el foro.xD Resulta que yo estoy en el mismo caso que tu tengo un ubuntu y un mandriva y la targeta wintv HVR 900. Pero no consigo hacerla funcionar en ninguno.

He instalado el controlador ivtv, que con las Hauppauge suele rular. (por lo que he leido por ahi.)

He visto que tu ya lo has conseguido, pero el enlace que dabas ya no esta disponible (http://treboada.net/caligari/node/50) guardaste la pagina web, o me podrias decir mas o menos como lo hiciste???

Te lo agradeceria muchísimo, Gracias

Tarjetas WinTV HVR 900 y WinTV HVR900H

La tarjeta WinTV HVR 900 se vende en dos modelos, aparentemente iguales, pero con distinto juego de chipset. La HVR-900 si esta soportada, (modulo em28xx-dvb) pero no asi la HVR-900H, (chipset de la familia TM6000), aunque en la caja no aparece la "H".
Un saludo.

SINTONIZADORA USB LINUX COMPATIBLE

Hola amigos,
Quiero aprovechar el hilo para comentaros que Lifeview dispone de una sintonizadora de TV compatible con Linux, el modelo es la LV5T de la serie Not Only TV, la podeis localizar en tiendas APP o PC Box, su pvp ronda los 33 euros.

saludos

sintonizadora de TV compatible con Linux,

Hola amigo.
He leido que la LV5T de la serie Not Only TV, es compatible con Linux.
Yo me he comprado una pero no me la reconoce .
Que pasos he de siguir .
Gracias

Algunas tarjetas no están en

Algunas tarjetas no están en linuxtv y si que funcionan como es la mia (kworld 220 D+A)

Imagen de darkgnu

¿Y si miras bien?

A lo mejor tu tarjeta sí aparece soportada en LinuxTV.org pero resulta que no te has molestado en mirar en los foros y en los wikis.

Pero en fin...

----------------------------------------------------------
Cualquier revolución puede tener bajas y exige sacrificio.

----------------------------------------------------------
$ mv *.net /dev/null