Zitat des Tages
[krt-msg] / 2010-08-02T00:53:32.00Z.msg
1 From: Boris Kraut <krt@nurfuerspam.de>\r
2 Organization: \r
3 Date: Mon, 02 Aug 2010 02:53:32 +0200\r
4 Category: \r
5 Message-ID: <20100802005332.hgwQUe@silberbruch>  \r
6 Keywords: \r
7 Comments: \r
8 To: undisclosed-recipients: ;\r
9 Subject: Linux Infrared Remote Control (LIRC) am fitPC2\r
10 \r
11 Der fitPC2 besitzt einen IR-Empfaenger, den ich auch nutzen moechte,\r
12 wenn ich mein ALIX-Board in Rente schicke und es durch den fitPC2\r
13 ersetze. Grund genug, um sich mal in LIRC (Linux Infrared Remote\r
14 Control) einzuarbeiten:\r
15 \r
16 Die verbaute IR-Hardware basiert auf Igor Cesko's USB IR Receiver [1]\r
17 und sollte in Ubuntu 10.04 auch als solcher erkannt werden.\r
18 \r
19 Das noch benoetigte LIRC-Paket wird nun mit\r
20 \r
21 $ sudo apt-get install lirc\r
22 \r
23 nachinstalliert. Bei der daran anschliessenden Konfiguration waehlt\r
24 man den oben genannten Receiver aus und sollte danach folgendes in der\r
25 Config stehen haben:\r
26 \r
27 $ cat /etc/lirc/hardware.conf\r
28 REMOTE="Igor Cesko's USB IR Receiver"\r
29 REMOTE_MODULES="lirc_dev lirc_igorplugusb"\r
30 REMOTE_DRIVER=""\r
31 REMOTE_DEVICE="/dev/lirc0"\r
32 REMOTE_SOCKET=""\r
33 REMOTE_LIRCD_CONF=""\r
34 REMOTE_LIRCD_ARGS=""\r
35 START_LIRCD="true"\r
36 START_LIRCMD=""\r
37 LOAD_MODULES=""\r
38 LIRCMD_CONF=""\r
39 FORCE_NONINTERACTIVE_RECONFIGURATION="false"\r
40 \r
41 Als naechstes muss man den empfangenen Sequenzen einen Namen zuweisen.\r
42 Wenn man Glueck hat, findet man in der Datenbank unter [2] die eigene\r
43 Fernbedienung, sodass man sie nur noch herunterladen und einbinden\r
44 muss. Wer wie ich weniger Glueck hat, erstellt sich einfach selbst\r
45 eine entsprechende Datei:\r
46 \r
47 $ sudo /etc/init.d/lirc stop\r
48 $ sudo irrecord -n -f -d /dev/lirc0 /etc/lirc/lircd.conf\r
49 \r
50 Wer vorgefertigte Profile verwenden will, sollte auf den -n Schalter\r
51 verzichten, denn dann sind nur Bezeichner erlaubt, an die sich mehr\r
52 oder weniger alle Profile halten. Auch der -f Schalter muss gerade bei\r
53 modernen Fernbedienungen nicht unbedingt sein, er erzwingt das nutzen\r
54 von Rohdaten. Der Rest sollte selbsterklaerend sein.\r
55 \r
56 Wer nun testen will, ob alles wie geplant funktioniert, der kann das\r
57 mit dem Programm `irw` testen. Nach dem Aufruf gibt es aus, welchen\r
58 Keycode LIRC gerade empfaengt:\r
59 \r
60 $ sudo /etc/init.d/lirc restart\r
61 $ irw\r
62 0000000000000012 00 KEY_6 kenwood-rc-m83\r
63 0000000000000003 00 KEY_MUTE kenwood-rc-m83\r
64 0000000000000002 00 KEY_VOLUMEDOWN kenwood-rc-m83\r
65 0000000000000001 00 KEY_VOLUMEUP kenwood-rc-m83\r
66 000000000000002f 00 KEY_CDPLAY kenwood-rc-m83\r
67 \r
68 Die Ausgabe sieht natuerlich je nach Fernbedienung und gedrueckten\r
69 Tasten anders aus...\r
70 \r
71 Als letzter Schritt bleibt nur noch die Umsetzung von den empfangenen\r
72 Keycodes in Programmaufrufe. Hierfuer gibt es unzaehlige Mittel, Wege\r
73 und Tools; ich habe mich fuer das einfache `irexec` entschieden.\r
74 \r
75 Wer viele Knoepfe hat, kann sich mit einem einfachen Script die noetige\r
76 Konfigurationsdatei .lircrc vorausfuellen lassen -- in etwa so:\r
77 \r
78 $ cat lircrc-gen\r
79 #!/bin/sh\r
80 for i in `grep name /etc/lirc/lircd.conf | grep -v lircd.conf | sed -e "s/name//g"`\r
81 do\r
82         ( echo "begin"\r
83           echo "    prog = irexec"\r
84           echo "    button = ${i}"\r
85           echo "    config = "\r
86           echo "end"\r
87           echo " "\r
88         ) >> ~/lircrc.conf\r
89 done\r
90 \r
91 Ein einfaches Beispiel der Datei mit nur einem Eintrag koennte wie\r
92 folgt aussehen:\r
93 \r
94 $ cat ~/.lircrc\r
95 begin\r
96   prog = irexec\r
97   button = KEY_MUTE\r
98   config = xterm\r
99 end\r
100 \r
101 Jetzt sollte beim druecken der MUTE-Taste der Keycode KEY_MUTE\r
102 empfangen werden, der wiederum dann veranlaesst, dass ein Terminal-\r
103 Fenster geoeffnet wird. Genauere Beschreibungen des Formats finden\r
104 sich unter [4]. Soll die Fernbedienung dauerhaft verwendet werden,\r
105 dann ist es natuerlich ratsam sowohl den `lircd` als auch `irexec`\r
106 als Daemon schon beim Systemstart zu laden. Ersteres erfolgt ueber\r
107 den jeweiligen Inti-Prozess, fuer letzteres reicht ein `irexec -d`\r
108 irgendwo im Autostart.\r
109 \r
110 \r
111 [1] http://www.cesko.host.sk/\r
112 [2] http://lirc.sourceforge.net/remotes/\r
113 [3] https://wiki.ubuntu.com/LircHowto\r
114 [4] http://www.lirc.org/html/configure.html#lircrc_format\r