Autor Tema: Truco para hacer funcionar el mando RM-FP AVerMedia TV Hybrid+FM A16AR (saa7134)  (Leído 5122 veces)

Desconectado Jaleos

  • Junior Member
  • **
  • Mensajes: 81
Sistema empleado:
DualCore Intel Core2 Duo E6600, 2400 MHz (9x267)
ASUS p5B Deluxe wifi socket LGA 775
512+512 Kingston DDR2-800 (400 MHz)
GeForce 6500 (256 MB) VIVO
AVerMedia TV Hybrid+FM A16AR
Maxtor (250 GB, 7200 RPM,SATA-II)
Ubuntu 8.04- 64 bits Kernel 2.6.24-18-generic

1ª parte, respecto a la tarjeta.

Lo primero decir que en Ubuntu 8.04 ya se le da soporte, con lo que no hay que descargarse ningún tipo de drivers.Y que podéis seguir el tutorial de redbuo en :

http://www.ubuntu-es.org/index.php?q=node/64873


Para comprobar que modelo es exactamente, pues Avermedia la monta de varias maneras , en concreto hay dos modelos la A16AR:

http://www.avermedia.com/docs/productimage/avertvHybridPCI_b.jpg
http://www.avermedia.com/cgi-bin/products_digitvtuner_hybridPCI.asp?show=1

y la A16D:

http://www.avermedia.com/docs/productimage/AVerTV-Hybrid+FM-PCI-b.jpg
http://www.avermedia.com/cgi-bin/products_digitvtuner_hybridPCI(A16D).asp?show=1

En el paso que se recomienda:

Código: [Seleccionar]
dmesg | grep saa7134
Podemos hacer:

Código: [Seleccionar]
dmesg | grep saa713
Ya que la salida que nos dá no es igual, debido a que hay varios módulos implicados y en concreto el que nos va a decir el modelo es el saa7133, en mi caso en la linea :

Código: [Seleccionar]
[   40.132971] saa7133[0]: subsystem: 1461:2c00, board: AVerMedia TV Hybrid A16AR [card=99,insmod option]

Para cargar los módulos en los siguientes arranques, aparte de añadir en /etc/modules

Código: [Seleccionar]
sudo gedit /etc/modules
estas lineas:
Código: [Seleccionar]
saa7134 card=99
    saa7134_alsa
    saa7134-dvb

he creado el fichero /etc/modprobe.d/saa7134

Código: [Seleccionar]
sudo gedit etc/modprobe.d/saa7134
Con estas lineas:
Código: [Seleccionar]
alias char-major-81 videodev
   alias char-major-81-0 saa7134
   options saa7134 i2c_scan=1 alsa=1 card=99
   install saa7134 /sbin/modprobe tuner-core; /sbin/modprobe --ignore-install saa7134;
 /sbin/modprobe    saa7134-dvb; /sbin/modprobe saa7134-alsa


En versiones de Ubuntu de 64 bits el paquete libxine-extracodecs es sustituido por libxine1-ffmpeg.
Y los codecs win32 por win64, para que luego funcionen los programas como Kaffeine y Gxine.

Otros comandos útiles para obtener información adicional de la tarjeta y otro hardware:

Código: [Seleccionar]
sudo lspci -vvv
sudo lsusb -v

2ª parte, respecto al mando rmfp.

Podeis ver cual es:

http://www.avermedia.com/docs/productimage/AVerTV-Hybrid+FM-PCI-Box.jpg
http://lirc.sourceforge.net/remotes/avermedia/RM-FP.jpg

Paquetes necesarios:

lirc
inputlirc
lirc-x
lirc-modules-source (Opcional, si lo que quieres es bajar las fuentes y compilarlo)

Antes de instalar lirc deberemos saber en que fichero de dispositivo corre nuestra tarjeta:

