Guía configuración lirc en el nuevo systemd - Archlinux

Con el reciente cambio que hemos sufrido los usuarios de arch nos encontramos que muchas dbus que teníamos antes no funcionan en systemd, pues aquí una mini guía para hacer funcionar los mandos a distancia en Arch.

1. Primero de todo instalamos los paquetes lirc y lirc-utils.

$ pacman -S lirc

$ pacman -S lirc-utils


2. Una vez instalado nos disponemos a revisar si nuestro mando esta en la lista, miramos en la ruta /usr/share/lirc/remotes o en la web http://lirc.sourceforge.net/remotes/ si no esta en el ultimo paso explico como crearlo.

- Si tenemos nuestra configuración de botones de nuestro mando simplemente creamos una carpeta en /etc/ con el nombre lirc
/etc/lirc
y dentro de esta un archivo llamado "lircd.conf" sin las comillas
/etc/lirc/lircd.conf
.

Y introducimos nuestra configuración.

Aquí un ejemplo:
#
# this config file was automatically generated
# using lirc-0.7.0(any) on Sun Nov 28 20:25:09 2004
#
# contributed by
#
# brand:   Hauppauge 350
# Created: G.J. Werler (The Netherlands)
# Project: Mythtv Fedora Pundit-R www.mythtvportal.com
# Date:    2004/11/28
# model no. of remote control: Hauppauge A415-HPG
# devices being controlled by this remote: PVR-350
#

begin remote

  name  Hauppauge_350
  bits           13
  flags RC5|CONST_LENGTH
  eps            30
  aeps          100

  one           969   811
  zero          969   811
  plead        1097
  gap          114605
  toggle_bit      2


      begin codes
          Go                       0x00000000000017BB
          Power                    0x00000000000017BD
          TV                       0x000000000000179C
          Videos                   0x0000000000001798
          Music                    0x0000000000001799
          Pictures                 0x000000000000179A
          Guide                    0x000000000000179B
          Radio                    0x000000000000178C
          Up                       0x0000000000001794
          Left                     0x0000000000001796
          Right                    0x0000000000001797
          Down                     0x0000000000001795
          OK                       0x00000000000017A5
          Back/Exit                0x000000000000179F
          Menu/i                   0x000000000000178D
          Vol+                     0x0000000000001790
          Vol-                     0x0000000000001791
          Prev.Ch                  0x0000000000001792
          Mute                     0x000000000000178F
          Ch+                      0x00000000000017A0
          Ch-                      0x00000000000017A1
          Record                   0x00000000000017B7
          Stop                     0x00000000000017B6
          Rewind                   0x00000000000017B2
          Play                     0x00000000000017B5
          Forward                  0x00000000000017B4
          Replay/SkipBackward      0x00000000000017A4
          Pause                    0x00000000000017B0
          SkipForward              0x000000000000179E
          1                        0x0000000000001781
          2                        0x0000000000001782
          3                        0x0000000000001783
          4                        0x0000000000001784
          5                        0x0000000000001785
          6                        0x0000000000001786
          7                        0x0000000000001787
          8                        0x0000000000001788
          9                        0x0000000000001789
          Asterix                  0x000000000000178A
          0                        0x0000000000001780
          #                        0x000000000000178E
          Red                      0x000000000000178B
          Green                    0x00000000000017AE
          Yellow                   0x00000000000017B8
          Blue                     0x00000000000017A9
      end codes

end remote

       



3. Ahora logeamos como root en terminal, y hacemos que el kernel reconozca al mando no como un teclado, si no como un mando.

# echo lirc > /sys/class/rc/rc0/protocols


4. Ahora nos toca crear el archivo "/etc/systemd/system/lircd.service"


Introducimos esto:
[Unit]
Description=LIRC Daemon
After=systemd-user-sessions.service

[Service]
Type=forking
EnvironmentFile=/etc/conf.d/lircd.conf
ExecStartPre=/bin/ln -s /run/lirc/lircd /dev/lircd
ExecStart=/usr/sbin/lircd -d $LIRC_DEVICE
ExecStartPost=/usr/bin/ir-keytable --protocol=LIRC
ExecStopPost=/bin/rm -f /dev/lircd

[Install]
WantedBy=multi-user.target


- una vez creado, retocamos este
sudo nano /etc/conf.d/lircd.conf
y lo dejomos como en el ejemplo
Imagen
Nota: En mi caso solo funciona así, pero no es obligatorio lo podéis dejar así:
LIRC_DEVICE="/dev/lirc0"
LIRC_DRIVER="default"
LIRC_EXTRAOPTS=""
LIRC_CONFIGFILE=""


5. Ahora simplemente lo activamos
systemctl enable lircd.service && systemctl start lircd.service


- Reiniciamos el pc.

6. Comprobamos como fue, si hay algún error.
sudo systemctl status lircd.service
Tenia que quedaros así:
Imagen

7. Probamos en la terminal con
irw
apretamos cualquier tecla y debería saliros la pulsaciones.
Imagen

Bueno con esto ya tenemos configurado nuestro mando [oki] ahora probaremos si funciona con el xbmc

8. Modificamos el archivo del xbmc y le pondremos nombre del mando

sudo nano /usr/share/xbmc/system/Lircmap.xml


y cambiamos la linea mceusb por el nombre de nuestro mando que es el del archivo lircd.conf

<remote device="mceusb"> después de renombrado así quedo el mio <remote device="Hauppauge_350">

- Luego ademas en cada acción (play, stop, etc…) ponemos el nombre del botón que sea abriendo una terminal y poniendo irw y apretando la tecla que queramos cambiar.

9. Configuración con otros reproductores vlc, mplayer etc.

Nos descargamos AUR
yaourt -S mythbuntu-lirc-generator


Lo ejecutamos en la terminal
mythbuntu-lircrc-generator
y nos creara una carpeta oculta en la home llamada .lirc, dentro de esta encontraremos 8 archivos de programas como el vlc, mplayer y otros.

- Entramos con editor de texto en el vlc y cambiamos la lineas por el nombre de nuestro mando.

así: remote = Hauppauge_350

Nota: esto nos ahorra tenerlo que hacerlo a mano para saber las ordenes del vlc para un mando simplemente meteríamos esto en una terminal
vlc -H | awk '/--key-/ {print "# "substr($1,3)}'


10. Una vez simplemente nos vamos a la carpeta home del vlc, que en kde esta /home/.config/vlc/vlcrc y introducimos esto
control=lirc
guardamos y cerramos

- Ahora simplemente probamos y veremos que funciona todos los botones y si queréis lo podéis poner a vuestro gusto.

11. Repetir El mismo proceso en otros reproductores si no usáis vlc

12. Para kaffeine u otros programas amarok etc... Podéis usar los usuarios de kde
$ pacman -S kdeutils-kremotecontrol
kremotecontrol y configurarlos a vuetsro gusto.
Se agradece el esfuerzo, pero no sería mejor explicar esto directamente en la wiki de arch?
También, haber quien quiera lo puede explicar ahí que yo de ingles NPI y faltas de ortografía tengo muchas.

Edito: mucha gente tiene una capturadora de tv o un mando para xbmc y quería echar una mano que mas de uno nos quedamos sin el mando a migrar a systemd
Dos cosas:

¿Por qué lo separas del hilo oficial de ArchLinux?

Si pensabas en dejarlo separado, ¿por qué no añades al título que es para AchLinix?

:-?
Lo deje separado para que no se perdiera dentro del hilo de arch, que hago lo copio y lo dejo en hilo de arch?
Nah, déjalo, pero cambia en el título que es para ArchLinux.
[oki] Muy bueno , creo que es lo unico que aun no he configurado en mi htpc al pasarme a systemd. Tengo el mando sin pilas ....
snock escribió:[oki] Muy bueno , creo que es lo unico que aun no he configurado en mi htpc al pasarme a systemd. Tengo el mando sin pilas ....


Pues ya sabes baja al chino por unas [oki]
Se agradece este tipo de tutoriales [oki]
alexricoj escribió:Se agradece este tipo de tutoriales [oki]


De ná, pá eso estamos :)
Muchísimas gracias por los datos, me han guiado a intentar configurar el lirc.

Por desgracia todavía no consigo poder usar el IR de mi Creative Sound Blaster Audigy 4, he mirado bastantes guías y no se que puede estar mal.

Este es mi /etc/conf.d/lircd.conf: http://nopaste.info/63200a42d6.html
Este es mi /etc/lirc/lirc.conf: http://www.nopaste.pl/1hxe

Le he pasado el parámetro enable_ir=1 parameter al driver snd_emu10k1 y además le pasé el siguiente comando al dispositivo que envía los códigos que recibe por IR, pero nada.

echo -en "\xf0\x00\x20\x21\x61\x00\x00\x00\x7f\x00\xf7" > /dev/snd/midiC0D1

Lo peor de todo, es que irecorder casi me consigue mapear el mando a distancia excepto en el paso siguiente:

Checking for toggle bit mask.
Please press an arbitrary button repeatedly as fast as possible.
Make sure you keep pressing the SAME button and that you DON'T HOLD
the button down!.
If you can't see any dots appear, then wait a bit between button presses.

Press RETURN to continue.


Aprieto intro, voy pulsando el mismo botón y nada de nada.

Siento "contaminar" el hilo, pero en el canal #lirc de freenode no me responde nadie y quizás me podría ayudar algun archlinuxero como yo por aquí.

PD: yaourt apesta, incluso packer es mejor. Ya lo he sufrido bastante :)
http://alsa.opensrc.org/Emu10k1

crteo que tienes que pasarle que puertos son los de entrada/salida del receptor IR de la tarjeta

(yo tenia una audigy 2 platinum y tenia que hacer eso)
sL1pKn07 escribió:http://alsa.opensrc.org/Emu10k1

crteo que tienes que pasarle que puertos son los de entrada/salida del receptor IR de la tarjeta

(yo tenia una audigy 2 platinum y tenia que hacer eso)


¿A que te refieres? Yo le dije al lirc el puerto pertinente para el receptor de infrarojos, que es /dev/snd/midiC0D1

Hago un cat al dispositivo cuando le pincho un botón al mando a distancia y todo bien, pero luego el lirc no hace caso y el irecorder falla en el paso que mencioné. Luego desconozco si he metido la pata, porque yo creo haber seguido bien las instrucciones.

Se me olvidó mencionar que usé irrecorder como prueba, porque al parecer han capturado los códigos correctamente :)

¿Te refieres algún paso que he olvidado o a otra cosa necesaria? Te agradecería que me guiaras si quieres y puedes hacerlo.


Por otra parte... ¿hace cuanto que usaste esa tarjeta?
hay un dato mal que es este: LIRC_CONFIGFILE="/etc/lirc/lirc.conf" déjalo como te lo he puesto, y cuando cambies algo acuérdate de parar y reiniciar dbus o systemctl de tu distro
Addiction escribió:hay un dato mal que es este: LIRC_CONFIGFILE="/etc/lirc/lirc.conf" déjalo como te lo he puesto, y cuando cambies algo acuérdate de parar y reiniciar dbus o systemctl de tu distro


El archivo está puesto con el nombre que le puse, yo creía que eso daba igual una vez le pasabas el parámetro.

Por otra parte, no uso el servicio que has puesto sino el que viene por defecto con una mínima modificación. Desconozco si eso importa, pero aquí te lo pego.

/usr/lib/systemd/system/lirc.service


[Unit]
Description=Linux Infrared Remote Control

[Service]
EnvironmentFile=/etc/conf.d/lircd.conf
ExecStartPre=/usr/bin/ln -sf /dev/lirc0 /dev/lirc
ExecStartPre=/usr/bin/ln -sf /run/lirc/lircd /dev/lircd
ExecStart=/usr/sbin/lircd --pidfile=/run/lirc/lircd.pid
Type=forking
PIDFile=/run/lirc/lircd.pid

[Install]
WantedBy=multi-user.target


Y sí, uso systemctl adecuadamente para recargar el servicio y cosas así :)
Aquí el mio para manjaro.

[juanpe@manjaro ~]$ cat /etc/systemd/system/lircd.service
[Unit]
Description=LIRC Daemon
After=network.target

[Service]
Type=forking
EnvironmentFile=/etc/conf.d/lircd.conf
PIDFile=/run/lirc/lircd.pid
ExecStartPre=/bin/mkdir -p /run/lirc
ExecStartPre=/bin/rm -f /dev/lircd
ExecStartPre=/bin/rm -f /run/lirc/lircd
ExecStartPre=/bin/ln -s /run/lirc/lircd /dev/lircd

ExecStart=/usr/sbin/lircd -d $LIRC_DEVICE -P /run/lirc/lircd.pid -H $LIRC_DRIVER $LIRC_CONFIGFILE
ExecStopPost=/bin/rm -f /dev/lircd
ExecStopPost=/bin/rm -fR /run/lirc

[Install]
WantedBy=multi-user.target


[juanpe@manjaro ~]$ cat /etc/conf.d/lircd.conf
#
# Parameters for lirc daemon
#

LIRC_DEVICE="/dev/lirc0"
LIRC_DRIVER="default"
LIRC_EXTRAOPTS=""
LIRC_CONFIGFILE=""
[juanpe@manjaro ~]$


Perdona no lo vi prueba a ver si va
Que tal? He instalado todo, y al parecer esta todo correcto, salvo un detalle; al intentar ejecutar la siguiente linea:
echo lirc > /sys/class/rc/rc0/protocols

me devuelve lo siguiente:

[root@localhost /]# echo lirc > /sys/class/rc/rc0/protocols
bash: /sys/class/rc/rc0/protocols: No such file or directory

Idea de que puede ser?

Gracias!!
la puedes meter creando un archivo con el editor de texto que uses como así.
sudo nano /etc/rc.local


y dentro lo pones echo lirc > /sys/class/rc/rc0/protocols y lo guardas, reinicia. Y sigue el tutorial
17 respuestas