Colocando uma PixelView PlayTV MPEG2 para funcionar no Ubuntu

Atenção : Esse artigo só vale para Ubuntu 8.04 (Hardy Heron)

Por ocasião da atualização do Ubuntu para a mais nova versão tive que acertar algumas coisinhas, por exemplo, minha placa de TV denominada "PixelView PlayTV MPEG2 PV-M4900 FM.RC" da PixelView que funcionava de primeira numa versão antiga do Ubuntu (6.04), nunca funcionou nas versões posteriores sem uma pequena intervenção. A mudança que faço pós-instalação é sempre a mesma que usei no Ubuntu versão 7.04, 7.10 e agora o 8.04. Se voce tem uma placa de TV igual ou similar a minha então veja como pô-la para funcionar. Como já manjado, eis o passo a passo :

Passo 1) Minha placa foi reconhecida pelo Ubuntu ?

Primeiramente veja se sua placa playTV é reconhecida e autoconfigurada pelo Ubuntu, veja :

$ dmesg |grep bttv
[   13.276000] bttv: driver version 0.9.17 loaded
[   13.276000] bttv: using 8 buffers with 2080k (520 pages) each for capture
[   13.276000] bttv: Bt8xx card found (0).
[   13.276000] bttv0: Bt878 (rev 17) at 0000:04:02.0, irq: 19, latency: 32, mmio: 0xd3200000
[   13.276000] bttv0: detected: Prolink Pixelview PV-BT [card=72], PCI subsystem ID is 1554:4011
[   13.276000] bttv0: using: Prolink Pixelview PV-BT878P+9B (PlayTV Pro rev.9B FM+NICAM) [card=72,autodetected]
[   13.276000] bttv0: gpio: en=00000000, out=00000000 in=006fc0ff [init]
[   13.276000] bttv0: using tuner=5
[   13.276000] bttv0: i2c: checking for TDA7432 @ 0x8a... not found
[   13.376000] bttv0: i2c: checking for TDA9887 @ 0x86... not found
[   13.408000] bttv0: registered device video0
[   13.408000] bttv0: registered device vbi0
[   13.408000] bttv0: registered device radio0
[   13.408000] bttv0: PLL: 28636363 => 35468950 ..<6>usbcore: registered new interface driver gspca
[   13.440000] input: bttv IR (card=72) as /class/input/input3
[ 2114.136000] bttv0: PLL can sleep, using XTAL (28636363).
[ 2249.252000] bttv0: PLL: 28636363 => 35468950 .. ok
[ 3040.804000] bttv0: PLL can sleep, using XTAL (28636363).
[ 3148.896000] bttv0: PLL: 28636363 => 35468950 .. ok
[ 3148.928000] bttv0: PLL can sleep, using XTAL (28636363).

Inclusive o controle remoto, que no log acima foi exibido como :

[   13.440000] input: bttv IR (card=72) as /class/input/input3

Apesar de as linhas acima indicarem que a placa usa sintonizador tuner=5 e estar de acordo com a tabela :

http://tldp.org/HOWTO/BTTV/modprobe.html#TUNMOD

Verá mais tarde que precisei de trocar o código do tuner.

Para descartar alguns problemas que podem ocorrer e evitar que perdamos tempo com uma placa que não irá funcionar no Linux, temos de fazer três testes :

teste 1) Verificar se a placa de TV foi devidamente reconhecida pelo seu sistema, para verificar isso, execute no terminal :

$ lspci
00:00.0 Host bridge: Intel Corporation 82955X Memory Controller Hub (rev 81)
00:01.0 PCI bridge: Intel Corporation 82955X PCI Express Root Port (rev 81)
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 01)
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 01)
00:1c.3 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 4 (rev 01)
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 01)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 01)
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 01)
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 01)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev e1)
00:1f.0 ISA bridge: Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge (rev 01)
00:1f.2 IDE interface: Intel Corporation 82801GB/GR/GH (ICH7 Family) SATA IDE Controller (rev 01)
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 01)
01:00.0 VGA compatible controller: nVidia Corporation G71 [GeForce 7900 GS] (rev a1)
03:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5751 Gigabit Ethernet PCI Express (rev 11)
04:02.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11)
04:02.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11)
04:07.0 FireWire (IEEE 1394): Texas Instruments TSB82AA2 IEEE-1394b Link Layer Controller (rev 01)

