View previous topic :: View next topic |
Author |
Message |
Master One l33t
Joined: 25 Aug 2003 Posts: 754 Location: Austria
|
Posted: Tue Sep 21, 2004 2:38 pm Post subject: HELP: LIRC + Hauppauge WinTV Nexus-S -> Tasten prellen |
|
|
Ich bin nun schon seit zwei Tagen am rumspielen, und weiß nicht mehr weiter.
Ich habe hier eine neue Hauppauge WinTV Nexus-S eingebaut, und bekomme die Sache mit der Fernbedienung nicht richtig zum Laufen:
- Kernel 2.6.8.1 (mit aktiviertem Event-Interface)
- lirc-0.7.0_pre7-r1 (mit LIRC_OPTS=--with-driver=devinput)
- Die silbergraue Hauppauge Fernbedienung mit den Farbtasten
- Fernbedienungsempfänger an Nexus-S angeschlossen
- Auslesen über AV7110 & Event-Interface
Damit das Event-Interface die Signale der Fernbedienung nicht auch über den Tastaturtreiber auf die Konsole ausgibt, habe ich die keyboard.c des Kernels gepatched:
Code: | + if (dev->name[0]=='D' && dev->name[1]=='V' && dev->name[2] == 'B')
+ return NULL;
+
if (!(handle = kmalloc(sizeof(struct input_handle), GFP_KERNEL)))
return NULL;
memset(handle, 0, sizeof(struct input_handle)); |
Dies ergibt, daß kbd beim Input-Device nicht mehr als Event-Handler aufscheint: Code: | root # cat /proc/bus/input/devices
I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="DVB on-card IR receiver"
P: Phys=
H: Handlers=event2
B: EV=100003
B: KEY=3883c000 2045 0 0 0 0 0 4180 801 921680 0 0 ffc |
/proc/av7100_ir habe ich mit der auppauge_grey.rc5 geladen und lircd mit LIRCD_OPTS="-d /dev/input/event2" gestartet.
Prinzipiell funktioniert es ja, wenn da nicht dieses lästige Tastenprellen wäre. Wenn man eine Taste ganz vorsichtig und wirklich nur ganz kurz drückt, zeigt irw das Event auch nur als einen Tastendruck an, aber sobald ich eine Taste einigermaßen normal drücke (wie man es eben gewohnt ist), wird das Tastenevent zweimal registriert, also das typische Prellen.
Folgende Ausgabe verdeutlicht das Problem bei Verwendung von irw: Code: | root # irw
000000008001006c 00 Ch- hauppauge_pvr
000000008001006c 00 Ch- hauppauge_pvr |
Taste Ch- wurde ganz normal nur einmal gedrückt, scheint aber zweimal auf. Die "00" sollte eigentlich eine Wiederholung anzeigen, tut es aber nicht, d.h. das Event wird offenbar nicht korrekt ausgewertet, denn folgende Ausgabe dieses Versuchs erscheint im System-Log: Code: | 0.7.0pre7[26004]: accepted new client on /dev/lircd
0.7.0pre7[26004]: initializing '/dev/input/event2'
0.7.0pre7[26004]: devinput_rec
0.7.0pre7[26004]: time 1095776329.495043 type 1 code 108 value 1
0.7.0pre7[26004]: code 8001006c
0.7.0pre7[26004]: devinput_decode
0.7.0pre7[26004]: devinput_rec
0.7.0pre7[26004]: time 1095776329.607626 type 1 code 108 value 2
0.7.0pre7[26004]: code 8001006c
0.7.0pre7[26004]: devinput_decode
0.7.0pre7[26004]: devinput_rec
0.7.0pre7[26004]: time 1095776329.857182 type 1 code 108 value 0
0.7.0pre7[26004]: code 0001006c
0.7.0pre7[26004]: devinput_decode
0.7.0pre7[26004]: removed client
0.7.0pre7[26004]: closing '/dev/input/event2' |
Meiner Ansicht nach ist die Empfindlichkeit zu hoch, denn obwohl die Taste nur kurz gedrückt wurde, ist gleich mit "value 2" das "Taste-gedrückt-halten" registriert worden, was dann das doppelte Event ausgelöst hat.
Seltsamerweise ist die Anzeige von lirc im System-Log zumindest korrekt, was den Status der Taste anbelangt (also value 0 für release, value 1 für press, value 2 für hold), nicht jedoch die Ausgabe von irw, da hierbei immer nur "00" aufscheint, auch wenn man eine Taste gedrückt hält. Ob das ein Bug ist, kann ich nicht sagen, ich kann mich aber erinnern, daß dies schon mal jemandem in der lirc-Mailingsliste aufgefallen ist.
Ich weiß nun jedenfalls nicht mehr weiter, in diesem Zustand kann man die Fernbedienung nicht sinnvoll nutzen, da die meisten einfachen Tastendrücke doppelt registriert werden.
Kann man das Problem irgendwie mit der Konfiguration in /etc/lircd.conf in den Griff bekommen???
Meine lircd.conf sieht folgdermaßen aus (ist das bekannte Standardfile zur hauppauge_grey): Code: | begin remote
name hauppauge_pvr
bits 13
flags RC5|CONST_LENGTH
eps 30
aeps 100
one 969 811
zero 969 811
plead 1097
gap 114605
toggle_bit 2
begin codes
Power 0x80010074
Go 0x80010162
1 0x80010002
2 0x80010003
3 0x80010004
4 0x80010005
5 0x80010006
6 0x80010007
7 0x80010008
8 0x80010009
9 0x8001000a
Back/Exit 0x800100ae
0 0x8001000b
Menu 0x8001008b
Red 0x8001018e
Green 0x8001018f
Yellow 0x80010190
Blue 0x80010191
Ch+ 0x80010067
Ch- 0x8001006c
Vol- 0x80010069
Vol+ 0x8001006a
Ok 0x80010160
Mute 0x80010071
Blank 0x80010166
Full 0x8001016d
Rewind 0x800100a8
Play 0x80010197
Forward 0x8001019b
Record 0x800100a7
Stop 0x80010080
Pause 0x80010077
Replay 0x8001019c
Skip 0x8001019d
end codes
end remote |
Leider habe ich keine Ahnung, welche Optionen man hier mit welchen Werten testen könnte. Ich habe zwar von Versuchen mit "repeat" und "delay" gelesen, aber diese waren wohl auch nicht von Erfolg.
Oder gibt es eine Möglichkeit, lirc zu patchen, um die Empfindlichkeit zu beeinflussen??? _________________ Las torturas mentales de la CIA |
|
Back to top |
|
|
Master One l33t
Joined: 25 Aug 2003 Posts: 754 Location: Austria
|
Posted: Thu Sep 23, 2004 8:07 am Post subject: |
|
|
Inzwischen habe ich meine lircd.conf geändert, sodaß das Event auf das Loslassen der Taste getriggert wird (also einfach 0x0001... statt 0x8001...), aber dies verhindert natürlich die Tastenwiederholung vollständig, und das ist nicht wirklich die gewünschte Lösung (zumal es sich auch seltsam anfühlt, wenn die Aktion erst nach Loslassen einer Taste ausgeführt wird).
Hat denn niemand eine Idee, wie man dieses Problem lösen kann???
Hat denn niemand sonst das selbe Problem???
Vielleicht hat es ja gar nichts mit lirc selbst zu tun, sondern mit evdev (dem Event-Interface-Kernelmodul).
Hat jemand eine Ahnung, ob man dieses Kernel-Modul irgendwie patchen kann, um die Empfindlichkeit des Eingabegeräts zu beeinflussen???
P.S. Ich habe es auch mit dem lirc-Treiber "hauppauge_dvb" versucht, aber ich vermute mal, daß dieses nur mit einem 2.4er Kernel funktioniert, da ich es mit dem /dev/lirc/lirc0 Interface erst gar nicht zum Laufen gebracht habe (zwar hat lirc-dev im System-Log bestätigt, daß ein Device an Device-Node 61 erzeugt wurde, aber es wurde nicht wirklich in /dev auf meinem UDEV System erzeugt, und manuell mit mknod nachzuhelfen hat nichts gebracht, denn lircd hat nach dem Start dann trotzdem "no such device" gemeldet). Oder hat es jemand geschafft, diesen Treiber auf einem 2.6er Kernel zum Laufen zu bringen??? _________________ Las torturas mentales de la CIA |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|