staging.inyokaproject.org

OK-Taste ohne Funktion bei x10-Fernbedienung/kodi

Status: Gelöst | Ubuntu-Version: Xubuntu 16.04 (Xenial Xerus)
Antworten |

tommi0815

Anmeldungsdatum:
2. März 2011

Beiträge: 10

Hallo,

habe eine X10 Fernbedienung installiert, um sie in kodi zu nutzen. Sie funktioniert. Leider geht die wichtigste Taste namens "OK" nicht. Beim Testen wird der Scancode 0x1e ausgegeben.

/etc/rc_keymaps# sudo ir-keytable -c -p NEC,RC-5,RC-6,JVC,SONY -t 
Old keytable cleared
Invalid protocols selected
Couldn't change the IR protocols
Testing events. Please, press CTRL-C to abort.
1571494129.551458: event type EV_MSC(0x04): scancode = 0x1e
1571494129.551458: event type EV_SYN(0x00).

Unter /etc/rc_keymaps steht "medion_x10_or2x". Öffne ich das, gibt es die Zeile "0x1e KEY_OK". Gebe ich ir-keytable ein:

# sudo ir-keytable
Found /sys/class/rc/rc0/ (/dev/input/event14) with:
	Driver ati_remote, table rc-medion-x10-or2x
	Supported protocols: other 
	Enabled protocols: other 
	Name: X10 WTI RF receiver
	bus: 3, vendor/product: 0bc7:0006, version: 0x0100
	Repeat delay = 500 ms, repeat period = 125 ms#!code bash

so zeigt er mir auch medion_x10_or2x an. Nun schaue ich mir die Liste der möglichen Keys an und da steht aber "0x160".

# cat input-event-codes.h | grep 'KEY_OK'
#define KEY_OK			0x160

Erfolglose Versuche meinerseits:

1. input-event-codes.h editiert zu "KEY_OK 0x1e" - kein Erfolg

2. Datei medion_x10_or_x2 "KEY_OK" in "KEY_ENTER" geändert: kein Erfolg

Ich würde mich sehr freuen, wenn mir jemand helfen könnte! Besten Dank!

pepre Team-Icon

Supporter
Avatar von pepre

Anmeldungsdatum:
31. Oktober 2005

Beiträge: 6450

X10 Fernbedienung

Boah, ist die häßlich! 🤓

Du reichst die Fernbedienung direkt an Kodi durch?

Wenn ja: kucke in den Foren bei Kodi nach. S. https://kodi.wiki/view/Keymap.

Wenn nein: dann ist das wohl ein LIRC-Problem, s. auch Kodi Remote.

Per se wirst du eine Datei mit dem Keymapping ändern müssen. Kein großes Problem, aber wo liegt sie bloß? 😉

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 10978

tommi0815 schrieb:

Hallo,

habe eine X10 Fernbedienung installiert, um sie in kodi zu nutzen. Sie funktioniert. Leider geht die wichtigste Taste namens "OK" nicht.

Der X-Server kann nur Tastencodes bis 255 verarbeiten, KEY_OK hat den Tastencode 0x160 = 352 (vgl. torvalds/linux/blob/master/include/uapi/linux/input-event-codes.h)

Beim Testen wird der Scancode 0x1e ausgegeben.

Dem Scancode kannst man über eine Keymap eine Taste zuordnen, die dann auf dem Kernel Input Device ausgegeben wird, das vom Treiber für den Fernbedienungsempfänger angelegt wird.

Erfolglose Versuche meinerseits:

1. input-event-codes.h editiert zu "KEY_OK 0x1e" - kein Erfolg

Das hat keinen Effekt, weil die Header-Dateien nur beim Kompilieren genutzt werden, aber nicht zur Laufzeit. Und ich glaube nicht, dass du den Kernel neu kompilieren willst (und wenn müsste man wie schon geschrieben den Keycode ⇐ 255 machen)...

2. Datei medion_x10_or_x2 "KEY_OK" in "KEY_ENTER" geändert: kein Erfolg

Welche Datei hast du da genau geändert? Die standardmäßig genutzten Keymaps sind ja fest einkompiliert (torvalds/linux/blob/master/drivers/media/rc/keymaps/rc-medion-x10-or2x.c), wenn du etwas anderes nutzen willst, solltest du den absoluten Pfad zu der gewünschten Keymap angeben. Und nach der Änderung müsstest du auf jeden Fall die Keytable neu laden lassen (passiert beim Neustart durch eine udev-Regel automatisch).