As linhas em negrito identificam que a placa de TV foi reconhecida, isto não significa que ela funciona, apenas que o sistema ao listar todo o hardware PCI alistou a sua placa. Se não houver nada na relação que indique que a placa de TV foi encontrada no seu sistema então temos um problema, sua placa está com defeito, mal encaixe e nem adianta prosseguir com o artigo, pois será perda de tempo. Se sua placa for USB então troca-se o comando ‘lspci’ por ‘lsusb’ e note se ela aparecerá na relação.

teste 2) A segunda etapa envolve se os módulos(como chamamos drivers no linux) já foram carregados, se foram aparecerão no boot do seu sistema, como o boot do sistema é algo bastante rápido então peça um replay executando no terminal :

$ dmesg |grep bttv
[   13.276000] bttv: driver version 0.9.17 loaded
[   13.276000] bttv: using 8 buffers with 2080k (520 pages) each for capture
[   13.276000] bttv: Bt8xx card found (0).
[   13.276000] bttv0: Bt878 (rev 17) at 0000:04:02.0, irq: 19, latency: 32, mmio: 0xd3200000
[   13.276000] bttv0: detected: Prolink Pixelview PV-BT [card=72], PCI subsystem ID is 1554:4011
[   13.276000] bttv0: using: Prolink Pixelview PV-BT878P+9B (PlayTV Pro rev.9B FM+NICAM) [card=72,autodetected]
[   13.276000] bttv0: gpio: en=00000000, out=00000000 in=006fc0ff [init]
[   13.276000] bttv0: using tuner=5
[   13.276000] bttv0: i2c: checking for TDA7432 @ 0x8a... not found
[   13.376000] bttv0: i2c: checking for TDA9887 @ 0x86... not found
[   13.408000] bttv0: registered device video0
[   13.408000] bttv0: registered device vbi0
[   13.408000] bttv0: registered device radio0
[   13.408000] bttv0: PLL: 28636363 => 35468950 ..<6>usbcore: registered new interface driver gspca
[   13.440000] input: bttv IR (card=72) as /class/input/input3

Novamente, observe as linhas em negrito, elas indicam que o módulo para a placa de TV (bttv) foi carregado, inclusive o controle remoto (bttv IR).

teste 3)Se o controle remoto consta na relação então podemos investigar que evento do sistema controla tal placa, isto é necessário porque a partir do kernel 2.6.22 não mais é necessário o módulo ‘lirc_gpio’ para controlar esse modelo de controle remoto. Tudo é coordenado pelos eventos do sistema como se fosse um teclado, veja :

$cat /proc/bus/input/devices
(...)
I: Bus=0001 Vendor=1554 Product=4011 Version=0001
N: Name="bttv IR (card=72)"
P: Phys=pci-0000:04:02.0/ir0
S: Sysfs=/class/input/input18
U: Uniq=
H: Handlers=kbd event3 
B: EV=100003
B: KEY=2c0814 100004 0 0 0 4 2008000 2090 2001 1e0000 4400 0 ffc

Agora que testamos e recolhemos toda a informação a respeito dessa placa, vamos coloca-la para funcionar.

Passo 2) Sua placa é mesmo card=72 ?

Acontece que o log do Linux indica que minha placa de tv foi autodetectada como card=72. E como não bastasse também noutros documentos como /usr/src/linux/Documentation/video4linux/bttv/ e também na página online :

http://tldp.org/HOWTO/BTTV/cards.html

