BTTV

Linux in Brazil

Documentação original
e de qualidade
em bom português

O texto abaixo foi publicado no BR-Linux antes de 2005, e está mantido aqui por razões históricas. Veja o material atualizado diariamente do BR-Linux em http://br-linux.org
Dúvidas comuns | Perguntar no Fórum | Notícias | Mais documentos | Contato
 
Destaques de hoje:
  • A semana no BR-Linux: Enchente, 13 milhões de downloads, Fedora 10
  • Quem ganha? Benchmarks comparam: Ubuntu, Fedora, OpenSolaris e FreeBSD
  • 1 ano do cyber 100% Linux de Floripa
  • As redes P2P vão destruir o mundo?
  • Instalação de placa receptora de TV no Linux

    Paulino Kenji Sato (paulino@dfi.uem.br)

    A instalação desse tipo de hardware não apresenta muitas dificuldades, quando o mesmo e suportado, a grande maioria das placas de tv vendidas atualmente fazem o uso dos chips de controle e captura de imagens fabricado pela conexant (http://www.conexant.com), conhecidas como bt8xx. O suporte a eles no Linux e feito pelo driver bttv.o, desenvolvido por Gerd Knorr . Versões novas podem ser encontrados em http://www.strusel007.de/linux/bttv/

    Requerimentos:

    -Uma placa receptora de tv que use chips da familia Brooktree Bt848/848A/849/878/879 - esse texto tratará da instalação da placa TView99 CPH063 (www.askeys.com)

    -Kernel 2.2.x ou 2.4.x, compilado com suporte a video4linux e bttv, também precisa do suporte a i2c, devem estar como modulos. (este texto não tratará desse assunto) As distribuições já vem com os modulos compilado e instalados.

    -lirc, para utlizar o controle remoto infravermelho (www.lirc.org)

    -xawtv, software para assistir tv (http://www.strusel007.de/linux/xawtv/)

    Instalando a placa

    Verifique quantos chips tem na placa, anote os códigos do mesmos, bem como a marca e modelo do tuner (aquela caixa metálica onde se liga a antena).

    A TView99 possui 3 chips, a bt878, uma que não consegui identificar (aparentemente eo responsavel pelo controle remoto) e outra que parece ser o responsavel pelo mute do audio.

    O tuner tem uma etiqueta escrito temic e outros códigos, mas aparentemente e compativel com a philips ntsc.

    Instale a placa em um slot pci.

    Configurando o Linux:

    Caso necessário compile o kernel com suporte a bttv.

    para verificar se o kernel atual tem suporte ao bttv faça:

     modinfo -d bttv
     bttv - v4l driver module for bt848/878 based cards
    

    caso o mesmo não esteja presente

     modinfo -d bttv
     modinfo: bttv: no module by that name found
    

    Edite o /etc/modules.conf, acrescentando:

     # i2c
     alias char-major-89     i2c-dev
     options i2c-core        i2c_debug=0
     options i2c-algo-bit    bit_test=0
    
    

    # bttv alias char-major-81 videodev alias char-major-81-0 bttv options bttv card=38 radio=0 # 38 eo marca/modelo da placa de tv, radio indica se a placa tem ou nao # um receptor de radio fm. o bttv detecta automaticamente algumas placas.

    options tuner type=8 # type indica o fabricante/modelo do sintonizador. # o padrão brasileiro e equivalente ao americano (não confundir com o sistema # de cor) # largura de banda de 6mhz, audio na subportadora de 4.5Mhz modulado em FM. # o tipo 2 também funciona (philips ntsc).

    uma lista de placas pode ser obtido em (caso o source do kernel esteja instalado) em /usr/linux/Documentation/video4linux/bttv/CARDLIST - e nesse diretório tem mais informações.

    Verifique se existe o device /dev/video0 (deve existir), caso não exista crie-os com o seguinte script:

    #!/bin/bash
    function makedev () {
    
    

    for dev in 0 1 2 3; do echo "/dev/$1$dev: char 81 $[ $2 + $dev ]" rm -f /dev/$1$dev mknod /dev/$1$dev c 81 $[ $2 + $dev ] chmod 666 /dev/$1$dev done

    # symlink for default device rm -f /dev/$1 ln -s /dev/${1}0 /dev/$1 } echo "*** new device names ***" makedev video 0 makedev radio 64 makedev vtx 192 makedev vbi 224

    Essas informações estão na documentação do driver (Docs do kernel).

    Feito isso, carregue o modulo bttv.

    modprobe bttv
    

    olhe nos logs se tudo correu bem (/var/log/message) e pelo dmesg.

    Adquira e instale o xawtv

    Verifique se não existe um rpm/tgz/deb dele nos cds de instalação. A compilação e instalação dele não tem segredos. faça o download do source e descompacte-o, e siga os passos abaixo.

     ./configure 
     make
     make install
    

    dicas de uso:

    as setas para cima e para baixo mudam de canal.

    as setas direita/esquerda fazem a sintonia fina.

    teclas +/- controlam o volume (na tview99 não funciona).

    selecione o sistema de cor pal-m.

    use o scantv para fazer a verredura dos canais de sua região.

    escolha usntsc-broadcast para canais abertos e usntsc-cable para tv a cabo.

    No modo overlay e normal a tela toda pisca quando se move a janela onde esta sendo exibida a imagem.

    O site do xawtv é o seguinte: http://www.strusel007.de/linux/xawtv/

    Programa para decodificar o closed caption

    No dirétorio contrib/cc do source do xawtv tem o programa para decodificar o closed caption e outros textos. Utilize o make para gerar o executavel.

    Copie o cc para o /usr/local/bin (ou outro lugar de sua preferência) e execute-o em um xterm

     xterm -font 10x20 -geometry 32x10 -title "Caption" -e cc -c
    

    Sintonize um canal que utilize closed caption (exemplo: Globo), nem todo programa possui esse sinal. Os telejornais e alguns filmes possuem-no. algumas letras podem sair trocadas/truncadas. Recomendo renomer o programa cc para outro nome como dccaption, para evitar o conflito com o compilador cc.

    Controle remoto

    Algumas placas de TV vem acompanhados de um controle remoto. Eles utilizam uma das portas de I/O de uso generico disponivel no chip bt8xx. Infelizmente não há uma padronização da forma como isso é implementado. Mas isso não impediu que a comunidade open source desenvolvesse drivers. Mesmo que a placa não tenha uma entrada especifica para o controle remoto, é possivel através do uso de uma porta serial ou paralela a ulização do mesmo, e claro, será necessário um aparelho de controle remoto (adquira um em uma loja de material eletronico). Obtendo, instalando e configurando o lirc

    O projeto Linux Infrared Remote Control , se propõe a fornecer suporte a diversos tipos de controle remotos por infra-vermelho de uso genérico.

    Faça o download do lirc em http://download.sourceforge.net/LIRC/lirc-0.6.3.tar.gz e descompacte-o em um dir qualquer (ex: no seu home dir ou /usr/src) e mude para o diretório recem criado (lirc-0.6.3).

    Leia o README e o INSTALL. Rode o script "configure", se tudo correr bem, um menu irá se abrir. Escolha a opção 1 [1 Driver configuration (driver:cph06x)], depois o 4 [4 TV card ]. Escolha a sua placa de tv [f TView99 CPH063 (card=38)]. Retorna ao menu principal, escolha a opção 2 [2 Software configuration]. Selecione pelo menos a opcao 1 (Compile tools for X-Windows). No menu principal, escolha a opção 3 (3 Save configuration & run configure). Isso irá gerar os Makefiles.

    As ultimas frases serão:

       You will have to use the lirc_gpio kernel module.
       Now enter 'make' and 'make install' to compile and install the package.
    

    então, dê os comandos make e make install.

    Adicione no /etc/modules.conf:

    # lirc 
    alias char-major-61  lirc_gpio
    

    Para usar o controle é necessário mapear os botões com os seus códigos. Isso é feito no arquivo /usr/local/etc/lircd.conf, no diretório remotes/ existem alguns arquivos pré-configurados. Em http://www.lirc.org/remotes/ existem outros.

    A placa TView99 vem com o controle AS-218 - copie o arquivo correpondente ao controle remoto para /usr/local/etc/lircd.conf.

    Carregue os drivers necessários (modprobe lirc_gpio - deverá carregar o lirc_dev automáticamento, bem como os do bttv, talvez seja necessário a carga manual desses módulos)

    verifique com o comando lsmod se os módulos foram carregados:

    ...
    lirc_gpio               4592   0  (autoclean)
    lirc_dev                8016   1  (autoclean) [lirc_gpio]
    tuner                   4224   1  (autoclean)
    tvaudio                 8240   0  (autoclean) (unused)
    bttv                   59360   0  (autoclean) [lirc_gpio]
    i2c-algo-bit            7200   1  (autoclean) [bttv]
    i2c-core               12176   0  (autoclean) [tuner tvaudio bttv
    i2c-algo-bit]
    videodev                4480   2  (autoclean) [bttv]
    ...
    

    Caso não apareça o lirc_gpio e o lirc_dev, olhe nos logs se não há alguma indicação de problemas.

    Utilize o irrecord para verificar o funcionamento (na verdade ele serve para configurar o controle). Invoque-o com irrecord ~/teste

    Após uma mensagem de aviso apareçerá:

    Abort program now by pressing Ctrl-C! Otherwise press RETURN.
    "aperte enter"
    Hold down an arbitrary button.
    "pressione qualquer botão do controle e segure até 
    que apareça a proxima mensagem, será mostrado uma 
    sequência de pontos '.'"
    ...................................................
    Found gap length: 199987
    Now enter the names for the buttons.
    Please enter the name for the next button (press  to 
    finish recording)
    "digite aqui o nome do botão, ou de enter"
    Checking for toggle bit.
    Please press an arbitrary button repeatedly as fast as 
    possible (don't hold it down!).
    "aperte o mais rapido que poder algum botão, mas não fique para sempre
    fazendo isso, para e espere uns 10 segudos"
    ./irrecord: no data for 10 secs, aborting
    
    

    No toggle bit found. Successfully written config file.

    OK, se chegou até aqui, o controle está funcionando. Agora carregue o daemon lircd, mude a permissão do /dev/lircd para 666 (chmod 666 /dev/lircd)

    Compile e instale o xawtv com suporte ao lirc (configure --enable-lirc --outras-opcoes)

    Crie o arquivo pessoal de configuração do lirc, no contrib do xawtv existe um dot.lircrc, copie ele para o ~/.lircrc

    Chame o xawtv a partir de um xterminal, se tudo estiver correto o controle deverá funcionar, pressione algum botão para verificar (ex:mute). se aparecer "no infrared remote support available", o xawtv não conseguiu se comunicar com o lird ou não existe uma configuração para o xawtv no ~/.lircrc.

    Serão necessárias algumas alterações no ~/.lircrc para que todos os botões do controle tenham algum efeito sobre o xawtv, algumas funções não correspondem ao existente no /usr/local/etc/lircd.conf, compare os dois e faça as mudaças no ~/.lircrc.

    No man page do xawtv-remote tem a listagem dos comandos que podem ser utilizados na opção config.

    Para finalizar, coloque em algum rc.dot (rc.local) o lircd para ser carregado no boot.

    Problemas que podem ocorrer

    Aparece somente uma tela azul.

    Troque a fonte de sinal para "television".

    Não sintoniza nenhum canal.

    Verifique se o cabo da antena está conectado. Seleciona a tabela de canais correto, usntsc-????. Pode ser que o tuner não esteja correto, experimente outros.

    Não sai som.

    Verifique se o cabo de audio está conectado corretamento, a saida da placa de tv deve ser ligado na entrada line-in (ou aux) da placa de som. Olhe se o mute não está ativo. (na barra de titulo)

    A imagem está em preto e branco.

    Mude o sistema de cor para pal-m.

    Não possui a opção pal-m ou quando seleciona ocorrem erros.

    Instale o xawtv mais novo (3.41)

    O som apresenta estralos.

    Sem solução, causa desconhecida.

    Para que foi pedido para identificar os chips existentes na placa?

    Use essas informações para reportar os problemas que ocorrem.

    Observação

    A configuração descrita nesse texto foi implementado na distribuição slackware 7.1, kernel 2.4.2. O mesmo deve funcionar sem problemas em outras distribuições. talvez os programas devam ser instalados a partir de um .rpm ou src.rpm, ou no formato suportado pela distribuição.

    Este texto é de livre distribuição.

    O original deste texto pode ser obtido em: http://www.dfi.uem.br/~paulino/textos/bttv.txt

    Paulino Kenji Sato (paulino@dfi.uem.br) 31/03/2001

    [ << Licq com PHP ] [ Scanner Videocompo >> ]