Código: [Seleccionar]
cat /proc/bus/input/devices
buscamos la entrada para nuestra tarjeta, y en la línea H vemos event"n"
Código: [Seleccionar]
I: Bus=0001 Vendor=1461 Product=2c00 Version=0001
N: Name="saa7134 IR (AVerMedia TV Hybrid"
P: Phys=pci-0000:05:01.0/ir0
S: Sysfs=/devices/pci0000:00/0000:00:1e.0/0000:05:01.0/input/input5
U: Uniq=
H: Handlers=kbd event5
B: EV=100003
B: KEY=40fc310 8214000000000000 0 2048000 18000004001 9e000000000000 ffc

En mi caso es /dev/input/event5.
Esto puede cambiar en cada maquina por eso hay que comprobarlo antes, en la instalación de lirc se nos pedirá el dato, aunque siempre se puede cambiar después de la instalación, en /etc/lirc/hardware.conf

El lircd tiene el driver dev/input que lee los eventos de /dev/input/event"n".
Podemos ver de que drivers disponemos con
Código: [Seleccionar]
lircd --driver=help
Ahora podemos instalar lirc:

Código: [Seleccionar]
sudo apt-get install inputlirc lirc lirc-x
En la instalación se nos pedirá que elijamos el hardware, para configurar el archivo hardware.conf
En nuestro caso lirc nos ofrece tres tarjetas pero ninguna de ellas es la nuestra, aquí alguno se va a reir...  :) , elegimos "AverMedia TV card (TVCapture98 TVPhone98) (card 13/41)".

Esto nos crea un archivo NO VALIDO para nuestro caso que luego MODIFICAREMOS:
/usr/share/lirc/remotes/avermedia/lircd.conf.avermedia98

Existen varios ficheros lircd.conf en la red aunque no es seguro que nos sean útiles.
Lirc nos ofrece en sourceforce una configuración de teclas para este mando
http://lirc.sourceforge.net/remotes/avermedia/
Pero al ser para la AVerMedia DVB-T USB2.0 (A800) no nos funcionará tampoco, con lo que tendremos que recurrir a la utilidad irrecord, ésta lo que hace básicamente es crear un fichero en /home/usuario conteniendo los nombres de las teclas que les asignemos y su valor para que pueda ser leído por el sistema. Veamos su uso.

Código: [Seleccionar]
sudo irrecord -H dev/input -d /dev/input/event5 rmfpDonde rmfp es el nombre de fichero generado en /home/usuario
Código: [Seleccionar]
Press RETURN to continue.

Hold down an arbitrary button.
#(Aquí tenemos que presionar en menos de 10 sg., sino el programa se cierra, cualquier botón ininterrumpidamente)
.....................................................................Found gap length: 132668
Now enter the names for the buttons.

Please enter the name for the next button (press  to finish recording)
power        #(Damos intro y seguidamente presionamos el boton power de nuestro mando)

Please enter the name for the next button (press  to finish recording)
source
Please enter the name for the next button (press  to finish recording)

Así con las 34 teclas del mando.
Al llegar a la ultima presionamos intro sin escribir ningún nombre para la tecla.
A continuación nos pedirá que pulsemos repetidas veces otra tecla cualquiera para finalizar la grabación. Cuidado con no tardar más de 10 sg. y no elegir dar a la tecla "power",  por que nuestro mando no está aun configurado y es posible que nos lance la pantalla de salida de Ubuntu, con lo que perderíamos el trabajo hecho en irrecord.

Código: [Seleccionar]
..............................
Invalid toggle bit.
Successfully written config file.

Para más información en http://linux.die.net/man/1/irrecord

Lirc en realidad utiliza un redireccionamiento desde /etc/lirc/lircd.conf, que es donde realmente busca su configuración, con "include /usr/share/lirc/remotes/avermedia/lircd.conf.avermedia98", directorio donde se almacenan las configuraciones predeterminadas de varios marcas y mandos.

Ahora hay que modificar el contenido de /usr/share/lirc/remotes/avermedia/lircd.conf.avermedia98 ,sin cambiar el nombre del archivo, por el que irrecord creó en /home/usuario.