Eine eigene Keymap könnte z.B. so aussehen: yavdr/yavdr-remote/blob/master/rc_keymaps/rc-medion-x10-or2x und in /etc/rc_keymaps/rc-medion-x10-or2x' abgelegt werden. Der dazugehörige Eintrag in der /etc/rc_maps.cfg würde dann so aussehen:

ati_remote    rc-medion-x10-or2x         /etc/rc_keymaps/rc-medion-x10-or2x

tommi0815

(Themenstarter)

Anmeldungsdatum:
2. März 2011

Beiträge: 10

Vielen Dank für Deine Mühe seahawk1986, mein Mainboard mußte leider zur Garantiereparatur. Ich würde das hier sehr gern fortsetzen, wenn ich es zurück habe. Würde mich freuen, wenn Du Dein Fachwissen dann nochmal mit mir teilen könntest. Melde mich. Vielen Dank nochmals. Grüße aus dem Norden tommi0815

tommi0815

(Themenstarter)

Anmeldungsdatum:
2. März 2011

Beiträge: 10

Hallo, da bin ich wieder,

habe mit neuer Hardware eine Neuinstallation vorgenommen und festgestellt, daß die X10 ohne irgenndwelche Installationen ohne LIRC schon mit KODI spricht. Leider nur wenige Tasten, genauso wie vorher auch. Ich bin nach dieser guten Anleitung vorgegangen: //wiki.ubuntuusers.de/Kodi_Remote/:

Ich kann aber mangels Berechtigung die Keymap nicht ändern:

1
2
3
4
5
6
# sudo ir-keytable -c -w /etc/rc_keymaps/medion_x10_or2x 
Read medion_x10_or2x table
Old keytable cleared
Wrote 45 keycode(s) to driver
/sys/class/rc/rc0//protocols: Keine Berechtigung
Couldn't change the IR protocolsCode

Nun habe ich auch keine bessere Idee gehabt als die Rechte zu ändern:

1
# chmod -R u+w /sys/class/rc/rc0//protocols

Das führt nur dazu:

1
2
3
4
5
6
sudo ir-keytable -c -w /etc/rc_keymaps/medion_x10_or2x 
Read medion_x10_or2x table
Old keytable cleared
Wrote 45 keycode(s) to driver
/sys/class/rc/rc0//protocols: Eingabe-/Ausgabefehler
Couldn't change the IR protocolsCode

Auch 777 bringt nichts. Ich weiß nicht mehr weiter und bin vom googeln fast blind. Kann mir bitte jemand einen Tipp geben, wie das Protokoll "others" durch das X10 ersetze?

Vielen Dank

tommi0815

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 10978

Wie schon geschrieben sieht der X-Server keine Tastendrücke mit einem Tastencode von über 255 - wie sieht die Keytable denn aus, die du laden lässt? Dass er das Protokoll nicht ändern kann ist kein Problem, der Empfänger bleibt dann einfach bei dem einzigen, das er beherrscht.

Bleys

Avatar von Bleys

Anmeldungsdatum:
13. August 2006

Beiträge: 6053

gerade unter 18.04 gestestet:

In der kopierten /etc/rc_keymaps/medion_x10_or2x habe ich nur

0x1e KEY_OK

zu

0x1e KEY_ENTER

geändert. Danach:

1
2
3
4
5
6
sudo ir-keytable -c -w /etc/rc_keymaps/medion_x10_or2x
Lesen von Tabelle medion_x10_or2x
alte Schlüsseltabelle geleert
45 Schlüsselcode(s) wurden in den Treiber geschrieben.
Die Protokolle für das Gerät können nicht geändert werden
Protokolle geändert in other 

Trotz der Ausgabe "Die Protokolle für das Gerät können nicht geändert werden" wurden alle Codes geschrieben und Betätigen von OK auf der FB löst ein ENTER aus.

FB Typ: RF MCE Remote Control, Model OR22V (Funkfernbedienung)

tommi0815

(Themenstarter)

Anmeldungsdatum:
2. März 2011

Beiträge: 10

Danke.

