domingo, mayo 27, 2007

Configuración del mando a distancia en GNU/Linux


Misteriosamente se ha activado la aceleración 3D de mi tarjeta, tantos meses configurandola y parece que algun update lo ha activado, con lo que ello implica he conseguido configurar mi tarjeta de TV. TVTime me daba errores antes ya que no era capaz de superponer imágenes sin una aceleración. Pues buscando me he encontrado como configurar el mando a distancia, además de programarlo para amarok y kaffeine. Ahí va:

Antes que nada he de decir que llevo dos días peleado con el mando a distancia, esta guía es MUY estúpida, pero que MUY ESTÚPIDA, aunque seguro que si alguien la pilla a tiempo le vendrá muy bien. Después de estar trasteando con el kernelcito de las narices dos días y no conseguir nadita, pensar que tenía los puertos estropeados, que el mando a distancia no tenía pilas, que el receptor se había roto... resulta que va y funciona.

Esta tarjeta viene acompañada de un receptor de infrarrojos que se conecta al puerto serie de nuestro ordenador y sirve para recibir las señales que emite el mando a distancia.

Para hacerlo funcionar NO hace falta cargar drivers de lirc en el núcleo, NO hace falta hacer el famoso "/bin/setserial /dev/ttySX uart none"

Solo hay que ejecutar lircd con los siguientes parámetros:

lircd -H pinsys -d /dev/ttySX

Donde la X se sustituye por 0 si está conectado al com1 o por 1 si está conectado al com2 y listo. Se ha terminado.

Para que funcione correctamente en Debian hay que hacer lo siguiente:

1. apt-get install lirc
2. Editamos /etc/lirc/hardware.conf y cambiamos DRIVERS="" por DRIVERS="pinsys" y DEVICE="" por DEVICE="/dev/ttySX". Una vez más deberemos sustituir la X por 0 o por 1 según nuestro caso.
3. cp /usr/share/lirc/remotes/pinnacle_systems/lircd.conf.pctv /etc/lirc/lircd.conf (Esto es para que el lirc entienda las señales de este mando a distancia en /usr/share/lirc/remotes/ hay muchos modelos de control remoto distintos)
4. /etc/init.d/lirc restart

Esto puede cambiar con el paso de los años y esas cosas, el paquete que se encuentra en Debian Unstable es:

apt-cache policy lirc
lirc:
Instalados: 0.7.1pre2-11
Candidato: 0.7.1pre2-11
Tabla de versión:
*** 0.7.1pre2-11 0
500 http://ftp.fi.debian.org unstable/main Packages
100 /var/lib/dpkg/status

Después de hacer esto, para comprobar que todo ha funcionado correctamente podemos ejecutar irw y pulsar un par de botones. El resultado en mi caso es algo como esto: (cuando te canses de ver lo bien que va todo pulsa ctrl+c)

irw
0000000000000031 00 1 PinnacleSysPCTVRemote
0000000000000032 00 2 PinnacleSysPCTVRemote
0000000000000035 00 5 PinnacleSysPCTVRemote
0000000000000016 00 undo PinnacleSysPCTVRemote
0000000000000027 00 Record PinnacleSysPCTVRemote
0000000000000015 00 pause PinnacleSysPCTVRemote
0000000000000013 00 redo PinnacleSysPCTVRemote
000000000000000e 00 Rewind PinnacleSysPCTVRemote
000000000000000d 00 Play PinnacleSysPCTVRemote
000000000000000b 00 Stop PinnacleSysPCTVRemote
0000000000000007 00 FForward PinnacleSysPCTVRemote
0000000000000026 00 F_TV PinnacleSysPCTVRemote
000000000000002f 00 Power PinnacleSysPCTVRemote

Ala, pues ya está. Ahora solo queda escribir nuestro fichero de configuración para que el mando haga lo que nos de la gana.

Los usuarios de KDE pueden utilizar el módulo de control de KDE para lirc. Está muy bien, hay módulos especiales para kaffeine y algunas aplicaciones más que hace muy fácil la configuración, pero sin embargo sólo permite controlar aplicaciones de KDE y esto muchas veces no es suficiente. (esto puede ser que cambie)

Aquí pongo un ejemplo de fichero de configuración para irexec. Este fichero controla tvtime usando el mando de la pinnacle, amarok y kaffeine. Para controlar tvtime hay que pulsar el botón del mando marcado como "TV", para controlar amarok hay que pulsar el botón de "Radio" y para kaffeine "EPG". Está basado en este otro fichero de ejemplo.

begin
prog = irexec
button = F_TV
mode = tvtime
config = echo "Modo tvtime"
end

begin
prog = irexec
button = F_RADIO
mode = amarok
config = echo "Modo amarok"
end

begin
prog = irexec
button = EPG
mode = kaffeine
config = echo "Modo kaffeine"
end

# Configuración del mando a distancia para kaffeine
begin kaffeine

begin
prog = irexec
button =
config = dcop kaffeine MainApplication-Interface
end

begin
prog = irexec
button = Power
config = kaffeine &
config = dcop kaffeine MainApplication-Interface quit
end

begin
prog = irexec
button = Play
config = dcop kaffeine KaffeineIface play
end

begin
prog = irexec
button = Pause
config = dcop kaffeine KaffeineIface pause
end

begin
prog = irexec
button = Stop
config = dcop kaffeine KaffeineIface stop
end

begin
prog = irexec
button = Chan+Play
repeat = 1
config = dcop kaffeine KaffeineIface posPlus
end

