TDT en mi ubuntu (mini-HOWTO)

Hace tiempo que tengo por casa una llave usb hibrida (tdt-analogica) de televisión, que solo podía utilizar en windows ya que el fabricante no daba drivers ni nada para su uso en linux.

Harto de esta situación y buscando la manera de montarme un HTPC barato me puse a investigar sobre cómo poder utilizar mi sintonizadora en ubuntu y encontré varios sitios con indicaciones sobre cómo hacerlo:

Combinando las dos tenemos un how-to detallado para utilizar el sintonizador Hauppauge WinTV-HVR 900 en ubuntu (yo lo he probado en Dapper aunque creo que se puee hacer en cualquier distribución, sea ubuntu o no).

HVR-900

Pasos:

1. Crea el directorio hvr900 en tu home (es solo una recomendación)

mkdir hvr900

2. Copia el archivo del firmware (emBDA.sys) que podeis encontrar en el cd de los drivers de windows bajo el directorio hvr900 (ahi os dejo donde bajaros el de mi sintonizadora)
wget http://www.wii.org.es/uploads/File/emBDA.sys

3. Bajate el archivo de firmwares de v4l-dvb:
wget http://mcentral.de/firmware/firmware.tgz

4. Ahora hay que bajarse ciertos paquetes para que puedas utilizar el repositorio de v4l-bvd y compilar el kernel

sudo apt-get install build-essential libxine-extracodecs mercurial dvb-utils kaffeine
sudo apt-get install linux-headers-$(uname -r | sed 's/.*-//')

5. Bajate el directorio v4l-dvb

hg clone http://mcentral.de/hg/~mrec/v4l-dvb-experimental/

6. Compila e instala

cd ~/hvr900/v4l-dvb-experimental
make && sudo make install

7. Convertir e instalar el firmware (y los firmwares por defecto)

cd v4l_experimental/xc3028/
gcc convert.c -o convert
./convert ~/hvr900/emBDA.sys > xceive_xc_3028.fw
sudo cp xceive_xc_3028.fw /lib/firmware
cd /lib/firmware
sudo tar xzvf ~/hvr900/firmware.tgz

8. Actualiza los archivos de módulos para que se cargue automáticamente

sudo vi /etc/modprobe.d/hvr900

—- Introducir este texto —

# Hauppage WinTV HVR 900 hybrid TV stick
# modo TDT
options em28xx device_mode=1
# dependencia de módulos
alias hvr900 em2880_dvb

9. Actualizar el archivo de modulos par que lo cargue en el arranque…

sudo su -
echo "hvr900" >> /etc/modules
/etc/init.d/module-init-tools restart

Ahora ya está todo listo para enchufar la sintonizadora… Si todo ha ido bien en el log del sistema pondrá algo así como:

$ dmesg
...
em28xx #0: V4L2 VBI device registered as /dev/vbi0
em28xx #0: V4L2 device registered as /dev/video0
...
DVB: registering new adapter (em2880 DVB-T).
DVB: registering frontend 0 (Zarlink ZL10353 DVB-T)...
em28xx #0: Found Hauppauge WinTV HVR 900
...

Y ya podemos configurar kaffeine para ver la tele… eso ya os lo dejo a vosotros.

