• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

lirc mit Fernbedienungen die als HID Geräte erkannt werden

migo32

Newbie
Hallo Forum

Ich habe einige Zeit gebraucht um meine Auvisio Fernbedienung mit lirc zum laufen zu bringen. Da ich zu dem Thema und meinem speziellen Problem nicht viel nützliches im Netz gefunden habe, dachte ich mir ein HowTo zu schreiben weil vielleicht andere das gleiche Problem haben und HID Fernbedienungen weit verbreitet sind. Für Anregungen und Verbesserungsvorschläge bin ich offen, ganz besondere was das Start Skript angeht (damit habe ich mir ein bischen schwer getan). Ich hoffe das ihr was damit anfangen könnt.

Das LIRC Paket und das korrekte Kernel Modul von den Repositories via Yast installieren. Sollte unklar sein welcher Kernel verwendet wird, kann dies auf der Konsole mit dem Befehl "uname -r" abgefragt werden.

Die Fernbedienung, bzw. der Empfänger der Fernbedienung wird als HID Gerät erkannt, und es werden verschiedene Device Dateien unter /dev/input/ erzeugt. Falls unklar ist, welche Dateien zuständig sind, den Rechner mit eingestöpseltem USB Empfänger runter und wieder hochfahren. Anschließend in das Verzeichnis /dev/input wechseln. Nun den USB Empfänger abstöpseln, und nachsehen welche Dateien verschwinden. Sobald der Empfänger wieder angschlossen wird, werden Dateien /dev/input/event* wieder angelegt. (/dev/input/mice und /dev/input/mouse* kann hierfür ignoriert werden). Genau diese sind zuständig für den USB Empfänger. Bei mir waren dies /dev/input/event2 und /dev/input/event3, auf einem anderen PC können diese andere Nummern haben ! Das Skript ist entsprechend anzupassen. Um alle Tasten der Fernbedienung verwenden zu können, sollten immer beide event Dateien verwendet werden, !

Im Gegensatz zu einer herkömmlichen Fernbedienung, die über einen Treiber angesprochen werden muß, wird bei einer HID Fernbedienung vom System her schon alles für LIRC bereit gestellt. Somit ist eine Anpassung der Dateien /etc/sysconfig/lirc bzw. /etc/init.d/lirc nicht notwendig. Der Start von lirc erfolgt durch das Skript lirc_multievent (siehe unten). Diese Datei nach /etc/init.d kopieren und ausführbar machen, anschließend im RunlevelEditor den Dienst aktivieren.

Nun kann die lircd.conf Datei für den Linux Input Layer driver von http://linux.bytesex.org/v4l2/linux-input-layer-lircd.conf heruntergeladen werden und als /etc/lircd.conf gespeichert werden. Dies ist eine Standard Datei und sollte für alle HID Fernbedienungen verwendet werden können (eine Kopie dieser Datei siehe unten). irrecord wird deshalb nicht gebraucht.

Ein Test mit irw:

irw /dev/lircd

Ein Tastendruck auf der Fernbedienung sollte nun eine Ausgabe auf der Konsole erzeugen:

migo@desktop:~> irw /dev/lircd
0000000000010073 00 VOLUMEUP linux-input-layer
0000000000010048 00 KP8 linux-input-layer
000000000001006d 00 PAGEDOWN linux-input-layer

Die Bezeichnung der Tasten, (VOLUMEUP, KP8, PAGEDOWN usw.) holt sich das System aus der Datei /etc/lircd.conf. Über diese Bezeichnung erfolgt später die Zuordnung in der .lircrc Datei, sie kann frei gewählt werden.

Die Verwendung von irexec und irxevent erfolgt wie gewohnt: Datei .lircrc im home Verzeichnis anlegen. Aufruf in einem skript mittels
irxevent /home/username/.lircrc &
irexec /home/username/.lircrc &

Bei meiner Fernbedienung handelt es sich um eine Auvision PC-Fernbedienung "Media Center Edition". Die Konfiguartion habe ich mit openSuse11.1 & lirc0.8.4 als auch openSuse11.0 & lirc0.8.3 getestet.

Hier noch das Skript zum starten von lirc und die lircd.conf Datei für den Linux Input Layer driver