Código: [Seleccionar]
sudo gedit /usr/share/lirc/remotes/avermedia/lircd.conf.avermedia98
En mi caso devolvió este contenido:

Código: [Seleccionar]
# Please make this file available to others
# by sending it to
#
# this config file was automatically generated
# using lirc-0.8.3pre1(devinput) on Sat Jun  7 11:13:17 2008
#
# contributed by
#
# brand:                       AVerMedia
# model no. of remote control: RM-FP
# devices being controlled by this remote:
#  AVerMedia TV Hybrid A16AR

begin remote

  name  rmfp
  bits           16
  eps            30
  aeps          100

  one             0     0
  zero            0     0
  pre_data_bits   16
  pre_data       0x8001
  gap          135996
  toggle_bit_mask 0x80010003

      begin codes
          power                    0x0074
          source                   0x0179
          1                        0x0002
          2                        0x0003
          3                        0x0004
          4                        0x0005
          5                        0x0006
          6                        0x0007
          7                        0x0008
          8                        0x0009
          9                        0x000A
          0                        0x000B
          display                  0x0172
          snapshot                 0x019A
          chrtn                    0x00A8
          chprev                   0x00D2
          chup                     0x0192
          chdown                   0x0193
          voldown                  0x0072
          volup                    0x0073
          fullscreen               0x0174
          mute                     0x0071
          audio                    0x0188
          record                   0x00A7
          play                     0x00CF
          stop                     0x0080
          pause                    0x0077
          rewind                   0x018E
          forward                  0x0190
          teletext                 0x0184
          last                     0x018F
          next                     0x0191
          epg                      0x0189
          menu                     0x00D9
      end codes

end remote

Despues comprobamos que en /etc/lirc/hardware.conf concuerde la linea

Código: [Seleccionar]
REMOTE_DEVICE="/dev/input/event5"
con la salida de cat /proc/bus/input/devices
y que en la linea

Código: [Seleccionar]
REMOTE_LIRCD_CONF="avermedia/lircd.conf.avermedia98"sea correcta la ruta.

Observareis que en el archivo se hace refencia a "AverMedia TV card (TVCapture98 TVPhone98) (card 13/41)", no importa, cumple su cometido, es más, no se debe de cambiar porque es la base del truco.
Esto es por no haber configurado lirc desde cero, hemos aprovechado la configuración de lirc para esa tarjeta y modificado su lircd.conf. Seguro que se puede hacer desde cero, pero mis intentos han sido infructuosos, si alguien que lo consiguió se anima a explicarlo......

Ahora arrancar el demonio lircd:

Código: [Seleccionar]
sudo /etc/init.d/lirc start
Para pararlo, si es necesario:

Código: [Seleccionar]
sudo /etc/init.d/lirc stop
Para comprobar que funciona bien utilizamos irw, pulsando las teclas del mando una vez lanzado

Código: [Seleccionar]
sudo irw

0000000080010179 00 source rmfp
0000000080010074 00 power rmfp
0000000080010005 00 4 rmfp
0000000080010189 00 epg rmfp
00000000800100d9 00 menu rmfp
Para pararlo Ctr+c


Ya tenemos preparado el sistema para hacer uso del mando a distancia.
Solo nos queda por definir que aplicaciones usarán el mando.
Llegados aquí podemos elegir dos métodos, trabajar con los demonios irexec e irxevent o con inputlirc.

1º Trabajo con irexec e irxevent

Es necesario la creación de un fichero de configuración en /home/usuario

Código: [Seleccionar]
gedit /home/usuario/.lircrc
en el que vamos a especificar las acciones que realizan los botones en los diferentes programas, se pueden realizar con el mando muy diversas acciones pero nos centraremos en el programa Kaffeine para ver la TDT, Mythtv aún no lo he probado.

Como ejemplo de un diferente uso podríamos lanzar otra aplicación con el siguiente código:

Código: [Seleccionar]
begin
     button = Power
     prog   = irexec
     repeat = 0
     config = /bin/dmesg
end

Obteniendo la salida de dmesg.

Contenido de .lircrc para Kaffeine:

Código: [Seleccionar]
#Kaffeine
begin
        prog = irexec
        button = power
        config = dcop kaffeine KaffeineIface quit
end

begin
        prog = irexec
        button = source
        config = kaffeine
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 = forward
        config = dcop kaffeine KaffeineIface posPlus
end

begin
        prog = irexec
        button = rewind
        config = dcop kaffeine KaffeineIface posMinus
end

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

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

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

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



begin
        prog = irexec
        button = volup
        config = dcop kaffeine KaffeineIface volUp
end

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

begin
        prog = irexec
        button = voldown
        config = dcop kaffeine KaffeineIface volDown
end

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

begin
        prog = irexec
        button = display
        config = dcop kaffeine KaffeineIface zoomIn
end

begin
        prog = irexec
        button = snapshot
        config = dcop kaffeine KaffeineIface zoomOut
end

begin
prog = irexec
button = 1
config = dcop kaffeine KaffeineIface setNumber 1
repeat = 0
end

begin
prog = irexec
button = 2
config = dcop kaffeine KaffeineIface setNumber 2
repeat = 0
end

begin
prog = irexec
button = 3
config = dcop kaffeine KaffeineIface setNumber 3
repeat = 0
end

begin
prog = irexec
button = 4
config = dcop kaffeine KaffeineIface setNumber 4
repeat = 0
end

begin
prog = irexec
button = 5
config = dcop kaffeine KaffeineIface setNumber 5
repeat = 0
end

begin
prog = irexec
button = 6
config = dcop kaffeine KaffeineIface setNumber 6
repeat = 0
end

begin
prog = irexec
button = 7
config = dcop kaffeine KaffeineIface setNumber 7
repeat = 0
end

begin
prog = irexec
button = 8
config = dcop kaffeine KaffeineIface setNumber 8
repeat = 0
end

begin
prog = irexec
button = 9
config = dcop kaffeine KaffeineIface setNumber 9
repeat = 0
end

begin
prog = irexec
button = 0
config = dcop kaffeine KaffeineIface setNumber 0
repeat = 0
end

De esto solo decir que el valor del parámetro "repeat" se puede variar para que se repita la acción mientras se pulsa el boton, util para el volumen.

Para saber qué llamadas DCOP admite Kaffeine no hay más que abrirlo y luego ejecutar "kdcop" en una terminal. En la lista desplegable buscar kaffeine > kaffeineIface, hay unas cuarenta.

Para que los demonios se carguen en el arranque creamos dos entradas en Sistema> Preferencias> Sesiones> Añadir le damos un nombre y en el campo orden ponemos

Código: [Seleccionar]
irexec -d
e

Código: [Seleccionar]
irxevent -d
Reiniciamos y al dar al boton power del mando se debería lanzar Kaffeine y poder usarlo.

2º Trabajo con inputlirc

El mismo archivo .lircrc, tendremos que copiarlo en /etc/lirc/lircrc
Para cargar el demonio en el arranque editamos el fichero /etc/rc.local

Código: [Seleccionar]
sudo gedit /etc/rc.local
y añadimos esta linea:

Código: [Seleccionar]
/etc/init.d/inputlirc start
Se cargará en el próximo reinicio. Si queremos ejecutarlo, ahora mismo, solo tendremos que ponerlo en una consola con sudo.

En el caso de que lircinput no funcionase con el contenido de este .lircrc se puede probar con este otro tipo:

Código: [Seleccionar]
begin kaffeine
 begin
  prog = irexec
  button =
  config = dcop kaffeine MainApplication-Interface
 end

 begin
  prog = irexec
  button = KEY_PLAYPAUSE
  config = if `dcop kaffeine KaffeineIface isPlaying`; then dcop kaffeine KaffeineIface pause;
 dcop kaffeine kaffeine_mainview hide; else dcop kaffeine KaffeineIface play; dcop kaffeine kaffeine_mainview hide; fi
 end

 begin
  prog = irexec
  button = KEY_MENU
  repeat = 1
  config = dcop kaffeine KaffeineIface stop
 end

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

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

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

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

