Monday, July 28, 2008

Brincando com o LIRC no OpenSuse 11

(por Vítor Costa)


Controle Remoto

Antes de tudo gostaria de contar uma pequena história para poder explicar o porquê de ter que usar o LIRC ;)

   Eu (espero que não tenha nenhum xiita Linux lendo isso), que sou estudante de ciência da computação, participei do S2B - (Students to Business) aqui em Recife/Olinda que é um programa da Microsoft que visa dar treinamento aos jovens estudantes para poderem conhecer as tecnologias da Microsoft. Eu fiz na área de desenvolvimento. Tudo ok... fui um dos felizardos que chegaram até a etapa final.

   Nós aqui de Recife/Olinda, depois de tudo ter acabado, recebemos um convite - via e-mail - para conhecer a sede da Microsoft que fica no Porto Digital. Tudo muito bonito (fui com a camisa do Linux LPI, que ganhei no Segundo Encontro de Software Livre, por baixo de outra camisa de botão :P). Vimos algumas palestras... pronto! no final foram entregues alguns brindes e eu, que já estava triste porque todos os bonés e mousepads já tinham sido entregues, quase que sem esperanças fui sorteado de surpresa no final e ganhei um Controle Remoto Multimidia! rs

O 'pacote' veio com:

  • Receptor Infravermelho USB
  • Uma pequena extensão (infravermelho) que conecta no receptor principal
  • Controle Remoto

   Já ia esquecendo... Logo que ganhei me informaram que só funcionaria no Windows Vista; O XP não iria reconhecer e não tinha drivers para utilizá-lo. Realmente o XP até viu que precisava do driver "BB+ Dongle(e.d)", mas não encontrou uma versão para XP e não instalou.

   Foi nesse momento que me veio a idéia de tentar fazer com que o controle funcionasse no Linux, já que no Windows ele não iria servir para nada e, convenhamos que sair por aí procurando drivers (não oficiais) no submundo do windows... prefiro não comentar! hehehe

   Logo de início tinha um pequeno problema: QUE CONTROLE É ESSE?
Eu pensei que era um controle feito pela Microsoft, mas não era. Depois de algumas horinhas no google eu descobri (nem sei como) que o controle é da Philips é um modelo parecido com o SRM5100/10 mas o meu não tem os botões coloridos que esse tem e também não tem o botão MODE que troca entre TV, DVD, AUX... Bom, pelo menos já descobri o fabricante.

Agora vamos colocar tudo para funcionar...

Com o comando:
# hwinfo --usb

Eu obtive a seguinte resposta:

03: USB 00.0: 0000 Unclassified device
[Created at usb.122]
UDI: /org/freedesktop/Hal/devices/usb_device_471_60c_CIOC_if0
Unique ID: mZxt.3mwsgWi9H32
Parent ID: uIhY.gkSaZmjGyhD
SysFS ID: /devices/pci0000:00/0000:00:1d.1/usb3/3-2/3-2:1.0
SysFS BusID: 3-2:1.0
Hardware Class: unknown
Model: "Philips BB+ Dongle(e.d)"
Hotplug: USB
endor: usb 0x0471 "Philips"
Device: usb 0x060c "BB+ Dongle(e.d)"
Revision: "1.01"
Serial ID: "CIOC"
Driver: "lirc_mceusb2"
Driver Modules: "lirc_mceusb2"
Speed: 12 Mbps
Module Alias: "usb:v0471p060Cd0101dc00dsc00dp00icFFiscFFipFF"
Driver Info #0:
  Driver Status: lirc_mceusb2 is active
  Driver Activation Cmd: "modprobe lirc_mceusb2"
Config Status: cfg=new, avail=yes, need=no, active=unknown
Attached to: #6 (Hub)



**No caso peguei essas informações depois de já ter configurado tudo e a lista é um pouco maior ;).

Mas o importante dessa "lista" é a parte onde informa que o módulo (driver) necessário para funcionar é o lirc_mceusb2

Lembrando que antes de tudo é necessário ter: LIRC e o Lirc Kernel Modules instalado.

Para instalá-los entre no Yast:
(No grupo) Software => Gerenciamento de Software (Software Management)

Procure pelo lirc e instale os pacotes pendentes (no meu caso precisei instalar o Lirc Kernel Modules)

Vamos para o LIRC.
LIRC é o acrônimo de Linux Infrared Remote Control. (http://www.lirc.org)
Ele é o serviço que vai captar as informações do controle e fazer algo funcional no Linux ;)

Antes vamos ativar os modulos
precisaremos do lirc_dev e o lirc_mceusb2
# modprobe lirc_dev
# modprobe lirc_mceusb2

PS.: O lirc_mceusb2 precisa do usbcore (acredito que já esteja carregado, mas caso contrário carregue-o)

Verificando se tudo está OK!

# lsmod | grep lirc

lirc_mceusb2 30724 1
lirc_dev 30632 1 lirc_mceusb2
usbcore 164812 4 lirc_mceusb2,ehci_hcd,uhci_hcd