Das Problem mit der 255, das seahawk1986 beschrieb, sollte nicht mehr da sein. Benutze kein LIRC mehr. Diese Tabellen waren bereits so im System. Bei /etc/rc_keymaps/medion_x10_or2x steht in Zeile 23 "0x1e KEY_ENTER" und in 44 "0x36 KEY_ENTER". Das OK habe ich da bereits zu ENTER geändert, wie Bleys schrieb. Danke für den Hinweis.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# table medion_x10_or2x, type: OTHER
0x02 KEY_POWER
0x16 KEY_TEXT
0x09 KEY_VOLUMEUP
0x08 KEY_VOLUMEDOWN
0x00 KEY_MUTE
0x0b KEY_CHANNELUP
0x0c KEY_CHANNELDOWN
0x32 KEY_RED
0x33 KEY_GREEN
0x34 KEY_YELLOW
0x35 KEY_BLUE
0x18 KEY_PVR
0x04 KEY_DVD
0x31 KEY_EPG
0x1c KEY_TV
0x20 KEY_BACK
0x2f KEY_INFO
0x1a KEY_UP
0x22 KEY_DOWN
0x1d KEY_LEFT
0x1f KEY_RIGHT
0x1e KEY_ENTER
0x1b KEY_MEDIA
0x21 KEY_PREVIOUS
0x23 KEY_NEXT
0x24 KEY_REWIND
0x26 KEY_FORWARD
0x25 KEY_PLAY
0x28 KEY_STOP
0x29 KEY_PAUSE
0x27 KEY_RECORD
0x0d KEY_1
0x0e KEY_2
0x0f KEY_3
0x10 KEY_4
0x11 KEY_5
0x12 KEY_6
0x13 KEY_7
0x14 KEY_8
0x15 KEY_9
0x17 KEY_0
0x30 KEY_CLEAR
0x36 KEY_ENTER

# ir-keytable -r zeigt in Zeile 43 aber "scancode 0x0036 = KEY_ENTER (0x1c)". Da steht 0x1c, nicht 0x1e wie in /etc/rc_keymaps/medion_x10_or2x.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
scancode 0x0000 = KEY_MUTE (0x71)
scancode 0x0002 = KEY_POWER (0x74)
scancode 0x0004 = KEY_DVD (0x185)
scancode 0x0008 = KEY_VOLUMEDOWN (0x72)
scancode 0x0009 = KEY_VOLUMEUP (0x73)
scancode 0x000b = KEY_CHANNELUP (0x192)
scancode 0x000c = KEY_CHANNELDOWN (0x193)
scancode 0x000d = KEY_1 (0x02)
scancode 0x000e = KEY_2 (0x03)
scancode 0x000f = KEY_3 (0x04)
scancode 0x0010 = KEY_4 (0x05)
scancode 0x0011 = KEY_5 (0x06)
scancode 0x0012 = KEY_6 (0x07)
scancode 0x0013 = KEY_7 (0x08)
scancode 0x0014 = KEY_8 (0x09)
scancode 0x0015 = KEY_9 (0x0a)
scancode 0x0016 = KEY_TEXT (0x184)
scancode 0x0017 = KEY_0 (0x0b)
scancode 0x0018 = KEY_PVR (0x16e)
scancode 0x001a = KEY_UP (0x67)
scancode 0x001b = KEY_MEDIA (0xe2)
scancode 0x001c = KEY_TV (0x179)
scancode 0x001d = KEY_LEFT (0x69)
scancode 0x001e = KEY_ENTER (0x1c)
scancode 0x001f = KEY_RIGHT (0x6a)
scancode 0x0020 = KEY_BACK (0x9e)
scancode 0x0021 = KEY_PREVIOUS (0x19c)
scancode 0x0022 = KEY_DOWN (0x6c)
scancode 0x0023 = KEY_NEXT (0x197)
scancode 0x0024 = KEY_REWIND (0xa8)
scancode 0x0025 = KEY_PLAY (0xcf)
scancode 0x0026 = KEY_FORWARD (0x9f)
scancode 0x0027 = KEY_RECORD (0xa7)
scancode 0x0028 = KEY_STOP (0x80)
scancode 0x0029 = KEY_PAUSE (0x77)
scancode 0x002f = KEY_INFO (0x166)
scancode 0x0030 = KEY_CLEAR (0x163)
scancode 0x0031 = KEY_EPG (0x16d)
scancode 0x0032 = KEY_RED (0x18e)
scancode 0x0033 = KEY_GREEN (0x18f)
scancode 0x0034 = KEY_YELLOW (0x190)
scancode 0x0035 = KEY_BLUE (0x191)
scancode 0x0036 = KEY_ENTER (0x1c)
scancode 0x0037 = KEY_NUMERIC_STAR (0x20a)
scancode 0x0038 = KEY_NUMERIC_POUND (0x20b)
Enabled protocols: other 

# sudo ir-keytable gibt mir "table rc-medion-x10" aus. Das ist doch falsch, oder? Sollte da nicht "table medion_x10_or2x" wie in /etc/rc_keymaps/medion_x10_or2x stehen?