lirc_multievent: (wird gespeichert unter /etc/init.d) (denkt dran /dev/input/event an euer System anzupassen !)
----------------------------------------------------------------------------------
#! /bin/sh
#
# /etc/init.d/lirc_multievent
#
### BEGIN INIT INFO
# Provides:
# Required-Start:
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start: 5
# Default-Stop:
# Short-Description: lirc for use with multiple /dev/input/event devices
# Description:
### END INIT INFO

. /etc/rc.status

rc_reset

case "$1" in

start)
checkproc lircd
if [ "$?" == 0 ]; then
echo "lirc is already running";
exit 1;
else
echo "starting lircd";
lircd --driver=devinput --device=/dev/input/event2 --pidfile=/var/run/lirc2.pid --listen=9988;
lircd --driver=devinput --device=/dev/input/event3 --pidfile=/var/run/lirc3.pid --connect=localhost:9988;
if test ! -e /dev/lircd; then ln -s /var/run/lirc/lircd /dev/lircd; fi
fi
;;

stop)
killproc lircd
;;

status)
checkproc lircd
if [ "$?" == 0 ]; then
echo "lirc is running";
ps -C lircd
else
echo "lirc is not running";
fi
if test -e /dev/lircd; then
echo "/dev/lircd exists";
else
echo "/dev/lircd does not exist";
fi
;;

*)
echo "Usage: $0 {start|stop|status}";
exit 1;
 ;;

esac

rc_exit
----------------------------------------------------------------------------------

lircd.conf (wird gespeichert unter /etc)
----------------------------------------------------------------------------------
begin remote
name linux-input-layer
bits 32
begin codes
ESC 0x10001
1 0x10002
2 0x10003
3 0x10004
4 0x10005
5 0x10006
6 0x10007
7 0x10008
8 0x10009
9 0x1000a
0 0x1000b
MINUS 0x1000c
EQUAL 0x1000d
BACKSPACE 0x1000e
TAB 0x1000f
Q 0x10010
W 0x10011
E 0x10012
R 0x10013
T 0x10014
Y 0x10015
U 0x10016
I 0x10017
O 0x10018
P 0x10019
LEFTBRACE 0x1001a
RIGHTBRACE 0x1001b
ENTER 0x1001c
LEFTCTRL 0x1001d
A 0x1001e
S 0x1001f
D 0x10020
F 0x10021
G 0x10022
H 0x10023
J 0x10024
K 0x10025
L 0x10026
SEMICOLON 0x10027
APOSTROPHE 0x10028
GRAVE 0x10029
LEFTSHIFT 0x1002a
BACKSLASH 0x1002b
Z 0x1002c
X 0x1002d
C 0x1002e
V 0x1002f
B 0x10030
N 0x10031
M 0x10032
COMMA 0x10033
DOT 0x10034
SLASH 0x10035
RIGHTSHIFT 0x10036
KPASTERISK 0x10037
LEFTALT 0x10038
SPACE 0x10039
CAPSLOCK 0x1003a
F1 0x1003b
F2 0x1003c
F3 0x1003d
F4 0x1003e
F5 0x1003f
F6 0x10040
F7 0x10041
F8 0x10042
F9 0x10043
F10 0x10044
NUMLOCK 0x10045
SCROLLLOCK 0x10046
KP7 0x10047
KP8 0x10048
KP9 0x10049
KPMINUS 0x1004a
KP4 0x1004b
KP5 0x1004c
KP6 0x1004d
KPPLUS 0x1004e
KP1 0x1004f
KP2 0x10050
KP3 0x10051
KP0 0x10052
KPDOT 0x10053
103RD 0x10054
F13 0x10055
102ND 0x10056
F11 0x10057
F12 0x10058
F14 0x10059
F15 0x1005a
F16 0x1005b
F17 0x1005c
F18 0x1005d
F19 0x1005e
F20 0x1005f
KPENTER 0x10060
RIGHTCTRL 0x10061
KPSLASH 0x10062
SYSRQ 0x10063
RIGHTALT 0x10064
LINEFEED 0x10065
HOME 0x10066
UP 0x10067
PAGEUP 0x10068
LEFT 0x10069
RIGHT 0x1006a
END 0x1006b
DOWN 0x1006c
PAGEDOWN 0x1006d
INSERT 0x1006e
DELETE 0x1006f
MACRO 0x10070
MUTE 0x10071
VOLUMEDOWN 0x10072
VOLUMEUP 0x10073
POWER 0x10074
KPEQUAL 0x10075
KPPLUSMINUS 0x10076
PAUSE 0x10077
F21 0x10078
F22 0x10079
F23 0x1007a
F24 0x1007b
KPCOMMA 0x1007c
LEFTMETA 0x1007d
RIGHTMETA 0x1007e
COMPOSE 0x1007f
STOP 0x10080
AGAIN 0x10081
PROPS 0x10082
UNDO 0x10083
FRONT 0x10084
COPY 0x10085
OPEN 0x10086
PASTE 0x10087
FIND 0x10088
CUT 0x10089
HELP 0x1008a
MENU 0x1008b
CALC 0x1008c
SETUP 0x1008d
SLEEP 0x1008e
WAKEUP 0x1008f
FILE 0x10090
SENDFILE 0x10091
DELETEFILE 0x10092
XFER 0x10093
PROG1 0x10094
PROG2 0x10095
WWW 0x10096
MSDOS 0x10097
COFFEE 0x10098
DIRECTION 0x10099
CYCLEWINDOWS 0x1009a
MAIL 0x1009b
BOOKMARKS 0x1009c
COMPUTER 0x1009d
BACK 0x1009e
FORWARD 0x1009f
CLOSECD 0x100a0
EJECTCD 0x100a1
EJECTCLOSECD 0x100a2
NEXTSONG 0x100a3
PLAYPAUSE 0x100a4
PREVIOUSSONG 0x100a5
STOPCD 0x100a6
RECORD 0x100a7
REWIND 0x100a8
PHONE 0x100a9
ISO 0x100aa
CONFIG 0x100ab
HOMEPAGE 0x100ac
REFRESH 0x100ad
EXIT 0x100ae
MOVE 0x100af
EDIT 0x100b0
SCROLLUP 0x100b1
SCROLLDOWN 0x100b2
KPLEFTPAREN 0x100b3
KPRIGHTPAREN 0x100b4
INTL1 0x100b5
INTL2 0x100b6
INTL3 0x100b7
INTL4 0x100b8
INTL5 0x100b9
INTL6 0x100ba
INTL7 0x100bb
INTL8 0x100bc
INTL9 0x100bd
LANG1 0x100be
LANG2 0x100bf
LANG3 0x100c0
LANG4 0x100c1
LANG5 0x100c2
LANG6 0x100c3
LANG7 0x100c4
LANG8 0x100c5
LANG9 0x100c6
PLAYCD 0x100c8
PAUSECD 0x100c9
PROG3 0x100ca
PROG4 0x100cb
SUSPEND 0x100cd
CLOSE 0x100ce
PLAY 0x100cf
FASTFORWARD 0x100d0
BASSBOOST 0x100d1
PRINT 0x100d2
HP 0x100d3
CAMERA 0x100d4
SOUND 0x100d5
QUESTION 0x100d6
EMAIL 0x100d7
CHAT 0x100d8
SEARCH 0x100d9
CONNECT 0x100da
FINANCE 0x100db
SPORT 0x100dc
SHOP 0x100dd
ALTERASE 0x100de
CANCEL 0x100df
BRIGHTNESSDOWN 0x100e0
BRIGHTNESSUP 0x100e1
MEDIA 0x100e2
UNKNOWN 0x100f0
BTN_MISC 0x10100
BTN_0 0x10100
BTN_1 0x10101
BTN_2 0x10102
BTN_3 0x10103
BTN_4 0x10104
BTN_5 0x10105
BTN_6 0x10106
BTN_7 0x10107
BTN_8 0x10108
BTN_9 0x10109
BTN_MOUSE 0x10110
BTN_LEFT 0x10110
BTN_RIGHT 0x10111
BTN_MIDDLE 0x10112
BTN_SIDE 0x10113
BTN_EXTRA 0x10114
BTN_FORWARD 0x10115
BTN_BACK 0x10116
BTN_TASK 0x10117
BTN_JOYSTICK 0x10120
BTN_TRIGGER 0x10120
BTN_THUMB 0x10121
BTN_THUMB2 0x10122
BTN_TOP 0x10123
BTN_TOP2 0x10124
BTN_PINKIE 0x10125
BTN_BASE 0x10126
BTN_BASE2 0x10127
BTN_BASE3 0x10128
BTN_BASE4 0x10129
BTN_BASE5 0x1012a
BTN_BASE6 0x1012b
BTN_DEAD 0x1012f
BTN_GAMEPAD 0x10130
BTN_A 0x10130
BTN_B 0x10131
BTN_C 0x10132
BTN_X 0x10133
BTN_Y 0x10134
BTN_Z 0x10135
BTN_TL 0x10136
BTN_TR 0x10137
BTN_TL2 0x10138
BTN_TR2 0x10139
BTN_SELECT 0x1013a
BTN_START 0x1013b
BTN_MODE 0x1013c
BTN_THUMBL 0x1013d
BTN_THUMBR 0x1013e
BTN_DIGI 0x10140
BTN_TOOL_PEN 0x10140
BTN_TOOL_RUBBER 0x10141
BTN_TOOL_BRUSH 0x10142
BTN_TOOL_PENCIL 0x10143
BTN_TOOL_AIRBRUSH 0x10144
BTN_TOOL_FINGER 0x10145
BTN_TOOL_MOUSE 0x10146
BTN_TOOL_LENS 0x10147
BTN_TOUCH 0x1014a
BTN_STYLUS 0x1014b
BTN_STYLUS2 0x1014c
BTN_WHEEL 0x10150
BTN_GEAR_DOWN 0x10150
BTN_GEAR_UP 0x10151
OK 0x10160
SELECT 0x10161
GOTO 0x10162
CLEAR 0x10163
POWER2 0x10164
OPTION 0x10165
INFO 0x10166
TIME 0x10167
VENDOR 0x10168
ARCHIVE 0x10169
PROGRAM 0x1016a
CHANNEL 0x1016b
FAVORITES 0x1016c
EPG 0x1016d
PVR 0x1016e
MHP 0x1016f
LANGUAGE 0x10170
TITLE 0x10171
SUBTITLE 0x10172
ANGLE 0x10173
ZOOM 0x10174
MODE 0x10175
KEYBOARD 0x10176
SCREEN 0x10177
PC 0x10178
TV 0x10179
TV2 0x1017a
VCR 0x1017b
VCR2 0x1017c
SAT 0x1017d
SAT2 0x1017e
CD 0x1017f
TAPE 0x10180
RADIO 0x10181
TUNER 0x10182
PLAYER 0x10183
TEXT 0x10184
DVD 0x10185
AUX 0x10186
MP3 0x10187
AUDIO 0x10188
VIDEO 0x10189
DIRECTORY 0x1018a
LIST 0x1018b
MEMO 0x1018c
CALENDAR 0x1018d
RED 0x1018e
GREEN 0x1018f
YELLOW 0x10190
BLUE 0x10191
CHANNELUP 0x10192
CHANNELDOWN 0x10193
FIRST 0x10194
LAST 0x10195
AB 0x10196
NEXT 0x10197
RESTART 0x10198
SLOW 0x10199
SHUFFLE 0x1019a
BREAK 0x1019b
PREVIOUS 0x1019c
DIGITS 0x1019d
TEEN 0x1019e
TWEN 0x1019f
DEL_EOL 0x101c0
DEL_EOS 0x101c1
INS_LINE 0x101c2
DEL_LINE 0x101c3
end codes
end remote
----------------------------------------------------------------------------------
 
OP
M

migo32

Newbie
Schade das nicht mal eine einzige Antwort oder ein Kommentar zu meinem Howto gekommen ist. Ich habe wirklich geglaubt das noch mehr Leute das gleiche Problem hätten. Trotzdem habe ich das Howto weiter ausgearbeitet und etliches angefügt, ebenso habe ich noch ein bischen an dem Init-Skript gefeilt. Sollte es trotzdem noch jemand interessieren, findet ihr das aktuelle HowTo unter

http://de.opensuse.org/Linux_Infrared_Remote_Control

Gruß,
MiGo
 

fschuett

Newbie
Hallo MiGO,
Deine Anleitung hat mir sehr weitergeholfen.
Ich habe eine Fernbedienung von MS-Tech, die sich als Tastatur und Maus von Cypress anmeldet.
Dank Deiner Anleitung funktioniert sie jetzt einwandfrei zusammen mit MythTV.

Gruß,
Frank
 
Oben