Também identificam minha placa PixelView PlayTV MPEG2 como card=72.

Mas temos um vergonhoso problema, se eu usar card=72 minha placa de TV funcionará e sintonizará os canais, porém com problemas com o audio. Por essa razão identifiquei outra placa de TV que é semelhante a minha, mas não tem problemas de audio, é o card=37.

Passo 3) Meu sintonizador é realmente ‘tuner=5’ ?
Na mesma tabela abaixo há uma relação de sintonizadores e seus respectivos códigos :

http://tldp.org/HOWTO/BTTV/modprobe.html

Usando a tabela acima e realizando alguns testes determinei que meu tunner é 38. Como fiz os testes ? No passo seguinte eu explico.

Passo 4) Fazendo teste de sintonia de audio e video

Há também uma outra maneira de determinar quais são os sintonizadores para uma placa especifica (card=n), um script que varre todas as possibilidades e caso um sintonizador seja válido ele passa a sintonizar canais exibindo o audio e também o vídeo :
Execute no terminal :

sudo apt-get install scantv

E depois crie o script abaixo com permissão de execução :

#!/bin/bash
video="/dev/video0"
vbi="/dev/vbi0"
echo "testando :"
echo "  video = $video"
echo "  vbi = $vbi"
card_no=37
for tuner_no in `seq 1 45` ; do
    sleep 3s
    echo "Testando o card ${card_no}"
    echo "Testando o tuner ${tuner_no}"
    sudo rmmod bt878
    sudo rmmod bttv
    sudo rmmod tuner
    sleep 1s
    sudo modprobe bttv card=$card_no tuner=$tuner_no
    #sleep 1s
    #sudo modprobe bt878
    #sleep 1s
    scantv -n PAL-M -f us-bcast -c $video -C $vbi
done

Ao executar o script acima, voce sintonizará todos as bandas para o modelo de placa escolhido card=37 e ficará sabendo quais os sintonizadores (tunner=n) que realmente sintonizam canais. Vou logo dizendo que é cansativo, pois esse processo de ficar sentado na frente do monitor e ficar observando um tunner=n de cada vez e ver passar todos os canais com audio é demorado. Apesar disso, se sua placa for igual a minha, não tem nem o que testar, é tuner= 38.

As linhas em negrito, são linhas que podem ser modificadas, por exemplo, card=37 é o modelo correspondente a minha PixelView, mas não existe apenas um modelo de PixelView e voce poderá ser tentado a usar outro, incluindo até mesmo o card=72 que foi o que o Ubuntu reconheçeu automaticamente. Se voce tiver mais de uma placa de tv ou webcam, as variaveis video="/dev/video0" e vbi="/dev/vbi0" talvez tenham de ser alteradas.

Passo 5)Dando um ‘bypass’ no autoreconhecimento do ubuntu

Pois é, depois de determinar que o autoreconhecimento da placa de TV do Ubuntu falhou é hora de especificar no momento de boot que voce deseja usar parametros diferentes do autoreconhecimento da placa PixelView. Dê um ALT+F2 e execute :

gksu gedit /etc/modprobe.d/bttv

e coloque o seguinte conteúdo :

options bttv card=37 tuner=38 radio=1 remote=1

Passo 6) Alterar o xorg.conf
Não é obrigatório, mas me falaram que alguns programas que sintonizam canais de TV requerem o modulo "v4l" seja carregado no Xorg, assim dê um ALT+F2 e execute "gksu gedit /etc/X11/xorg.conf" e acrescente a linha "Load" na sua sessão "Module" :

Section "Module"
   Load "v4l"
EndSection

Salve o arquivo e reinicie o seu sistema. Vou ser sincero com você, minha placa de sintonia de TV funciona com ou sem as alterações no xorg.conf, então ele não é determinante para o funcionamento da placa de TV.

Passo 7 ) Instalando programas

sudo apt-get install tvtime transcode

Passo 8) Capturando videos