end kaffeine

Se pueden tener los tres demonios activos para diferentes usos.

Notas:
Aveces, en algún reinicio, el sistema cambia en que fichero de dispositivo corre la tarjeta co lo que se desconfigura la conexión entre el mando y lirc, no he encontrado ninguna solución salvo ejecutar de nuevo cat /proc/bus/input/devices y cambiarlo en el /etc/lirc/hardware.conf y reiniciar los demonios.

Algunas teclas del mando no son reconocidas por Kaffeine, quizá sea cuestión de afinar un poco las llamadas a dcop.

Y yastá.
Ni que decir tiene que, aparte de un truco, esto puede ser una discursión  :mrgreen:
Saludos.
DualCore Intel Core2 Duo E6600, 2400 MHz (9x267)
ASUS p5B Deluxe wifi socket LGA 775
512+512 Kingston DDR2-800 (400 MHz)
GeForce 6500 (256 MB) VIVO
Maxtor (250 GB, 7200 RPM,SATA-II)
AVerMedia TV Hybrid+FM A16AR
WXP-Sp2-ubuntu 8.04

Desconectado Jaleos

  • Junior Member
  • **
  • Mensajes: 81
Re: Fijar eventX en /etc/lirc/hardware.conf
« Respuesta #1 en: 29 de Junio de 2008, 06:33:09 pm »
Hola de nuevo amigos.
Gracias a Davilinux, un usuario de Ubuntu, al que le fue útil el truco, tenemos aquí la solución a la manía que tiene el sistema de asignar un event diferente en cada reinicio.
Veamos....

En principio se trata de agregar una nueva regla a "udev" .
Observamos en el nombre del archivo el numero 10. Los archivos contenidos en rules.d están organizados jerárquicamente por el numero por el que empiezan y ese será el orden en que se ejecuten. Para egregar nuevas reglas debemos hacerlo de cinco en cinco a ser posible.

Podemos encontrar más información en

http://www.escomposlinux.org/lfs-es/lfs-es-6.2/chapter07/symlinks.html


Creamos el fichero 10-local.rules
Código: [Seleccionar]
sudo gedit /etc/udev/rules.d/10-local.rules
con el siguiente contenido

Código: [Seleccionar]
KERNEL=="event*",SYSFS{vendor}=="0x1131",SYMLINK="input/irremote"

Seguidamente, despues de guardar el fichero, hay que modificar el archivo /etc/lirc/hardware.conf para que en vez de

Código: [Seleccionar]
REMOTE_DEVICE="/dev/input/event5"
aparezca lo siguiente (en Ubuntu 8.04):

Código: [Seleccionar]
REMOTE_DEVICE="/dev/input/irremote"
o en Ubuntu 7.04:

Código: [Seleccionar]
DEVICE="/dev/input/irremote"
Reiniciar el servicio de LIRC
Código: [Seleccionar]
sudo /etc/init.d/lirc stop
Código: [Seleccionar]
sudo /etc/init.d/lirc starty reiniciar nuestra sesión.
O el sistema, para que los cambios surtan efecto.

Este tipo de reglas son útiles también para cámaras web y otros dispositivos.

Saludos
DualCore Intel Core2 Duo E6600, 2400 MHz (9x267)
ASUS p5B Deluxe wifi socket LGA 775
512+512 Kingston DDR2-800 (400 MHz)
GeForce 6500 (256 MB) VIVO
Maxtor (250 GB, 7200 RPM,SATA-II)
AVerMedia TV Hybrid+FM A16AR
WXP-Sp2-ubuntu 8.04

 

Aviso Legal | Política de Privacidad | Política de Cookies

el contenido de la web se rige bajo licencia
Creative Commons License