Subject: Linux Infrared Remote Control (LIRC) am fitPC2
From: Boris Kraut <[email-masked]>
To: undisclosed-recipients: ;
Date: Mon, 02 Aug 2010 02:53:32 +0200

Der fitPC2 besitzt einen IR-Empfaenger, den ich auch nutzen moechte,
wenn ich mein ALIX-Board in Rente schicke und es durch den fitPC2
ersetze. Grund genug, um sich mal in LIRC (Linux Infrared Remote
Control) einzuarbeiten:

Die verbaute IR-Hardware basiert auf Igor Cesko's USB IR Receiver [1]
und sollte in Ubuntu 10.04 auch als solcher erkannt werden.

Das noch benoetigte LIRC-Paket wird nun mit

$ sudo apt-get install lirc

nachinstalliert. Bei der daran anschliessenden Konfiguration waehlt
man den oben genannten Receiver aus und sollte danach folgendes in der
Config stehen haben:

$ cat /etc/lirc/hardware.conf
REMOTE="Igor Cesko's USB IR Receiver"
REMOTE_MODULES="lirc_dev lirc_igorplugusb"
REMOTE_DRIVER=""
REMOTE_DEVICE="/dev/lirc0"
REMOTE_SOCKET=""
REMOTE_LIRCD_CONF=""
REMOTE_LIRCD_ARGS=""
START_LIRCD="true"
START_LIRCMD=""
LOAD_MODULES=""
LIRCMD_CONF=""
FORCE_NONINTERACTIVE_RECONFIGURATION="false"

Als naechstes muss man den empfangenen Sequenzen einen Namen zuweisen.
Wenn man Glueck hat, findet man in der Datenbank unter [2] die eigene
Fernbedienung, sodass man sie nur noch herunterladen und einbinden
muss. Wer wie ich weniger Glueck hat, erstellt sich einfach selbst
eine entsprechende Datei:

$ sudo /etc/init.d/lirc stop
$ sudo irrecord -n -f -d /dev/lirc0 /etc/lirc/lircd.conf

Wer vorgefertigte Profile verwenden will, sollte auf den -n Schalter
verzichten, denn dann sind nur Bezeichner erlaubt, an die sich mehr
oder weniger alle Profile halten. Auch der -f Schalter muss gerade bei
modernen Fernbedienungen nicht unbedingt sein, er erzwingt das nutzen
von Rohdaten. Der Rest sollte selbsterklaerend sein.

Wer nun testen will, ob alles wie geplant funktioniert, der kann das
mit dem Programm `irw` testen. Nach dem Aufruf gibt es aus, welchen
Keycode LIRC gerade empfaengt:

$ sudo /etc/init.d/lirc restart
$ irw
0000000000000012 00 KEY_6 kenwood-rc-m83
0000000000000003 00 KEY_MUTE kenwood-rc-m83
0000000000000002 00 KEY_VOLUMEDOWN kenwood-rc-m83
0000000000000001 00 KEY_VOLUMEUP kenwood-rc-m83
000000000000002f 00 KEY_CDPLAY kenwood-rc-m83

Die Ausgabe sieht natuerlich je nach Fernbedienung und gedrueckten
Tasten anders aus...

Als letzter Schritt bleibt nur noch die Umsetzung von den empfangenen
Keycodes in Programmaufrufe. Hierfuer gibt es unzaehlige Mittel, Wege
und Tools; ich habe mich fuer das einfache `irexec` entschieden.

Wer viele Knoepfe hat, kann sich mit einem einfachen Script die noetige
Konfigurationsdatei .lircrc vorausfuellen lassen -- in etwa so:

$ cat lircrc-gen
#!/bin/sh
for i in `grep name /etc/lirc/lircd.conf | grep -v lircd.conf | sed -e "s/name//g"`
do
	( echo "begin"
 	  echo "    prog = irexec"
	  echo "    button = ${i}"
	  echo "    config = "
	  echo "end"
	  echo " "
	) >> ~/lircrc.conf
done

Ein einfaches Beispiel der Datei mit nur einem Eintrag koennte wie
folgt aussehen:

$ cat ~/.lircrc
begin
  prog = irexec
  button = KEY_MUTE
  config = xterm
end

Jetzt sollte beim druecken der MUTE-Taste der Keycode KEY_MUTE
empfangen werden, der wiederum dann veranlaesst, dass ein Terminal-
Fenster geoeffnet wird. Genauere Beschreibungen des Formats finden
sich unter [4]. Soll die Fernbedienung dauerhaft verwendet werden,
dann ist es natuerlich ratsam sowohl den `lircd` als auch `irexec`
als Daemon schon beim Systemstart zu laden. Ersteres erfolgt ueber
den jeweiligen Inti-Prozess, fuer letzteres reicht ein `irexec -d`
irgendwo im Autostart.

[1] http://www.cesko.host.sk/
[2] http://lirc.sourceforge.net/remotes/
[3] https://wiki.ubuntu.com/LircHowto
[4] http://www.lirc.org/html/configure.html#lircrc_format