Uma ajuda para compreender como funciona capturar videos a partir da placa de captura é esse artigo :
http://www.cefetsc.edu.br/~delmar/sl/slackware/artigos/mplayer-mencoder-chipset-bt8xx.html

Vamos a um exemplo de como capturar e gravar um .avi a partir do seu seletor de canais :

mencoder tv:// -tv driver=v4l2:input=0:normid=4:channel=13:\
   chanlist=us-bcast:width=352:height=240:contrast=-25:\
   saturation=-25:brightness=-0:\
   device=/dev/video1:adevice=/dev/dsp \
   -oac mp3lame -lameopts cbr:br=64 \
   -ovc xvid -xvidencopts bitrate=800 -o gravacao_canal_13.avi

Para gravar o audio eu tenho que ajustar o mixer do gnome de acordo, e não é tão simples quanto parece.

Problemas encontrados :

Se eu usar o card=72 que é o indicado pela documentação e tal como foi reconhecido pelo Ubuntu, mesmo com as conexões de entrada de audio estando corretas eu tenho problemas com o volume – não há som- mesmo fuçando no mixer do volume do GNOME. Apesar disso, o controle remoto funciona e sintoniza os canais normalmente, apenas o audio não funciona. Testei várias combinações de tuner com card=72 e todas elas apresentaram o mesmo problema, por essa razão, troquei card=72 por card=37 e agora funciona bem, só que o modelo card=37 é desprovido de controle remoto. Assim, mesmo tendo o controle remoto, sou obrigado a despreza-lo.

Na realidade, posso usar card=72 e tuner=38 e a principio o som não irá funcionar, mas voce pode resolver temporariamente esse problema mudando o audio para ‘mono’. No tvtime tem de ir em configuracao de entrada->modo de audio preferido-> e mudar de mono para estereo e depois para "mono", e deve repetir toda vez que mudar de canal, sim, é uma chateação. Por isso a solução mais fácil é usar card=37 e viver sem o controle remoto.

Programas como o TVTime vem pré-ajustado para usar sempre o /dev/video0, as vezes é um problema se voce tiver mais de uma placa de TV ou webcam porque /dev/video0 poderá não corresponder a placa de Video. Para resolver esse problema voce tem que usar parâmetros do tvtime como ‘tvtime -d /dev/video1’ se sua placa de TV estiver neste endereço.

