From: Boris Kraut Organization: Date: Mon, 02 Aug 2010 02:53:32 +0200 Category: Message-ID: <20100802005332.hgwQUe@silberbruch> Keywords: Comments: To: undisclosed-recipients: ; Subject: Linux Infrared Remote Control (LIRC) am fitPC2 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