begin
prog = irexec
button = FForward
repeat = 1
config = dcop kaffeine KaffeineIface posPlus
end

begin
prog = irexec
button = Rewind
repeat = 1
config = dcop kaffeine KaffeineIface posMinus
end

begin
prog = irexec
button = Chan-Stop
repeat = 1
config = dcop kaffeine KaffeineIface posMinus
end

begin
prog = irexec
button = redo
config = dcop kaffeine KaffeineIface next
end

begin
prog = irexec
button = undo
config = dcop kaffeine KaffeineIface previous
end

begin
prog = irexec
button = Mute
config = dcop kaffeine KaffeineIface mute
end

begin
prog = irexec
button = vol+
repeat = 1
config = dcop kaffeine KaffeineIface volUp
end

begin
prog = irexec
button = Vol+FF
repeat = 1
config = dcop kaffeine KaffeineIface volUp
end

begin
prog = irexec
button = vol-
repeat = 1
config = dcop kaffeine KaffeineIface volDown
end

begin
prog = irexec
button = Vol-Rew
repeat = 1
config = dcop kaffeine KaffeineIface volDown
end

begin
prog = irexec
button = Fullscreen
config = dcop kaffeine KaffeineIface fullscreen
end
end kaffeine

# Configuración del mando a distancia para amarok
begin amarok
begin
prog = irexec
button = Power
config = amarok &
config = dcop amarok MainApplication-Interface quit
end
begin
prog = irexec
button = Play
config = dcop amarok player play
end

begin
prog = irexec
button = Pause
config = dcop amarok player pause
end

begin
prog = irexec
button = Stop
config = dcop amarok player stop
end

begin
prog = irexec
button = FForward
config = dcop amarok player next
end

begin
prog = irexec
button = Chan+Play
config = dcop amarok player next
end

begin
prog = irexec
button = Rewind
config = dcop amarok player prev
end

begin
prog = irexec
button = Chan-Stop
config = dcop amarok player prev
end

begin
prog = irexec
button = Vol+FF
repeat = 1
config = dcop amarok player volumeUp
end

begin
prog = irexec
button = vol+
repeat = 1
config = dcop amarok player volumeUp
end

begin
prog = irexec
button = Vol-Rew
repeat = 1
config = dcop amarok player volumeDown
end

begin
prog = irexec
button = vol-
repeat = 1
config = dcop amarok player volumeDown
end

begin
prog = irexec
button = Mute
config = dcop amarok player mute
end

end amarok


# This is an example config file for your LIRC remote. All buttons
# depend on what you have configured in your lircd.conf file. Please
# refer to this and adjust the labels below accordingly.
#
# tvtime is controlled through a separate program called tvtime-command.
# For a list of commands, see 'man tvtime-command'. Key events can
# be 'faked' using the command KEY_EVENT, which allows for mapping a
# single remote control button to both a menu mode command and a normal
# mode command.
#
# begin
# prog = irexec
# button = Info
# config = tvtime-command DISPLAY_INFO
# end


# This section includes two configs, what this does is that it allows
# you to open tvtime and close tvtime with one button. If your remote
# has seperate buttons for this, then you can break it apart.


begin tvtime
begin
prog = irexec
button = Power
config = tvtime &
config = tvtime-command QUIT
end


# The following defines most of the common buttons found on a remote and
# what commads they would map to inside tvtime.
#begin
# prog = irexec
# button = source
# config = tvtime-command TOGGLE_INPUT
#end
begin
prog = irexec
button = Info
config = tvtime-command DISPLAY_INFO
repeat = 1
end
begin
prog = irexec
button = Fullscreen
config = tvtime-command TOGGLE_FULLSCREEN
end
#begin
# prog = irexec
# button = CC
# config = tvtime-command TOGGLE_CC
#end

begin
prog = irexec
button = Mute
config = tvtime-command TOGGLE_MUTE
end

# Menu navigation.
begin
prog = irexec
button = Chan+Play
repeat = 1
config = tvtime-command UP
repeat = 1
end
begin
prog = irexec
button = Chan-Stop
repeat = 1
config = tvtime-command DOWN
repeat = 1
end
begin
prog = irexec
button = vol+
repeat = 1
config = tvtime-command RIGHT
repeat = 2
end
begin
prog = irexec
button = vol-
repeat = 1
config = tvtime-command LEFT
repeat = 2
end

begin
prog = irexec
button = middle
config = tvtime-command CHANNEL_JUMP
repeat = 1
end

begin
prog = irexec
button = 1
config = tvtime-command CHANNEL_1
end
begin
prog = irexec
button = 2
config = tvtime-command CHANNEL_2
end
begin
prog = irexec
button = 3
config = tvtime-command CHANNEL_3
end
begin
prog = irexec
button = 4
config = tvtime-command CHANNEL_4
end
begin
prog = irexec
button = 5
config = tvtime-command CHANNEL_5
end
begin
prog = irexec
button = 6
config = tvtime-command CHANNEL_6
end
begin
prog = irexec
button = 7
config = tvtime-command CHANNEL_7
end
begin
prog = irexec
button = 8
config = tvtime-command CHANNEL_8
end
begin
prog = irexec
button = 9
config = tvtime-command CHANNEL_9
end
begin
prog = irexec
button = 0
config = tvtime-command CHANNEL_0
end
#begin
# prog = irexec
# button = ENTER
# config = tvtime-command ENTER
#end

end tvtime
Fuente:http://drupal.gulic.org/