HOWTO: LIRC en macbook, macbook pro, macmini, imac, ...

De Magarto - Wiki

Hace tiempo hice el tutorial HOWTO: Usar el apple remote en GNU/Linux sin configurar LIRC que requiere del módulo appleir que, salvo en el caso de Ubuntu que lo incluyen en Feisty (usa el kernel 2.6.22), a partir del kernel 2.6.21 el equipo de mactel-linux lo ha deshabilitado de las configuraciones del kernel al incluirse el driver macmini dentro de lirc, dando acceso a /dev/hiddev0


APUNTES INICIALES

Nota: Aquí he subido la configuración de mi .config del kernel 2.6.22 donde se ven varias opciones imprescindibles por si compiláis el kernel para CUALQUIER versión de GNU/Linux y para que os vayan los parches de mactel-linux a la perfección, así como iptables (firestarter por ejemplo), usplash, lirc (se necesita activar la configuración de HIDDEV y de EVDEV), así como otros archivos que os servirán. Un ejemplo es el archivo lirc.tar.gz que tiene dentro una versión svn preparada para compilar de lirc, justo después de la versión 0.8.2 que es la que incorpora el citado driver macmini...

Nota: Si no usáis Ubuntu, o otra distro que incorpore sudo, o lo instaláis o cada vez que veáis sudo, escribis el comando su root antes y después del comando que os ponga escribís exit.


TUTORIAL

  • Empecemos con el tutorial entonces (si no tenéis un kernel compilado hay muchos tutoriales por internet, aunque para los maqueros nada mejor que éste que hice yo). Lo primero es comprobar que tenemos el hiddev funcionando y que lee nuestro apple remote o apple frontrow, como os guste llamarle:
sudo cat /dev/hiddev0

Si no muestra nada probad con:

sudo cat /dev/usb/hiddev0

Ahora pulsa un par de teclas del mando a distancia y observar si aparecen símbolos. Si es éste último comando el que funciona, cada vez que veáis en el tutorial /dev/hiddev0 cambiadlo por /dev/usb/hiddev0 De funcionar uno de los dos, podéis seguir con el tutorial, sino es que no tenéis el kernel bien configurado y en ese caso probad con los dos tutoriales enlazados más arriba).

  • Ahora lo siguiente sería bajar la última versión de lirc, usaremos para ello cvs, luego si no tenéis instalado cvs, ya sabéis... Lo hago para Ubuntu, Debian y similares, si no es el caso cambiad apt-get por vuestro sistema de instalación de paquetes.
sudo apt-get install cvs libtool automake autoconfig
cvs -d:pserver:anonymous@lirc.cvs.sourceforge.net:/cvsroot/lirc login

Pulsad enter

cvs -z8 -d:pserver:anonymous@lirc.cvs.sourceforge.net:/cvsroot/lirc co lirc
cd lirc
./autogen.sh
./setup.sh

Elegimos Driver Configuration/USB devices/Apple Mac mini USB IR Receiver Aceptamos y ejecutamos: Save configuration & run configure

  • A continuación compilamos e instalamos:
make
sudo make install
  • Os he adjuntado en un enlace de arriba la configuración de lircrc que deberemos de copiar como /etc/lirc/lircrc

En el archivo /etc/lirc/lircrc podréis ver lo que he puesto con cada botón para cada programa y que he llamado a los botones: play, menu, plus, minus, ffwd y rew para ayudar a este tutorial cuando lo cuelgue en inglés. Tenéis que modificar ese archivo para vuestro mando y configuraciones.

  • Lo siguiente será grabar el archivo de configuración de nuestro mando:
sudo /etc/init.d/lirc stop
sudo killall lircd
sudo irrecord -H macmini -d /dev/hiddev0 /etc/lirc/lircd.conf

Os dirá que déis al enter, luego que dejéis una tecla cualquiera del mando apretada hasta que os avise, luego que vayáis poniendo nombres a cada tecla del mando y dejándolas apretadas y cuando ya estén las 6, tenéis que dar al enter otra vez y pulsar una tecla cualquiera varias veces rápidamente, pero sin dejar apretada. Si no os da error, podemos pasar a lo siguiente.

  • Ahora comprobamos que todo funciona:
sudo lircd -n -H macmini -d /dev/hiddev0 /etc/lirc/lircd.conf

Se quedará esperando, así que en otra terminal ejecutamos:

irw

Si pulsamos cada tecla, aparecerá el código que hemos asignado, de no ser así, algo mal está en la grabación del paso anterior. Cerramos ese comando (Ctrl + c) y ejecutamos:

irexec /etc/lirc/lircrc

Y en otra terminal:

irxevent /etc/lirc/lircrc

Y comprobamos que pulsando botones, ocurren cosas. Abajo del todo del archivo citado, he colgado una configuración que puede daros problemas al arrancar muchos problemas como terminales, firefox... y si queréis que no ocurra, tendréis que desactivar cada vez que se hable del comando irxevent, salvo cuando queráis usar Evince o las presentaciones de OpenOffice o Eye Of Gnome... en cuyo caso, abrid una terminal y ejecutad:

irxevent -d /etc/lirc/lircrc
  • Si todo ha salido perfecto, sólo queda automatizar el proceso.
runlevel

Fijaos en qué número os da y cambiad el rc2.d de después por rcX.d donde X es ese número. En Ubuntu es 2

sudo nano /etc/rc2.d/S50lirc

Y pegad el siguiente texto:

#! /bin/sh
#
# This is an init script for Debian 2.1 Slink distribution.
# Copy it to /etc/init.d/lirc and type
# > update-rc.d lirc defaults 20
#

test -f /usr/local/sbin/lircd || exit 0
test -f /usr/local/sbin/lircmd || exit 0

case "$1" in
  start)
    echo -n "Starting lirc daemon: lircd"
#    setserial /dev/ttyS0 uart none
#    modprobe -v lirc_serial
    start-stop-daemon --start --quiet --exec /usr/local/sbin/lircd -- --driver=macmini --device=/dev/hiddev0 /etc/lirc/lircd.conf
    #echo -n " lircmd"
    #start-stop-daemon --start --quiet --exec /usr/local/sbin/lircmd
    echo "."
    ;;
  stop)
    echo -n "Stopping lirc daemon: "
    #echo -n " lircmd"
    #start-stop-daemon --stop --quiet --exec /usr/local/sbin/lircmd
    echo -n " lircd"
    start-stop-daemon --stop --quiet --exec /usr/local/sbin/lircd
    echo "."
#    rmmod lirc_serial
#    rmmod lirc_dev
    echo "."

    ;;
  reload|force-reload)
    start-stop-daemon --stop --quiet --signal 1 --exec /usr/local/sbin/lircd
    #start-stop-daemon --stop --quiet --signal 1 --exec /usr/local/sbin/lircmd
    ;;
  restart)
    echo -n "Stopping lirc daemon: lircmd"
    start-stop-daemon --stop --quiet --exec /usr/local/sbin/lircmd
    echo " lircd"
    start-stop-daemon --stop --quiet --exec /usr/local/sbin/lircd
    sleep 1
    echo -n "Starting lirc daemon: lircd"
    start-stop-daemon --start --quiet --exec /usr/local/sbin/lircd -- --driver=macmini --device=/dev/hiddev0 /etc/lirc/lircd.conf
    #echo -n " lircmd"
    #start-stop-daemon --start --quiet --exec /usr/local/sbin/lircmd
    echo "."
    ;;
  *)
    echo "Usage: /etc/init.d/lircd {start|stop|reload|restart|force-reload}"
    exit 1
esac

exit 0

Salvad el archivo (Ctrl + o) y salid del editor (Ctrl + x)

  • En el inicio de sesión de vuestro gestor de escritorio tenéis que hacer que se autoejecuten:
irexec -d /etc/lirc/lircrc
irxevent -d /etc/lirc/lircrc

Salvo que no queráis irxevent, por ejemplo (como expliqué anteriormente). En Ubuntu ese autoinicio se consigue en Sistema/Preferencias/Sesiones y añadiendo los comandos anteriores.




APUNTES FINALES

El tutorial es enteramente cosecha propia y muchas y muchas horas de compilar kernels, de hacer preguntas en la mailing list de mactel-linux y de lirc, debido a lo de appleir, hiddev, la corrección del kernel > 2.6.21 y a las nuevas modificaciones de LIRC para apple remote que se incluyen a partir del 0.8.2 y que Ubuntu Feisty dice usar ese driver pero que no lo usa.

Todo esto para decir que este tutorial tiene una licencia y que hay que respetar.

Herramientas personales