1
2
3
4
5
6
7
Found /sys/class/rc/rc0/ (/dev/input/event16) with:
	Driver ati_remote, table rc-medion-x10
	Supported protocols: other 
	Enabled protocols: other 
	Name: X10 Wireless Technology Inc USB 
	bus: 3, vendor/product: 0bc7:0006, version: 0x0100
	Repeat delay = 500 ms, repeat period = 125 ms

Freue mich auf Eure Ideen. Nochmals danke und schönen 1. Advent!

Grüße

tommi0815

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 10978

tommi0815 schrieb:

Danke.

Das Problem mit der 255, das seahawk1986 beschrieb, sollte nicht mehr da sein. Benutze kein LIRC mehr.

Dann tritt das Problem erst recht auf - wenn KODI vom Lirc-Sockel liest, dann zählt nur der Tastenname. Wenn die Tastendrücke vom X-Server verarbeitet werden, dann spielt der Keycode eine Rolle. Und du hast sowohl in der Keytable als auch in der Ausgelesenen Keymap Tasten, die Keycodes über 255 ( also größer als 0xff) haben.

Der Verlauf ist folgendermaßen: Der Kernel generiert für einen Tastendruck einen Scancode, der Scancode wird anhand der Keytable in einen Tastencode überführt. KEY_RED hat z.B. den Tastencode mit dem Hexadezimalwert 0x18e (also 398 dezimal). Da der Wert > 255 ist, kann der X-Server den Tastendruck nicht verarbeiten.

Du kannst jetzt entweder Tasten nutzen, die zwischen KEY_ESC und KEY_MICMUTE liegen, wenn der X-Server die weiterleiten können soll oder du nutzt einen der Dienste lircd, inputlirc oder eventlircd und lässt KODI von dem Lirc-Sockel lesen, da zählt dann nur der Tastenname.

# sudo ir-keytable gibt mir "table rc-medion-x10" aus. Das ist doch falsch, oder? Sollte da nicht "table medion_x10_or2x" wie in /etc/rc_keymaps/medion_x10_or2x stehen?

Der Name der Keymap wird vom Treiber festgelegt, nicht umgekehrt. Der Kopf der Keymap, die du laden willst, muss den von ir-keytabel angezeigten Namen nutzen, damit die Tastendefinitionen für den Empfänger geladen werden (oder du lässt die Kopfzeile ganz weg, das geht notfalls auch).

Bleys

Avatar von Bleys

Anmeldungsdatum:
13. August 2006

Beiträge: 6053

Das ist alles viel zu kompliziert ausgedrückt.

ir-keytable setzt Scancodes in Tastaturereignisse um. Kein lirc, kein lircinput! Kodi läßt sich komplett per Tastatur bedienen. Also besteht die einzige Aufgabe darin den Tasten der FB die passenden Tastaturereignisse zuzuordnen. Aus KEY_INFO wied KEY_I, aus KEY_MENU wird KEY_M, aus KEY_OK wird KEY_ENTER u.s.w.

Daher kommt das 255 Problem gar nicht zum tragen. KEY_RED z.B. hat keine Bedeutung für Kodi. Ich setze die Farbtasten für Kodi auf andere Funktionen. KEY_RED wird bei mir z.B. zu KEY_BACKSLASH zum Umschalten Vollbild/Fenster

Bei der X10 Funkfernbedienung kommt immer das Protokoll "other" zum Einsatz. Es spielt also keine Rolle wenn die Ausgabe sagt dass das Protokoll nicht geändert werden kann, es ist ja schon richtig. Die Codes werden geschrieben und funktionieren.

Was evtl. noch zu Problemen führen kann ist, wenn es mehrere Eingabe Geräte im System gibt und sich die Reihenfolge beim nächsten Start ändert. In diesen Fällen wird ir-keytable mit den Parametern --device oder --sysdev aufgerufen.

Ich habe schon dutzende X10 eingerichtet, auch für andere Zwecke als Kodi. Von 14.04 bis 18.04 funktioniert das überall ohne Probleme.

tommi0815

(Themenstarter)

Anmeldungsdatum:
2. März 2011

Beiträge: 10

Hallo nochmal, habe nochmals diese Anleitung: https://wiki.ubuntuusers.de/Kodi_Remote/ durchgeackert. Am Schluß, wie von Bleys beschrieben in der keytable KEY_OK zu KEY_ENTE geändert. Jetzt geht OK. Danke an alle Helfer tommi0815

Antworten |