Conclusão
A receita de bolo aí acima é para minha placa de TV funcionar, estou compartilhando com vocês e quem sabe isso possa ajudar bastante gente. Mas, não espere que eu responda se não funcionar contigo. Normalmente quando posto algum artigo sobre funcionamento de hardware, chovem comentários me perguntando onde ou como fazer funcionar também o modelo XYZ. Da ultima vez que postei por exemplo como fazer uma epson CX700 funcionar no Linux teve gente até pedindo onde conseguia CD de instalação para windows. Por essa razão, não espere nada de mim, mas se precisar de ajuda eis uma lista de discussão que poderá procurar : https://lists.ubuntu.com/mailman/listinfo/ubuntu-br

  1. #1 por Leandro Costa em 29 \29\UTC maio \29\UTC 2008 - 13:57

    Ola Ham,

    Estou com uma placa ENL TV-FM 2 que nao consigo de forma nenhuma fazer o sou funcionar nela.
    Estou querendo comprar uma placa nova compativel com linux que funcione tudo (som, radio, controle remoto)
    Vc indica algum modelo que possa ser adquirido aqui no brasil ?

    grato
    leandro costa

  2. #2 por Emerson em 29 \29\UTC maio \29\UTC 2008 - 16:32

    Ei, como faço para instalar uma CFF8230 ?

  3. #3 por newtux em 29 \29\UTC maio \29\UTC 2008 - 20:25

    Olá Hamarker,
    Eu tenho esta placa.

    existe algumas combinações que comigo sempre funcionaram:

    1ª) card=70 tuner=43
    2ª) card=72 tuner=62
    3ª) card=139 tuner=43

    com audio sempre espetado direto na placa de som quando usando os cabos svideo ou composto, no caso de cabo coaxial uso saida de som da placa de captura plugada na placa de som.

    um abraço.

  4. #4 por newtux em 29 \29\UTC maio \29\UTC 2008 - 20:37

    Existe também esta configuração card=72 radio=1 tuner=2

  5. #5 por Ivan em 30 \30\UTC maio \30\UTC 2008 - 16:46

    substitui a linha
    or tuner_no in “1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45” ; do

    por
    or tuner_no in `seq 1 45`; do

  6. #6 por hamacker em 30 \30\UTC maio \30\UTC 2008 - 17:58

    Ivan, obrigado pela dica.

  7. #7 por Robson em 22 \22\UTC junho \22\UTC 2008 - 23:11

    a minha placa é : 01:03.0 Multimedia video controller: Conexant CX23880/1/2/3 PCI Video and Audio Decoder (rev 05)

    como faço para configura-la no ubuntu 8.04?

  8. #8 por Eduardo em 14 \14\UTC julho \14\UTC 2008 - 16:55

    Olá,
    minha placa é a mesma que a sua (PixelView PlayTV Mpeg2 PV-4900), e da primeira vez que instalei o Ubuntu 8,04 funcionou perfeitamente. Mas eu cai na desgraça de voltar ao Windows, me arrependi e instalei o Ubuntu novamente. O problema é que agora a placa de TV não está fazendo seu serviço direito, fiz exatamente como no tutorial (como da primeira vez), e refiz o processo várias vezes e, posteriormente, até usei outras configurações, mas continua na mesma: o som está em perfeita ordem, mas os canais estão todos com a numeração alterada (a Globo por exemplo está no canal 56) e a imagem está péssima, na parte de baixo está verde e o resto em preto e branco, além de estar trêmula.

    Gostaria de saber se sabe o que está acontecendo e se poderia me dar uma mãozinha pra resolver isso.

    Muito Obrigado.

  9. #9 por Eduardo em 14 \14\UTC julho \14\UTC 2008 - 20:03

    Já resolvi o problema, mas só consigo assistir e mudar as configurações pelo root.

    Valeu!!!

  10. #10 por André de Oliveira Cunha em 28 \28\UTC março \28\UTC 2009 - 22:00

    Olá…

    Pow véio, Talvez possa me ajudar com uma placa de tv – BrookTree Bt878 Video Capture Device – Audio Section e BrookTree Bt360 MediaStream Controller, Indicadas pelo Everest Ultimate..
    O problema é que já revirei a internet e naum consigo o bendito DRIVER…
    Caso possa me ajudar Agradesso desde já!
    Atenciosamente: André

    Obs: Naum aguento, mais!!!!

  11. #11 por Mário em 28 \28\UTC abril \28\UTC 2009 - 12:45

    Oi, acabei de migrar para o ubuntu 8.04 e tenho a mesma placa que a sua. no primeiro passo fiz o que mandou fui no temrinal e digitei lspci e apareceu lá a msma coisa que aqui. no segundo passo que num consigo aparece só

    [48631.948170] bttv0: IRQ lockup, cleared int mask [bits: OFLOW GPINT* PPERR]

    e coisas semelhante.. vc sabe me ajudar?

  12. #12 por asghan em 5 \05\UTC junho \05\UTC 2009 - 20:16

    Bom, aki funcionou com card 139 e tunner 2, agora achei uma coisa bem interessante, no caso do Mandriva e do openSUSE, tem um utilitário q é só colocar o sintonizador e mais algumas coisas e pronto! será q um dia teremos isso no Ubuntu ?

  13. #13 por edson em 20 \20\UTC janeiro \20\UTC 2010 - 22:42

    foi bom

  1. Como Faço? » Como instalar uma PlayTV no novo Ubuntu 8.04
%d blogueiros gostam disto: