BTTV Mini-Como

Por Eric Sandeen, eric_sandeen@bigfoot.com
Traducción de Félix Martos Trenado, asinkecualo@mail.com

Traducción: v0.1, Febrero 2000 Original: v0.3, February 2000
Este documento describe el hardware, el software, y los procedimientos necesarios para usar una capturadora de vídeo o una tarjeta de TV, basadas en los chipsets bt8x8, bajo Linux.

1. Introducción

La posibilidad de capturar y ver fuentes de vídeo es una de las más interesantes características multimedia de Linux. Están soportados varios dispositivos de vídeo a través de la API video4linux ( http://roadrunner.swansea.uk.linux.org/v4l.shtml), entre ellos varias tarjetas de TV basadas en los chipsets de Conexant bt848 y bt878. Este documento explica como usar estas tarjetas en un sistema Linux.

1.1 Copyright de este documento

El copyright sólo se traduce de forma informativa, por eso mantenemos el original, que es la única versión válida.

--------------------------------------------
This HOWTO is copyrighted 1999 Eric Sandeen.

Unless otherwise stated, Linux HOWTO documents are copyrighted by their respective authors. Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions.

All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO co-ordinator at the address given below.

In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents, and would like to be notified of any plans to redistribute the HOWTOs.

If you have questions, please contact Tim Bynum, the Linux HOWTO co-ordinator, at linux-howto@metalab.unc.edu via email. --------------------------------------------

BTTV-Mini-HOWTO es propiedad intelectual (C)1999 de Eric Sandeen

A menos que se establezca otra cosa, los titulares de los HOWTO de Linux son sus respectivos autores. Los HOWTO de Linux pueden reproducirse y distribuirse en todo o en parte, en cualquier medio físisco o electrónico, mientras se mantenga este aviso de copyright en todas las copias. La redistribución comercial está permitida y se anima a ello; de cualquier manera, al autor le gustaría que le fuese notificada su distribución.

Todas las traducciones, los trabajos basados en o que agrupen cualquier documento de los HOWTO de Linux deben estar cubiertos por esta misma licencia. Es decir, no puedes producir un trabajo derivado de un HOWTO e imponer restricciones adicionales en su distribución. Pueden hacerse excepciones a estas reglas bajo ciertas condiciones; por favor contacte con el coordinador de Linux Howto en la dirección proporcionada infra.

Resumiendo, queremos promover la propagación de esta información a través de tantos medios como sea posible. Aunque deseamos retener el copyright de los HOWTO, y nos gustaría que se nos informara de cualquier plan para redistribuirlos.

Si tiene Usted alguna pregunta, contacte con Tim Bynum, el coordinador de los HOWTO de linux en linux-howto@metalab.unc.edu a través de correo electrónico. Para la traducción de este howto, contacte con su autor o con el proyecto Insflug en http://www.insflug.org>.

1.2 Dónde obtener este documento

La más reciente versión oficial de este documento puede obtenerse en el Proyecto de Documentación de Linux (LDP) http://metalab.unc.edu/LDP/.

Las diversas versiones de la traducción se pueden obtener en INSFLUG http://www.insflug.org/, y en la página del traductor http://www.asinkecualo.org.

1.3 Reconocimientos

Gracias a Ralph Metzler y Marcus Metzler por escribir el driver original bttv. También a Alan Cox por crear la API de Video4Linux, Gerd Knorr por su trabajo en las tarjetas de radio, las sucesivas versiones de bttv y xawtv. Y a todo aquel que haya contribuido al soporte de estas tarjetas bajo Linux. Gracias a William Burrow, que también escribió un BTTV Howto (del que tuve noticias después de escribir este documento).

Para escribir este HOWTO he buceado en la documentación de bttv y xawtv.

1.4 Renuncia de responsabilidad

Usa la información contenida en este documento por tu cuenta y riesgo. No me hago en absoluto responsable de la potencial peligrosidad del contenido de este documento. El uso de los conceptos, ejemplos u otro contenido de este documento queda completamente bajo tu responsabilidad.

Todos los copyrights son de sus propietarios, a menos que se haga notar específicamente lo contrario. El uso de cualquier término en este documento no debe afectar a la validez de cualquier marca comercial o registrada.

El nombrar cualquier producto o marca no afecta a la validez de esa marca. Es muy recomendable que haga copias de seguridad de su sistema antes de cualquier instalación importante y de forma periódica.

2. Requerimientos de Hardware

Del README de bttv:

Bttv es un controlador de dispositivo para capturadoras de vídeo que usen la familia de chips Conexant ( http://www.conexant.com) Bt848. entre estos se cuentan Bt848, Bt848A, Bt849, Bt878 y Bt879. La diferencia principal (y a veces la única) entre los diversos fabricantes es el tipo de sintonizador y algunos componentes adicionales en las tarjetas. Por ejemplo, algunas tarjetas de Hauppauge tiene un decodificador adicional de Teletexto (que no es necesario con el soft adecuado) o un decodificador de sonido. Sólo algunos de estos componentes adicionales están soportados por bttv. También pueden diferir el tipo de entradas (Compuesto o S-Video) y su número.

Las siguientes tarjetas deben funcionar:

Si conoce Usted alguna otra tarjeta que funcione, por favor escríbanos y la añadiremos en la próxima revisión de este documento.

3. Requisitos de Software

Para usar estas tarjetas de TV bajo Linux, necesitará los controladores de dispositivo apropiados en el núcleo. Los controladores de dispositivo de bttv son parte de la distribución del núcleo de Linux desde la versión 2.2.0.

Opcionalmente puede obtener la última versión del paquete de los controladores de dispositivo y usarlo con los kernel 2.0.35 y superiores. Aun así, no se garantiza que funcione con la anterior serie de núcleos 2.0.x. El paquete actualizado de bttv está disponible en http://www.strusel007.de/linux/bttv/.

Si es Usted nuevo en el mundo de los controladores de dispositivo de bttv, le sugerimos que comience con la versión incluida en el último núcleo. Si experimenta problemas con él, o encuentra que su tarjeta no está soportada, entonces atrévase con la serie 0.6 actualizada de los controladores de dispositivo en las direcciones arriba indicadas. Si te siente aventurero, puede probar la serie de drivers 0.7 de Gerd Knorr, que se incorporarán en los núcleos 2.4. Estos están disponibles en http://www.strusel007.de/linux/bttv/.

Este documento está basado principalmente en los controladores de dispositivo del núcleo 2.2.14, con alguna mención de las características de la serie 0.6. La serie 0.7 no está actualmente cubierta, ya que está en desarrollo mientras escribimos este documento.

Los nuevos controladores de dispositivo de la serie 0.7.x no funcionan con los núcleos 2.0.x

4. Configuración del sistema

4.1 Instalación del Hardware

(Gracias a William Burrow por esta sección.)

Si tiene miedo de abrir la carcasa de su ordenador, lea primero este documento completo y anota las características de su tarjeta, tales como sintonizador, número de sus circuitos integrados, la frecuencia de sintonización y datos similares.

En otro caso, abra su ordenador e instale la tarjeta en una ranura libre. Elija una que soporte la transferencia del bus PCI y el PCI Bus Mastering; si no sabe si su placa base tiene todas estas características, mírelo en su manual. Le harán falta para el modo Overlay.

Con respecto al sonido hay dos formas diferentes de conectar su tarjeta capturadora y la de sonido. Una es internamente. Conecte su cable de audio digital del lector CD-ROM a la entrada de sonido de la tarjeta de vídeo y la salida a la entrada de la de sonido, donde iba el cable del CD-ROM. Otra forma es conectar el conector «jack» externo de sonido de 3.5 mm. de la tarjeta de vídeo con la entrada de línea de la tarjeta de sonido. También puede, simplemente, conectar unos altavoces amplificados a la salida de la tarjeta de vídeo, si no tiene una de sonido o no le apetece pasarlo a través de ella. (Algunas tarjetas nuevas Bt878 no tienen ningún conector de sonido, ya que envían la señal digital de audio a través del bus PCI. No hay soporte para esto en el momento de escribirlo).

También es recomendable una fuente de vídeo para determinar si la tarjeta está funcionando o no. Algunas tarjetas manejan vídeo compuesto, S-Video y si tienen sintonizador entrada RF (N. del T.: La entrada de antena habitual). Hay un conector separado para cada entrada.

4.2 Configuración del Núcleo

Su núcleo necesitará estar configurado para soportar su tarjeta. La mayoría de las nuevas distribuciones de Linux vienen con los módulos necesarios ya compilados, así podrá encontrar videodev.o, bttv.o, y tuner.o en /lib/modules/2.x.x/misc, y ya tendría que estar todo dispuesto.

En otro caso, necesitará recompilar su núcleo con

CONFIG_VIDEO_DEV

y

CONFIG_VIDEO_BT848

activados, preferiblemente como módulos para cargar. Mire en el Linux Kernel HOWTO ( http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html) (o su traducción española, disponible en http://www.insflug.org) para más detalles acerca de la recompilación del núcleo.

4.3 Usar los paquetes 0.6.x actualizados

Si desea usar los paquetes 0.6.x actualizados, debe obtener primero el archivo de uno de los sitios mencionados arriba. Descomprímalo con la orden:

tar -xvzf bttv-0.6.x.tar.gz

y cámbiese al recién creado directorio con permisos de superusuario, y escriba

make

en el directorio principal para crear los controladores de dispositivo. (Puede ignorar tranquilamente la información del fichero INSTALL con respecto a editar los makefiles ya que pasaremos esta información al controlador de dispositivo, en forma de parámetros de los módulos.) Entonces teclee:

make install

para instalarlos y finalmente ejecute

/sbin/depmod -a

para actualizar las información sobre dependencias de los módulos.

4.4 Ficheros especiales en /dev

Después necesitará crear los fichero especiales de carácter en el directorio /dev. Teclee ls /dev/video*; ls /dev/radio* para ver si ya existen. Si no existen necesitaremos crearlos. Todos los ficheros tendrán como major device number 81, y el minor device number dependerá del dispositivo específico (vídeo, radio, etc.) así como múltiples instancias de estos ficheros.

Mire en la API de Video4Linux ( http://roadrunner.swansea.uk.linux.org/v4lapi.shtml) para los detalles relativos a la programación.

Hay un guión del intérprete de órdenes (script de shell) llamado MAKEDEV en el directorio driver del paquete de los controladores de dispositivo bttv, que creará por Usted cuatro dispositivos de vídeo. También puede hacerlo fácilmente Usted mismo, si sólo dispone de una tarjeta de vídeo. Como root, teclee:

mknod /dev/video0 c 81 0

chmod 666 /dev/video0

ln -s /dev/video0 /dev/video

mknod /dev/radio0 c 81 64

chmod 666 /dev/radio0

ln -s /dev/radio0 /dev/radio

Hay también dispositivos de teletexto y VBI que pueden crearse si tiene alguna aplicación que los necesite (Actualmente son pocas). Teclee:

mknod /dev/vtx0 c 81 192

chmod 666 /dev/vtx0

ln -s /dev/vtx0 /dev/vtx

mknod /dev/vbi0 c 81 224

chmod 666 /dev/vbi0

ln -s /dev/vbi0 /dev/vbi

4.5 Carga de los módulos

El controlador de dispositivo bttv proporciona varios módulos diferentes, con distintas opciones, que se describen en el apéndice de este documento. Con tantos módulos y opciones, puede desear hacerlo todo a mano hasta tenerlo funcionando. En el caso de que esto pudiese ocasionar un bloqueo en el ordenador, no será perjudicial escribir:

sync; sleep 1; sync

para vaciar los buffers antes de proceder. Entonces, usando la orden insmod como el usuario root, intente cargar estos módulos. Los dos primeros son fáciles, ya que generalmente no necesitan ninguna opción:

insmod videodev

insmod i2c

Ahora está preparado para cargar el propio módulo bttv:

modprobe -v bttv

Por defecto el módulo bttv intenta autodetectar su tipo de tarjeta. Observe /var/log/messages para ver lo que encuentra. Si no lo autodetecta correctamente, puede Usted añadir la opción card=n al final de la orden anterior para forzar un tipo de tarjeta, con n elegido de de la siguiente lista. (Se dan los tipos de 0 hasta 19, en los controladores de dispositivo del núcleo bttv-0.6.4h se incluye soporte para los tipos desde el 20 hasta el 27). Puede también añadir la opción radio=1 si su tarjeta tiene sintonizador de FM.


card=n  card type
                        0:  Autodetectar
                        1:  Miro
                        2:  Hauppauge (viejas tarjetas bt848)
                        3:  STB
                        4:  Intel
                        5:  Diamond
                        6:  AVerMedia
                        7:  MATRIX Vision MV-Delta
                        8:  FlyVideo
                        9:  TurboTV
                        10: Hauppauge (nuevas trajetas bt878)
                        11: MIRO PCTV pro
                        12: Terratec/Vobis TV-Boostar
                        13: Nueva Hauppauge WinCam (bt878)
                        14: MAXI TV Video PCI2
                        15: Terratec TerraTV+
                        16: Aimslab VHX
                        17: PXC200
                        18: AVermedia98
                        19: FlyVideo98 (nuevas FlyVideo cards)
                        20: Zoltrix TV-Max
                        21: iProTV
                        22: ADS Technologies Channel Surfer TV
                        23: Pixelview PlayTV (bt878)
                        24: Leadtek WinView 601
                        25: AVEC Intercapture
                        26: LifeView FlyKit sin sintonizador
                        27: Intel Create and Share PCI


Después, cargue el módulo del sintonizador con:

modprobe tuner type=n

Probablemente necesite mirar en la tarjeta cuál es el que tiene. Algunas tarjetas (Miro y Hauppauge) permiten detectar automáticamente el sintonizador detectado, pero puede que necesite especificarlo. El sintonizador tendría que tener la marca y especificar si es NTSC o PAL. Para los PAL, está marcado con 28.xxxMHz (donde xxx son tres dígitos). Para NTSC, la chapa deberá rezar 35.xxxMHz. Una vez que lo tenga identificado, selecciona el valor de n de la lista siguiente (los tipos 8 y 9 están sólo incluidos en bttv-0.6.4h):


type=n          tipo del chip sintonizador, n entre los siguientes:
                0: sintonizador Temic PAL 
                1: sintonizador Philips PAL_I 
                2: sintonizador Philips NTSC 
                3: sintonizador Philips SECAM
                4: sin sintonizador
                5: sintonizador Philips PAL
                6: sintonizador Temic NTSC
                7: sintonizador Temic PAL 
                8: sintonizador Alps TSBH1 NTSC
                9: sintonizador Alps TSBE1 PAL

(N. del T. En España ese utiliza el sistema PAL, como en la mayoría del continente europeo, exceptuando Francia, que usa SECAM. En América y Japón lo habitual es NTSC. Además los sintonizadores más corrientes son el Philips y el Temic, por lo que lo habitual en su tarjeta, suponiendo que esté en España, será 0 ó 5.)

Finalmente, inserte los módulos de sonido que necesite. De nuevo necesitará mirar detenidamente la tarjeta para saber lo que tiene. Tenga en cuenta que los controladores de dispositivo para los chips TEA6300, TDA8425, TDA9855 y DPL3518 sólo están incluidos en los controladores de dispositivo de la serie 0.6.4h y no lo están en los actuales (2.2.14) controladores de dispositivo del núcleo.

modprobe msp3400 o tea3600 o tda8425 o tda9855 o dpl3518 (consulte el apéndice para más detalles y opciones)

Ponga en marcha tu programa favorito de video4linux y compruebe si funciona. Si no puede cambiar de canal, asegúrese de haber insertado el módulo con el sintonizador correcto. Si no escucha nada, compruebe el módulo del sonido, y que el canal no esté silenciado, si mete el audio a través de la tarjeta de sonido.

4.6 Automatización del proceso

Después de conocer qué módulos y opciones necesitas, puede automatizar el proceso poniendo la información en /etc/conf.modules. Entonces, al ejecutar una aplicación que necesite el controlador de dispositivo, se cargará automáticamente. Nosotros utilizamos los siguientes:


# TV
alias   char-major-81   bttv
pre-install bttv        modprobe -k tuner; modprobe -k msp3400
options bttv            radio=1 card=3
options tuner           type=2

Asegúrese de cambiarlo para reflejar los módulos y opciones correspondientes a su tarjeta. (Ejecute /sbin/depmod -a para asegurarse de que toda la información de dependencias de módulos está actualizada).

(N. del T.: En nuestro caso tuvimos que añadir pll=1 al driver bttv. El tipo de tarjeta es el 6 y el sintonizador el 5. Utilizamos una Avermedia Capture 98)

5. Aplicaciones

Ahora que su núcleo y los dispositivos están configurados y los módulos insertados, necesitará una aplicación para ver y capturar imágenes desde su tarjeta. Hay varios disponibles:

Hay también disponible un controlador de dispositivo para el control remoto de la tarjeta FlyVideo98 en http://wolf.ifj.edu.pl/~jochym/FlyVideo98/

Asegúrese de leer la documentación para cualquier aplicación que vaya a utilizar. Algunas de ellas necesitan editar previamente los ficheros de configuración para que la aplicación funcione correctamente. Debido a los diferentes tipos de tarjetas que existen por doquier, debe dedicar algo de tiempo a leer la documentación de cada una, ya que lo normal será que la configuración por defecto no funcione con su tarjeta.

6. Apéndice A - Argumentos para todos los módulos

Lo que vaya precedido por un "*" sólo está disponible en la serie 0.6.4h



videodev.o
        es el módulo básico para video4linux, todos los controladores
        de dispositivo (incluido bttv) se registran aquí

i2c.o
        el módulo genérico i2c. Hace la mayor parte del control 
        del bus, todos los módulos (excepto videodev.o) lo usan

        argumentos con insmod:
                scan=1          escanea el bus en busca de
                                controladores de dispositivo i2c
                verbose=0       calla a i2c
                i2c_debug=1     para depuración, manda todo el tráfico 
                                        bus i2c a los registros del sistema

bttv.o
        el driver bt848 (el chip capturador)

        argumentos con insmod:
                remap=adr       remapea la memoria de Bt848 a direcciones<<20
                vidmem=base     dirección del frame buffer>>20 (tarjeta gráfica)
                triton1=0/1     para compatibilidad con Triton1
                                Triton1 es reconocida automáticamente
                                pero puede ayudar con otros chipsets
                pll=0/1/2       ajustes del pll 
                                0: no usa PLL
                                1: 28 MHz crystal instalado
                                2: 35 MHz crystal instalado
                radio=0/1       la tarjeta soporta radio
                card=n          tipo de tarjeta
                                0:  Autodetectar
                                1:  Miro
                                2:  Hauppauge (antiguas tarjetas bt848)
                                3:  STB
                                4:  Intel
                                5:  Diamond
                                6:  AVerMedia
                                7:  MATRIX Vision MV-Delta
                                8:  FlyVideo
                                9:  TurboTV
                                10: Hauppauge (nuevas trajetas bt878)
                                11: MIRO PCTV pro
                                12: Terratec/Vobis TV-Boostar
                                13: Nueva Hauppauge WinCam (bt878)
                                14: MAXI TV Video PCI2
                                15: Terratec TerraTV+
                                16: Aimslab VHX
                                17: PXC200
                                18: AVermedia98
                                19: FlyVideo98 (nuevas FlyVideo cards)
                                *20: Zoltrix TV-Max
                                *21: iProTV
                                *22: ADS Technologies Channel Surfer TV
                                *23: Pixelview PlayTV (bt878)
                                *24: Leadtek WinView 601
                                *25: AVEC Intercapture
                                *26: LifeView FlyKit sin sintonizador
                                *27: Intel Create and Share PCI

        remapeo, tarjeta, radio y plll aceptan hasta cuatro argumentos separados 
        por comas (para múltiples tarjetas). La "CARD" y "PLL" definidas en el 
        Makefile se usan por defecto.

msp3400.o
        El driver para los procesadores de sonido msp34xx. Si tiene una tarjeta
        estéreo probablemente necesitarás cargar este módulo.

        argumentos con insmod:
                debug=1/2       pasa alguna información de depuración a los syslog,
                                2 es más verboso.

*tea6300.o
        El driver para el chip de fader tea6300. Si tiene una trjeta estéreo 
        y el msp3400.o no funciona, debe probar este. Este chip se ve mucho en 
        tarjetas STB TV/FM (en ventas de remanentes de OEM's de Gateway en 
        sitios de subastas).

        argumentos con insmod:
                debug=1         pasa alguna información de depuración a los syslog.

*tda8425.o
        El driver para el chip de fader tda8425. Este controlador de
        dispositivo  antes era parte de bttv.c, así que si funcionaba 
        antes y ahora no, pruebe a cargarlo

        argumentos con insmod:
                debug=1         pasa alguna información de depuración a los syslog.

*tda9855.o
        El controlador de dispositivo para el chip descodificador
        estéreo y de procesamiento de audio tda9855.
        
        argumentos con insmod:
                debug=1         pasa alguna información de depuración a los syslog.

*dpl3518.o
        Driver para el procesador Dolby Pro Logic dpl3518a
        
        argumentos con insmod:
                debug=1         pasa alguna información de depuración a los syslog.

tuner.o
        El controlador de dispositivo sintonizador. Lo necesita a
        menos que sólo quiera usar la tarjeta con una cámara o un
        sintonizador externo. 

        argumentos con insmod:
                debug=1         pasa alguna información de depuración a los syslog
                type=n          tipo del chip sintonizador, n entre los siguientes:
                        0: sintonizador Temic PAL 
                        1: sintonizador Philips PAL_I 
                        2: sintonizador Philips NTSC 
                        3: sintonizador Philips SECAM
                        4: sin sintonizador
                        5: sintonizador Philips PAL
                        6: sintonizador Temic NTSC
                        7: sintonizador Temic PAL 
                        *8: sintonizador Alps TSBH1 NTSC
                        *9: sintonizador Alps TSBE1 PAL

i2c_chardev.o
        proporciona un driver de carácter para el acceso al bus i2c. Funciona 
        sólo con los núcleos 2.1.x, no se compila por defecto.