Pronto! Agora já temos nossos módulos carregados.

Vamos configurar o LIRC

Entre no Yast:
(No grupo) Sistema (System) => Editor do /etc/sysconfig (/etc/sysconfig Editor)

Com o editor aberto clique em: Hardware -> Lirc

Nele modifique as seguintes variaveis:
   LIRC_DEVICE:/dev/lirc0
   LIRC_MODULE: lirc_mceusb2

PS.:Você poderá ir direto no arquivo e fazer as mudanças. O arquivo fica em /etc/sysconfig/lirc

Entre no terminal (konsole) e digite:
# rclirc status

provavelmente ele estará desativado (unused) então ative-o ;)
# rclirc start

Se tudo foi feito corretamente ele estará ativo.

Testando o Controle
# mode2

Pressione algumas teclas do controle para testar (para sair basta usar o Ctrl+C)

Agora é necessário configurar o LIRC para que ele entenda quais teclas estão sendo pressionadas no controle.
Para isso utilizaremos o irrecord que irá gerar o arquivo de configuração do controle remoto.
# irrecord meuControle


Basta seguir o que é pedido na tela:
1. Na primeira etapa você irá pressionar as teclas (uma por vez) para testar a recepção.
2. Na Segunda etapa você irá colocar nome para as teclas e depois irá pressionar a tecla que você nomeou.

Gerado o arquivo, agora basta colocá-lo na pasta /etc/ e renomeá-lo para lircd.conf
# mv meuControle /etc/lircd.conf

Pronto seu controle já estará configurado.

Mas nada funciona ainda!!!
É necessário criar um arquivo chamado .lircrc no diretório do usuário.

Aqui vai um exemplo de arquivo .lircrc:

#! lircrcd
#
#Inicio do Arquivo (Vitor Costa A.)
#Criado em: 27/07/2008
#
#remote = Nome do controle
#button = Nome do botão
#prog = irexec (cliente que se conecta ao lircd para receber os
# comandos do controle e iniciar um aplicativo)
#config = Nome do programa/ linha de comando.

##
## Amarok lirc setup
##

begin
prog = irexec
#remote = Philips_SRM5100
button = PLAY
repeat = 1
config = dcop amarok player play
end

begin
prog = irexec
#remote = Philips_SRM5100
button = Stop
repeat = 1
config = dcop amarok player stop
end

begin
prog = irexec
#remote = Philips_SRM5100
button = Pause
repeat = 1
config = dcop amarok player playPause
end

begin
prog = irexec
#remote = Philips_SRM5100
button = DownVolume
repeat = 3
config = dcop amarok player volumeDown
end

begin
prog = irexec
#remote = Philips_SRM5100
button = UpVolume
repeat = 3
config = dcop amarok player volumeUp
end

begin
prog = irexec
#remote = Philips_SRM5100
button = FF
repeat = 2
config = dcop amarok player seekRelative 5
end

begin
prog = irexec
#remote = Philips_SRM5100
button = RW
repeat = 2
config = dcop amarok player seekRelative -5
end

begin
prog = irexec
#remote = Philips_SRM5100
button = Clear
repeat = 1
config = dcop amarok playlist clearPlaylist
end

begin
prog = irexec
#remote = Philips_SRM5100
button = Mute
repeat = 1
config = dcop amarok player mute
end

begin
prog = irexec
#remote = Philips_SRM5100
button = Next
repeat = 1
delay = 1
config = dcop amarok player next
end

begin
prog = irexec
#remote = Philips_SRM5100
button = Prev
repeat = 1
delay = 1
config = dcop amarok player prev
end

begin
prog = irexec
#remote = Philips_SRM5100
button = SquareTV
repeat = 1
config = dcop amarok player showOSD
end

begin
prog = irexec
#remote = Philips_SRM5100
button = GridTV
repeat = 1
config = dcop amarok playlist togglePlaylist
end

##
## end of Amarok ;)
##


Como pode ser visto no exemplo ele utiliza o irexec como programa que irá chamar outro comando.

O irexec deve ser utilizado como privilégio do usuário normal... basta digitar no terminal (konsole)
$ irexec -d

Para que não seja necessário chamar esse arquivo todas as vezes que você logar, crie um atalho na pasta .kde/Autostart
$ cd .kde/Autostart
$ ln -s /usr/bin/irexec

Ah claro... você poderia usar o irkick para fazer a configuração também ;)
$ irkick


Considerações Finais
Agradeço à Microsoft por ter me dado este brinde! :D Agora meu Linux está praticamente como um Media Center! (rsrs)
Aos sites utilizados para chegar no resultado final, foram muitos... o google ajudou bastante e claro o vivaolinux ;D
Espero que este 'tutorial' ajude mais alguém que esteja se aventurando em usar o LIRC. Depois de quebrar a cabeça vários dias eu consegui e vi que não é nenhum bicho de outro mundo ;).


Controle Remoto

No comments: