25 julho 2005

A Saga Continua...

Conforme prometido, na semana passada tivemos fortes emoções nas tentativas de configurar o Mythtv. Mas as coisas estão, finalmente, caminhando!

Depois que descobri o modelo correto da placa e do tuner, resolvi configurar os canais (já contei essa parte? então vale como "cenas do episódio anterior"). Como não temos um grabber xmltv decente para os canais do Brasil, tentei fazer na munheca, mesmo. Sem chance. O Mythtv é muito mal documentado. Simplesmente não conseguia fazer as coisas funcionarem.

Mais alguns passeios pelo fórum e pelo wiki e descobri que uma das opções do mythfilldatabase lê um arquivo de configuração do xawtv (que estava funcionando) e insere os canais no banco do Mythtv. Rodei. Bateu, pegou! :-)

Viva! Agora consigo sintonizar os canais que a TVA deixa abertos no cabo da antena! Só com um detalhe (sempre tem um...): assim que a TV é selecionada, o som fica mudo. Mudando de canal, o som aparece. Menos mal...

Só que eu não estava nada contente com o consumo de CPU. Estava em 100%. Dependendo do tipo de programa, a imagem ficava pulando muito. Desenhos animados, então, pareciam histórias em quadrinhos interpretadas. Horrível.

Voltando ao fórum, descobri que ativar a aceleração gráfica resolveria esse problema. Só que o script de instalação dos drivers nVidia não está funcionando legal na minha máquina. Ele até instala tudo direitinho, só que assume que você está usando um monitor de última geração. Deixa as freqüências altas demais para meu velho SyncMaster 3.

Depois de fuçar um pouco no XF86config-4 (acho que o arquivo é esse), resolvi baixar a resolução para 640x480. Fiquei contente com o resultado. Tenho splash screen da nVidia quando o X sobe, tenho aceleração gráfica e tenho mais de 30% de cpu em "idle" quando estou vendo TV. Sem pulos, imagem limpa! Para conseguir mais, só quando for possível ativar a compressão por hardware da placa de TV. Mas isso, até onde eu consegui descobrir, é deficiência do driver...

Mas eu queria mais (e ainda quero...). Fui pesquisar sobre o lirc. Tem um howto no wiki. Segui, ajustando para usar o sensor da placa de captura (já tinha contado isso?). Descobri uma coisa muito importante, que derrubou alguns dos meus planos:

O lirc foi criado para ler pulsos de uma porta serial e transformar esses pulsos em um código (keystrokes) inteligível pelos programas compatíveis. Então, ele tem alguns processos "independentes". Primeiro, ele lê a serial e identifica o padrão do sinal. Aí, através de um arquivo de configuração, traduz esse padrão em um comando inteligível, tipo "volume+" ou "ch-". Esse comando, através de outro arquivo de configuração, é transformado num comando (ou keystroke) que o software que está sendo controlado entenda, tipo "V" ou "seta para baixo".

Pois bem, quando você opta por usar o sensor de uma placa de TV, a primeira parte (traduzir o sinal em comando para o lirc) é feita por hardware. A placa já entrega ao lirc o comando, e não o sinal. A princípio, isso seria uma grande vantagem, por tirar do software o peso dessa interpretação. Só que cria uma restrição que eu não desejava: a placa só entende sinais do controle remoto que veio com ela. Para usar um controle remoto universal (minha intenção desde o início do projeto), ele tem que ser compatível com a placa (duvido que exista) ou "inteligente" (tem que aprender a transmitir como o controle original). Um investimento que estava totalmente fora do meu orçamento. E o controle da PixelView é muito fraquinho para o Mythtv. Tem poucos botões e nenhum grupo em formato de diamante. Uma pena...

De qualquer forma, resolvi configurar o controle. E descobri que essa é uma tarefa que exige mais planejamento do que parece. Escolher que botão é melhor para cada função é difícil, especialmente quando se tem menos botões do que se gostaria. Mas cheguei a uma solução. E agora tenho controle remoto "total" sobre o Mythtv, o mplayer e o xine!

Próximo passo: a grade de programação. Não sei por que cargas, a rede ainda não está legal no meu HTPC. Eu consigo fazer ssh do escritório para ele, navegar na internet com o Mythbrowser e até baixar a previsão do tempo. Mas não consigo mapear um compartilhamento NFS do escritório nem baixar a grade de programação com o meu script. Só no micro do escritório.

Então, para testar, "apelei": gerei um arquivo xmltv no escritório para os canais que tenho no HTPC, queimei num CD-RW e levei para a sala. O mythfilldatabase (outra vez ele) tem uma opção para ler um xmltv e inserir na grade. O problema é fazer com que ele entenda que os canais já estão cadastrados. Ele insiste em criar novos canais.

Depois de uns ajustes, consegui fazer o guia funcionar, ainda em testes. É muito legal! Quando você muda de canal, ele mostra o nome do programa que está sendo exibido. E o guia tem dúzias de opções de localização e gravação. FUNCIONA! Só falta automatizar a carga.

Resolvi testar uma gravação. Abri o guia, selecionei um programa de meia hora e apertei a tecla "Record" do controle remoto. Ele marcou o programa para ser gravado. Deixei o micro ligado e voltei mais tarde. Ele gravou! Só tem um detalhe: lembra do problema que eu citei lá em cima sobre o som ficar mudo até que você mude de canal? Pois é: ele gravou sem som! :-(

Já li sobre esse problema no fórum, mas ontem estava muito tarde para pesquisar. Então fica para o próximo capítulo...

Coisas que ainda quero fazer:

- Automatizar a grade de programação;
- Acertar o RTC automaticamente (o relógio da placa adianta...);
- Configurar o joypad de PlayStation para os jogos;
- Instalar mais jogos e emuladores;
- Colocar sites nacionais de notícias no Mythnews;
- Criar um bookmark útil no Mythbrowser;
- Começar a gravar os programas que não consigo assistir;
- Arrumar tempo para assistir os programas que eu gravar... ;-)

Não perca os próximos capítulos!

3 comentários:

Anônimo disse...

Nossa, isso tá começando a ficar realmente interessante... :-)

MundoComplicado disse...

E se vc usasse um recptor IR conectado na porta USB?

Davi Dalben disse...

O problema é garantir que vai funcionar no Linux. E, pelo que eu sei, não poderia ser um receptor IRDA, pois ele não entenderia os sinais do controle remoto.

Acho melhor montar um serial, mesmo.