Lirc

LIRC (Linux Infrared Remote Control) es un software informático para el sistema operativo GNU/Linux que permite recibir y enviar las señales de infrarrojos usadas en la mayoría de los controles remotos.

Dependiendo del hardware que tengamos (emisor y receptor), el software nos permite copiar/capturar un tren de impulsos infrarrojos (de cualquier mando a distancia) para posteriormente enviarlo de forma controlada… vía scripting… etc.

Lo primero es realizar la instalación para ello seguiremos los pasos descritos a continuación. Con este comando preparamos las posibles dependencias:

$ sudo apt-get install linux-headers-3.10.107-192

Con este otro comando instalamos el software y dejamos la configuración en blanco:

$ sudo apt-get install lirc
$ None
$ None

Editamos el fichero /etc/modprobe.d/blacklist.conf con el comando siguiente:

$ nano /etc/modprobe.d/blacklist.conf

En la última línea se debe de añadir blacklist w1_gpio

Editamos el fichero /etc/modprobe.d/lirc.conf con el comando siguiente:

$ nano /etc/modprobe.d/lirc.conf

En la última línea se debe de añadir options lirc_odroid gpio_out_pin=83 softcarrier=1 invert=1

Esta es la parte física de conectar el diodo infrarrojo en los GPIO 2 y 7.
Conectar el diodo led a los puertos GPIO2.-.Cable Rojo (VCC) y GPIO7.-.Cable Negro (GND)

Con este comando configuramos el software según el hardware que tenemos, para ello se debe editar el fichero /etc/lirc/hardware.conf.

$ nano /etc/lirc/hardware.conf

El contenido de dicho fichero debería de quedar así:

[INICIO FICHERO /ETC/LIRC/HARDWARE.CONF]
# /etc/lirc/hardware.conf
#
#Chosen Remote Control
REMOTE="None"
REMOTE_MODULES="meson-ir"
REMOTE_DRIVER="default"
REMOTE_DEVICE="/dev/lirc0"
REMOTE_SOCKET=""
REMOTE_LIRCD_CONF=""
REMOTE_LIRCD_ARGS="–uinput"

#Chosen IR Transmitter
TRANSMITTER="odroid blaster"
TRANSMITTER_MODULES="lirc_odroid lirc_dev"
TRANSMITTER_DRIVER=""
TRANSMITTER_DEVICE="/dev/lirc0"
TRANSMITTER_SOCKET=""
TRANSMITTER_LIRCD_CONF=""
TRANSMITTER_LIRCD_ARGS=""

#Disable kernel support.
#Typically, lirc will disable in-kernel support for ir devices in order to
#handle them internally. Set to false to prevent lirc from disabling this
#in-kernel support.
#DISABLE_KERNEL_SUPPORT="true"

#Enable lircd
START_LIRCD="true"

#Don’t start lircmd even if there seems to be a good config file
#START_LIRCMD="false"

#Try to load appropriate kernel modules
LOAD_MODULES="true"

# Default configuration files for your hardware if any
LIRCMD_CONF=""

#Forcing noninteractive reconfiguration
#If lirc is to be reconfigured by an external application
#that doesn’t have a debconf frontend available, the noninteractive
#frontend can be invoked and set to parse REMOTE and TRANSMITTER
#It will then populate all other variables without any user input
#If you would like to configure lirc via standard methods, be sure
#to leave this set to "false"
FORCE_NONINTERACTIVE_RECONFIGURATION="false"
START_LIRCMD=""
[FIN FICHERO /ETC/LIRC/HARDWARE.CONF]

Una vez tenemos configurado el software con el hardware (receptor y emisor), solo falta tener o capturar los trenes de impulsos de varios mandos a distancia. Esos datos se tienen que guardar en el fichero /etc/lirc/lircd.conf.

Con estos comandos podemos listar los comandos del mando LG, con el segundo ejecutamos el comando KEY_POWER del mando LG, con el tercer comando ejecutamos el KEY_POWER del mando SAMSUNG.

$ irsend LIST LG ""
$ irsend SEND_ONCE LG KEY_POWER
$ irsend SEND_ONCE SAMSUNG KEY_POWER

¿Cómo se capturan los impulsos?

Paramos el servicio de LIRC

$ sudo /etc/init.d/lirc stop

Ejecutamos el siguiente comando, si al presionar cualquier botón del mando a capturar aparecen códigos en pantalla es que el receptor funciona (modo de prueba).

$ mode2 -d /dev/lirc0

Configuración de botones / Captura de impulsos

$ irrecord -n -f -d /dev/lirc0 fichero_de_configuracion.txt

irrecord –  application for recording IR-codes for usage with lirc

Copyright (C) 1998,1999 Christoph Bartelmus(lirc@bartelmus.de)
This program will record the signals from your remote control and create a config file for lircd.

A proper config file for lircd is maybe the most vital part of this package, so you should invest some time to create a working config file. Although I put a good deal of effort in this program it is often not possible to automatically recognize all features of a remote control. Often short-comings of the receiver hardware make it nearly impossible. If you have problems to create a config file READ THE DOCUMENTATION of this package, especially section «Adding new remote controls» for how to get help. If there already is a remote control of the same brand available at http://www.lirc.org/remotes/ you might also want to try using such a remote as a template. The config files already contain all parameters of the protocol used by remotes of a certain brand and knowing these parameters makes the job of this program much easier. There are also template files for the most common protocols available in the remotes/generic/ directory of the source distribution of this package. You can use a template files by providing the path of the file as command line parameter. Please send the finished config files to <lirc@bartelmus.de> so that I can make them available to others. Don’t forget to put all information that you can get about the remote control in the header of the file.

Press RETURN to continue.

Now start pressing buttons on your remote control. It is very important that you press many different buttons and hold them down for approximately one second. Each button should generate at least one dot but in no case more than ten dots of output. Don’t stop pressing buttons until two lines of dots (2×80) have been generated.

Press RETURN now to start recording.
……………………………………………………………………..
Found const length: 108431
Please keep on pressing buttons like described above.
irrecord: no data for 10 secs, aborting
Creating config file in raw mode.
Now enter the names for the buttons.
Please enter the name for the next button (press <ENTER> to finish recording)

KEY_POWER

Now hold down button "KEY_POWER".
Got it.
Signal length is 67

Please enter the name for the next button (press <ENTER> to finish recording)

Pulsamos enter para finalizar

Arrancamos el servicio LIRC para hacer uso del emisor

$ sudo /etc/init.d/lirc start

En caso de no usar la parte receptora… ya que la usaremos para capturar las señales de nuestros mandos, muy probablemente una vez y poco más… podremos comentar las partes del fichero /etc/lirc/hardware.conf que corresponden al Choosen Remote Control y eliminar los siguientes controladores:

modprobe -r ir_lirc_codec
modprobe -r ir_mce_kbd_decoder
modprobe -r ir_sanyo_decoder
modprobe -r ir_sony_decoder
modprobe -r ir_jvc_decoder
modprobe -r ir_rc6_decoder
modprobe -r ir_rc5_decoder
modprobe -r ir_nec_decoder
modprobe -r meson_ir
modprobe -r uinput