21 comentarios en “TDT en mi ubuntu (mini-HOWTO)

  1. hola… de verdad te lo agradesco …. creo que vi el tutirial en otro lado y no hubo manera, pero con el tuyo…. me va fantastico… te lo adgradesco de ante de nuevo!!

  2. Hola,

    Me ha funcionado a la perfección con la salvedad de que: Kaffeine no se entera de que he conectado el dispositivo. Sigue mostrándome las mismas opciones. Con WinTV veo sólo los canales analógicos de TV tradicional.

    ¿Alguna idea o ayuda?

    Gracias y un saludo,

    Jorge.

  3. ¿podrías pasarnos el log del dmesg en la parte que detecta la tarjeta USB?
    Si el kaffeine no muestra la opcion DVB puede ser por 2 cosas:
    1. Que no esté configurada para ello
    2. Que no se haya reconocido el dispositivo

    Si nos pasas la porcion del log y tu version de ubuntu y eso te podremos decir algo más.

  4. Hola,

    creo que tengo el mismo problema que Jorge. Yo uso Ubuntu 7.10 Gutsy Gibbon, kernel 2.6.22-14-generic, corriendo sobre un mac. La tarjeta es la misma que la del ejemplo (WintTV HVR900). Al revisar el log del sistema, no encuentro estas lineas:

    DVB: registering new adapter (em2880 DVB-T).
    DVB: registering frontend 0 (Zarlink ZL10353 DVB-T)…

    Os pego la parte del log del sistema referente a la tarjeta:

    em28xx new video device (2040:6502): interface 0, class 255
    em28xx: device is attached to a USB 2.0 bus
    em28xx: you’re using the experimental/unstable tree from mcentral.de
    em28xx: there’s also a stable tree available but which is limited to
    em28xx: linux

  5. Hola Jose Antonio,

    veo que mi mensaje anterior ha quedado cortado. Lo que habia pegado del log era bastante más largo:

    [ 1536.664000] em28xx new video device (2040:6502): interface 0, class 255
    [ 1536.664000] em28xx: device is attached to a USB 2.0 bus
    [ 1536.664000] em28xx: you’re using the experimental/unstable tree from mcentral.de
    [ 1536.664000] em28xx: there’s also a stable tree available but which is limited to
    [ 1536.664000] em28xx: linux

  6. Hola,

    recién me regalón el HVR900 B3C0 y no logro hacer que funcione bajo mi GNU/Linux, concretamente Ubuntu 7.10.

    Te pongo algunas algunos datos por si así puedes ayudarme:
    $ dmesg | grep em28xx
    [ 45.394051] em28xx v4l2 driver version 0.0.1 loaded
    [ 45.394435] em28xx new video device (2040:6502): interface 0, class 255
    [ 45.394440] em28xx: device is attached to a USB 2.0 bus
    [ 45.394442] em28xx: you’re using the experimental/unstable tree from mcentral.de
    [ 45.394444] em28xx: there’s also a stable tree available but which is limited to
    [ 45.394446] em28xx: linux

  7. Ahora entiendo los post anteriores…. XD

    Eso es un problema :P

    En fin, te lo mando al correo ok?

    gracias.

  8. Hola Horuje,

    Parce que tu sintonizador tiene una versión diferente que la mia…

    Mis ultimas líneas serían:

    em2880-dvb.c : DVB Init
    Loading base firmware: xc3028_8MHz_init0.i2c.fw
    Loading specific dtv settings: xc3028-tuner.c: attach request!
    DVB: registering new adapter (em2880 DVB-T)

    Y la tuya dice:

    em2880-dvb.c: unsupported device

    O bien tienes un problema con el firmware descargado, o bien tu modelo no está soportado (lo detecta como WinTV HVR Rev. 1.2) y la mia la detectaba como WinTV HVR 900

    Si las dos funcionan igual, simlemente bastaría con editar el archivo em2880-dvb.c y añadir los ids del dispositivo… Pero igual tiene cambios ¿Que modelo es el tuyo exáctamente?

  9. He estado ojeando el código y hay en comentarios la implementación (supongo que incompleta o no funcional) de WinTV HVR R2, supongo que ese es mi modelo.

    Mi modelo es el 65018/B3C0 pero creo que no tiene de momento soporte pero en este grupo de noticias (creo ke es) hay un xico que si tiene soporte

    -index: http://news.gmane.org/group/gmane.linux.drivers.em28xx/
    -topic en cuestión: http://article.gmane.org/gmane.linux.drivers.em28xx/645

    mi ingles es algo malo… xD

    de cualquier modo, no sabria modificar el archivo 2880-dvb.c, una lastima.

  10. Usando el ./convert

    ./convert ~/hvr900/emBDA.sys > xceive_xc_3028.fw

    Me sale:

    bash: xceive_xc_3028.fw: Permiso denegado

    Y como root me sale:

    bash: ./convert: No existe el fichero ó directorio

    Soy nuevo en Linux, aclaro, he seguido todos los pasos hasta ahora, pero en este me trunco :-(

  11. Bueno, ahora me lo rehago, me doy cuento que me sale algo más. Es en el paso:

    gcc convert.c -o convert

    Me sale:

    convert.c:1:19: error: stdio.h: No existe el fichero ó directorio
    convert.c:2:20: error: string.h: No existe el fichero ó directorio
    convert.c:3:20: error: stdlib.h: No existe el fichero ó directorio
    convert.c: En la función ‘main’:
    convert.c:18: error: ‘FILE’ no se declaró aquí (primer uso en esta función)
    convert.c:18: error: (Cada identificador no declarado se reporta una vez
    convert.c:18: error: ara cada función en la que aparece.)
    convert.c:18: error: ‘file’ no se declaró aquí (primer uso en esta función)
    convert.c:30: aviso: declaración implícita incompatible de la función interna ‘printf’
    convert.c:31: aviso: declaración implícita incompatible de la función interna ‘exit’
    convert.c:35: aviso: declaración implícita incompatible de la función interna ‘printf’
    convert.c:36: aviso: declaración implícita incompatible de la función interna ‘exit’
    convert.c:38: aviso: declaración implícita incompatible de la función interna ‘fprintf’
    convert.c:38: error: ‘stderr’ no se declaró aquí (primer uso en esta función)
    convert.c:41: aviso: la asignación crea un puntero desde un entero sin una conversión
    convert.c:42: aviso: declaración implícita incompatible de la función interna ‘memcpy’
    convert.c:50: aviso: declaración implícita incompatible de la función interna ‘printf’
    convert.c:73: aviso: declaración implícita incompatible de la función interna ‘printf’
    convert.c:89: aviso: declaración implícita incompatible de la función interna ‘exit’

    ¿Cómo soluciono esto? :-(

  12. Hola buenas. Estoy pensando en comprarme esta tarjeta porque veo que es compatible con linux y además híbrida. La usaría en un portátil bastante antiguo, es un thinkpad de ibm, con un celeron a 1066 y 256 de Ram, y no tiene usb 2.0. Pero bueno tengo debian con el kernel recompilado y la verdad que va de maravilla. Mplayer y demás funcionan sin problemas.

    Mi duda es básicamente si con estas características podría ver la tele sin problemas. Ah otra cosa ¿Qué tal funciona la antena que trae? Me imagino que dependerá un poco de donde estés pero cuál es vuestra opinión.

    Un Saludo, Iván

  13. Yo tengo una duda. He seguido las instrucciones y aparentemente la tarjeta funciona, la detecta segun dmesg, y kaffeine la encuentra y se puede usar el autoscan.
    Pero no encuentra nada. Cuando llega a una frecuencia donde deberia haber un canal se para un momento y sale:

    Invalid section length or timeout: pid=17

    El numero de pid cambia, pero al final no sale ningun canal en la lista.
    La misma tarjeta detecta canales en windows, haberlos haylos.

    Estoy en asturias con lo que no tengo una lista de canales disponible (o no se como conseguirla)
    Mi duda es si esto es un problema de drivers o lo puedo descartar y centrarme en sintonizarlos manualmente?

  14. Pingback: Yo programo … el blog » Blog Archive » TDT en mi eeePC 701

Los comentarios están cerrados.