This shows you the differences between two versions of the page.
mld:tutorials:fernbedienungen54serial [2018/04/14 15:56] MarMic [device anlegen] |
mld:tutorials:fernbedienungen54serial [2019/04/28 12:55] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Step by Step ir-serial mit ir-keytable ====== | ====== Step by Step ir-serial mit ir-keytable ====== | ||
+ | |||
+ | Die hier beschriebene Konfiguration ist inzwischen in das Setup übernommen worden. | ||
===== Liste der devices anzeigen ===== | ===== Liste der devices anzeigen ===== | ||
- | ''BVDR> ir-keytable | + | |
+ | <code> | ||
+ | BVDR> ir-keytable | ||
Found /sys/class/rc/rc0/ (/dev/input/event14) with: | Found /sys/class/rc/rc0/ (/dev/input/event14) with: | ||
Driver cx88xx, table rc-tevii-nec | Driver cx88xx, table rc-tevii-nec | ||
Line 10: | Line 14: | ||
bus: 1, vendor/product: d464:9022, version: 0x0001 | bus: 1, vendor/product: d464:9022, version: 0x0001 | ||
Repeat delay = 500 ms, repeat period = 125 ms | Repeat delay = 500 ms, repeat period = 125 ms | ||
- | '' | + | </code> |
hier sieht man nur das device der DVB Karte - dieses soll allerdings nicht genutzt werden. | hier sieht man nur das device der DVB Karte - dieses soll allerdings nicht genutzt werden. | ||
Line 17: | Line 22: | ||
festlegen an welchem COM Port es angeschloßen ist(hier com1) | festlegen an welchem COM Port es angeschloßen ist(hier com1) | ||
- | ''setserial /dev/ttyS0 uart none'' | + | <code>setserial /dev/ttyS0 uart none</code> |
nun die Treiber laden: | nun die Treiber laden: | ||
- | ''modprobe serial-ir'' | + | <code>modprobe serial-ir</code> |
dmesg sagt nun: | dmesg sagt nun: | ||
- | ''[ 3689.460620] serial_ir serial_ir.0: auto-detected active low receiver | + | <code>[ 3689.460620] serial_ir serial_ir.0: auto-detected active low receiver |
[ 3689.483767] Registered IR keymap rc-rc6-mce | [ 3689.483767] Registered IR keymap rc-rc6-mce | ||
[ 3689.484744] IR RC6 protocol handler initialized | [ 3689.484744] IR RC6 protocol handler initialized | ||
Line 29: | Line 34: | ||
[ 3689.506875] input: Serial IR type home-brew as /devices/platform/serial_ir.0/rc/rc1/input18 | [ 3689.506875] input: Serial IR type home-brew as /devices/platform/serial_ir.0/rc/rc1/input18 | ||
[ 3689.507978] ir-keytable[3573] | [ 3689.507978] ir-keytable[3573] | ||
- | [ 3689.516070] rc rc1: lirc_dev: driver serial_ir registered at minor = 1'' | + | [ 3689.516070] rc rc1: lirc_dev: driver serial_ir registered at minor = 1</code> |
==== Device Liste überprüfen ==== | ==== Device Liste überprüfen ==== | ||
nun überprüfen wir die Device List | nun überprüfen wir die Device List | ||
- | ''BVDR> ir-keytable | + | <code>BVDR> ir-keytable |
Found /sys/class/rc/rc1/ (/dev/input/event15) with: | Found /sys/class/rc/rc1/ (/dev/input/event15) with: | ||
Driver serial_ir, table rc-rc6-mce | Driver serial_ir, table rc-rc6-mce | ||
Line 49: | Line 54: | ||
Repeat delay = 500 ms, repeat period = 125 ms | Repeat delay = 500 ms, repeat period = 125 ms | ||
BVDR> | BVDR> | ||
- | '' | + | </code> |
das Device rc1 ist nun vorhanden aber es empfängt noch keine Daten, da das Protokol falsch ist. | das Device rc1 ist nun vorhanden aber es empfängt noch keine Daten, da das Protokol falsch ist. | ||
==== device test mit evtest ==== | ==== device test mit evtest ==== | ||
- | ''BVDR> evtest | + | <code>BVDR> evtest |
No device specified, trying to scan all of /dev/input/event* | No device specified, trying to scan all of /dev/input/event* | ||
Available devices: | Available devices: | ||
Line 61: | Line 66: | ||
/dev/input/event15: Serial IR type home-brew | /dev/input/event15: Serial IR type home-brew | ||
Select the device event number [0-15]: | Select the device event number [0-15]: | ||
- | '' | + | </code> |
event15 ist unser Empfänger er hat aber noch kein passendes Protokoll | event15 ist unser Empfänger er hat aber noch kein passendes Protokoll | ||
- | ''evtest /dev/input/event15 | + | <code>evtest /dev/input/event15 |
- | '' | + | </code> |
liefert noch keine TASTEN beim drücken. | liefert noch keine TASTEN beim drücken. | ||
Line 73: | Line 78: | ||
== Protokolle einzeln laden == | == Protokolle einzeln laden == | ||
- | ''BVDR> ir-keytable -s rc1 -p NEC | + | <code>BVDR> ir-keytable -s rc1 -p NEC |
Protocols changed to nec | Protocols changed to nec | ||
- | '' | + | </code> |
NEC ersetzen durch den Namen des zu testenden Protokolls | NEC ersetzen durch den Namen des zu testenden Protokolls | ||
in unserem Fall sagt ir-keytable: | in unserem Fall sagt ir-keytable: | ||
- | ''Supported protocols: lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp'' | + | <code>Supported protocols: lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp</code> |
nun mit evtest Testen: | nun mit evtest Testen: | ||
- | ''BVDR> evtest /dev/input/event15 | + | <code>BVDR> evtest /dev/input/event15 |
Input driver version is 1.0.1 | Input driver version is 1.0.1 | ||
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100 | Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100 | ||
Line 169: | Line 174: | ||
Event: time 1523714088.877285, type 4 (EV_MSC), code 4 (MSC_SCAN), value 00 | Event: time 1523714088.877285, type 4 (EV_MSC), code 4 (MSC_SCAN), value 00 | ||
Event: time 1523714088.877285, -------------- SYN_REPORT ------------ | Event: time 1523714088.877285, -------------- SYN_REPORT ------------ | ||
- | '' | + | </code> |
Es sieht gut aus - wir haben scan codes ABER noch keine Zuweißung. | Es sieht gut aus - wir haben scan codes ABER noch keine Zuweißung. | ||
+ | |||
+ | == EINFACH ALLE Protokolle laden == | ||
+ | Man lädt einfach mit -p alle Protokolle die laut ir-keytable unterstützt werden aufeinmal rein: | ||
+ | <code>BVDR> ir-keytable -s rc1 -p lirc -p rc-5 -p rc-5-sz -p jvc -p sony -p nec -p sanyo -p mce_kbd -p rc-6 -p sharp -p x | ||
+ | mp | ||
+ | Protocols changed to lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp | ||
+ | </code> | ||
+ | |||
+ | Damit sollten aufjedenfall wieder keycodes funktionieren! | ||
+ | <code> | ||
+ | BVDR> evtest /dev/input/event15 | ||
+ | Input driver version is 1.0.1 | ||
+ | Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100 | ||
+ | Input device name: "Serial IR type home-brew" | ||
+ | Supported events: | ||
+ | Event type 0 (EV_SYN) | ||
+ | Event type 1 (EV_KEY) | ||
+ | Event code 28 (KEY_ENTER) | ||
+ | Event code 103 (KEY_UP) | ||
+ | Event code 105 (KEY_LEFT) | ||
+ | Event code 106 (KEY_RIGHT) | ||
+ | Event code 108 (KEY_DOWN) | ||
+ | Event code 111 (KEY_DELETE) | ||
+ | Event code 113 (KEY_MUTE) | ||
+ | Event code 114 (KEY_VOLUMEDOWN) | ||
+ | Event code 115 (KEY_VOLUMEUP) | ||
+ | Event code 119 (KEY_PAUSE) | ||
+ | Event code 128 (KEY_STOP) | ||
+ | Event code 142 (KEY_SLEEP) | ||
+ | Event code 161 (KEY_EJECTCD) | ||
+ | Event code 164 (KEY_PLAYPAUSE) | ||
+ | Event code 167 (KEY_RECORD) | ||
+ | Event code 168 (KEY_REWIND) | ||
+ | Event code 174 (KEY_EXIT) | ||
+ | Event code 207 (KEY_PLAY) | ||
+ | Event code 208 (KEY_FASTFORWARD) | ||
+ | Event code 210 (KEY_PRINT) | ||
+ | Event code 212 (KEY_CAMERA) | ||
+ | Event code 224 (KEY_BRIGHTNESSDOWN) | ||
+ | Event code 225 (KEY_BRIGHTNESSUP) | ||
+ | Event code 226 (KEY_MEDIA) | ||
+ | Event code 352 (KEY_OK) | ||
+ | Event code 356 (KEY_POWER2) | ||
+ | Event code 358 (KEY_INFO) | ||
+ | Event code 365 (KEY_EPG) | ||
+ | Event code 366 (KEY_PVR) | ||
+ | Event code 368 (KEY_LANGUAGE) | ||
+ | Event code 369 (KEY_TITLE) | ||
+ | Event code 370 (KEY_SUBTITLE) | ||
+ | Event code 372 (KEY_ZOOM) | ||
+ | Event code 373 (KEY_MODE) | ||
+ | Event code 377 (KEY_TV) | ||
+ | Event code 385 (KEY_RADIO) | ||
+ | Event code 386 (KEY_TUNER) | ||
+ | Event code 387 (KEY_PLAYER) | ||
+ | Event code 389 (KEY_DVD) | ||
+ | Event code 392 (KEY_AUDIO) | ||
+ | Event code 393 (KEY_VIDEO) | ||
+ | Event code 398 (KEY_RED) | ||
+ | Event code 399 (KEY_GREEN) | ||
+ | Event code 400 (KEY_YELLOW) | ||
+ | Event code 401 (KEY_BLUE) | ||
+ | Event code 402 (KEY_CHANNELUP) | ||
+ | Event code 403 (KEY_CHANNELDOWN) | ||
+ | Event code 407 (KEY_NEXT) | ||
+ | Event code 412 (KEY_PREVIOUS) | ||
+ | Event code 425 (KEY_PRESENTATION) | ||
+ | Event code 430 (KEY_MESSENGER) | ||
+ | Event code 512 (KEY_NUMERIC_0) | ||
+ | Event code 513 (KEY_NUMERIC_1) | ||
+ | Event code 514 (KEY_NUMERIC_2) | ||
+ | Event code 515 (KEY_NUMERIC_3) | ||
+ | Event code 516 (KEY_NUMERIC_4) | ||
+ | Event code 517 (KEY_NUMERIC_5) | ||
+ | Event code 518 (KEY_NUMERIC_6) | ||
+ | Event code 519 (KEY_NUMERIC_7) | ||
+ | Event code 520 (KEY_NUMERIC_8) | ||
+ | Event code 521 (KEY_NUMERIC_9) | ||
+ | Event code 522 (KEY_NUMERIC_STAR) | ||
+ | Event code 523 (KEY_NUMERIC_POUND) | ||
+ | Event type 4 (EV_MSC) | ||
+ | Event code 4 (MSC_SCAN) | ||
+ | Key repeat handling: | ||
+ | Repeat type 20 (EV_REP) | ||
+ | Repeat code 0 (REP_DELAY) | ||
+ | Value 500 | ||
+ | Repeat code 1 (REP_PERIOD) | ||
+ | Value 125 | ||
+ | Properties: | ||
+ | Testing ... (interrupt to exit) | ||
+ | Event: time 1523714338.384568, type 4 (EV_MSC), code 4 (MSC_SCAN), value 11 | ||
+ | Event: time 1523714338.384568, -------------- SYN_REPORT ------------ | ||
+ | Event: time 1523714339.225618, type 4 (EV_MSC), code 4 (MSC_SCAN), value 12 | ||
+ | Event: time 1523714339.225618, -------------- SYN_REPORT ------------ | ||
+ | Event: time 1523714339.360765, type 4 (EV_MSC), code 4 (MSC_SCAN), value 12 | ||
+ | Event: time 1523714339.360765, -------------- SYN_REPORT ------------ | ||
+ | Event: time 1523714339.918255, type 4 (EV_MSC), code 4 (MSC_SCAN), value 15 | ||
+ | Event: time 1523714339.918255, -------------- SYN_REPORT ------------ | ||
+ | Event: time 1523714340.048912, type 4 (EV_MSC), code 4 (MSC_SCAN), value 15 | ||
+ | Event: time 1523714340.048912, -------------- SYN_REPORT ------------ | ||
+ | </code> | ||
+ | |||
+ | Wie auf bei Möglichkeit eins muss man diese nun einem Key zuweißen oder man hat bereits eine map datei und lädt diese. | ||
+ | |||
+ | ===== scan codes einem Key zuweisen ===== | ||
+ | nun haben wir scan codes also weisen wir diese nun den Tasten zu: | ||
+ | Beispiel mit Taste 1. | ||
+ | Bei Taste 1 kommt folgende evtest Ausgabe: | ||
+ | <code>Event: time 1523714338.384568, type 4 (EV_MSC), code 4 (MSC_SCAN), value 11 | ||
+ | Event: time 1523714338.384568, -------------- SYN_REPORT </code> | ||
+ | |||
+ | der scan code ist somit 11 und dieser muss nun Key_1 zugewiesen werden. | ||
+ | |||
+ | dazuerstellt man eine Datei in /etc/rc_keymaps/name_der_remote und füllt diese mit folgender Syntax: | ||
+ | <code>0x[SCANCODE] LEERZEICHEN [KEY]</code> | ||
+ | also für uns Beispiel: | ||
+ | <code>0x11 KEY_1</code> | ||
+ | Speichern fertig! | ||
+ | |||
+ | ===== scan codes Key zuweisung testen ===== | ||
+ | Nun testen wir diese zuweißung indem wir die map auch mit laden -w. | ||
+ | |||
+ | <code>ir-keytable -s rc1 -c -p NEC -w /etc/rc_keymaps/rc-test-nec | ||
+ | Old keytable cleared | ||
+ | Wrote 1 keycode(s) to driver | ||
+ | Protocols changed to nec | ||
+ | </code> | ||
+ | |||
+ | es wurde ein keycode geladen (klar wir haben nur einen hinzugefügt). Dabei habe ich bewusst das richtige Protokoll eingefügt. | ||
+ | |||
+ | ir-keytable sieht nun so aus: | ||
+ | <code> ir-keytable | ||
+ | Found /sys/class/rc/rc1/ (/dev/input/event15) with: | ||
+ | Driver serial_ir, table rc-rc6-mce | ||
+ | Supported protocols: lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp | ||
+ | Enabled protocols: lirc nec | ||
+ | Name: Serial IR type home-brew | ||
+ | bus: 25, vendor/product: 0001:0001, version: 0x0100 | ||
+ | Repeat delay = 500 ms, repeat period = 125 ms | ||
+ | </code> | ||
+ | |||
+ | evtest sagt nun: | ||
+ | <code>evtest /dev/input/event15 | ||
+ | Input driver version is 1.0.1 | ||
+ | Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100 | ||
+ | Input device name: "Serial IR type home-brew" | ||
+ | Supported events: | ||
+ | Event type 0 (EV_SYN) | ||
+ | Event type 1 (EV_KEY) | ||
+ | Event code 2 (KEY_1) | ||
+ | Event type 4 (EV_MSC) | ||
+ | Event code 4 (MSC_SCAN) | ||
+ | Key repeat handling: | ||
+ | Repeat type 20 (EV_REP) | ||
+ | Repeat code 0 (REP_DELAY) | ||
+ | Value 500 | ||
+ | Repeat code 1 (REP_PERIOD) | ||
+ | Value 125 | ||
+ | Properties: | ||
+ | Testing ... (interrupt to exit) | ||
+ | </code> | ||
+ | es kann schon KEY_1 | ||
+ | <code>Event code 2 (KEY_1)</code> | ||
+ | |||
+ | das testen wir natürlich sofort in dem wir auf der Fernbedienung Taste 1 drücken: | ||
+ | <code>Testing ... (interrupt to exit) | ||
+ | Event: time 1523715061.010631, type 4 (EV_MSC), code 4 (MSC_SCAN), value 11 | ||
+ | Event: time 1523715061.010631, type 1 (EV_KEY), code 2 (KEY_1), value 1 | ||
+ | Event: time 1523715061.010631, -------------- SYN_REPORT ------------ | ||
+ | Event: time 1523715061.145434, type 4 (EV_MSC), code 4 (MSC_SCAN), value 11 | ||
+ | Event: time 1523715061.145434, -------------- SYN_REPORT ------------ | ||
+ | Event: time 1523715061.402358, type 1 (EV_KEY), code 2 (KEY_1), value 0 | ||
+ | Event: time 1523715061.402358, -------------- SYN_REPORT ------------ | ||
+ | </code> | ||
+ | alles wie gewollt. So geht man nun weiter vor, bis man alle Tasten angelernt hat, oder man lädt eine bereits enthaltene datei aus /etc/rc_keymaps oder /lib/udev/rc_keymaps | ||
+ | |||
+ | ====== Anpassungen für den RPi ====== | ||
+ | In der Datei /boot/config.txt muss jetzt "dtoverlay=lirc-rpi" geändert werden in: | ||
+ | <code>dtoverlay=gpio-ir,rc-map-name=rc-hauppauge</code> | ||
+ | Weiterhin ist in der /etc/rc_maps.cfg die Zeile "ir-kbd-i2c rc-hauppauge /etc/rc_keymaps/rc-hauppauge" wie folgt auszutauschen: | ||
+ | <code>gpio_ir_recv rc-hauppauge /etc/rc_keymaps/rc-hauppauge</code> | ||
+ | Nachfolgend der Inhalt für die Datei /etc/rc_keymaps/rc-hauppauge für eine Harmony mit dem Profil KLS 1.6: | ||
+ | <code># table hauppauge, type: RC5, KLS1.6 | ||
+ | 0xb4c KEY_SELECT | ||
+ | 0xb0c KEY_POWER2 | ||
+ | 0xb70 KEY_TV | ||
+ | 0xb71 KEY_VIDEO | ||
+ | 0xb72 KEY_AUDIO | ||
+ | 0xb73 KEY_CAMERA | ||
+ | 0xb4b KEY_EPG | ||
+ | 0x130 KEY_RADIO | ||
+ | 0xb44 KEY_UP | ||
+ | 0xb45 KEY_DOWN | ||
+ | 0xb46 KEY_LEFT | ||
+ | 0xb47 KEY_RIGHT | ||
+ | 0xb48 KEY_OK | ||
+ | 0xb4a KEY_ESC | ||
+ | 0xb49 KEY_MENU | ||
+ | 0xb10 KEY_VOLUMEUP | ||
+ | 0xb11 KEY_VOLUMEDOWN | ||
+ | 0xb22 KEY_PREVIOUS | ||
+ | 0xb0d KEY_MUTE | ||
+ | 0xb20 KEY_CHANNELUP | ||
+ | 0xb21 KEY_CHANNELDOWN | ||
+ | 0xb37 KEY_RECORD | ||
+ | 0xb36 KEY_STOP | ||
+ | 0xb32 KEY_REWIND | ||
+ | 0xb35 KEY_PLAY | ||
+ | 0xb34 KEY_FASTFORWARD | ||
+ | 0xb30 KEY_PREVIOUSSONG | ||
+ | 0xb33 KEY_PAUSE | ||
+ | 0xb31 KEY_NEXTSONG | ||
+ | 0xb01 KEY_1 | ||
+ | 0xb02 KEY_2 | ||
+ | 0xb03 KEY_3 | ||
+ | 0xb04 KEY_4 | ||
+ | 0xb05 KEY_5 | ||
+ | 0xb06 KEY_6 | ||
+ | 0xb07 KEY_7 | ||
+ | 0xb08 KEY_8 | ||
+ | 0xb09 KEY_9 | ||
+ | 0xb08 KEY_TEXT | ||
+ | 0xb00 KEY_0 | ||
+ | 0xb78 KEY_SUBTITLE | ||
+ | 0xb40 KEY_RED | ||
+ | 0xb41 KEY_GREEN | ||
+ | 0xb42 KEY_YELLOW | ||
+ | 0xb43 KEY_BLUE | ||
+ | </code> | ||
+ | |||
+ | Der Inhalt stammt aus mehreren Forumsbeiträgen zu diesem Thema [[http://www.minidvblinux.de/forum/index.php/topic,9090.0.html|u.a. diesem Beitrag]] | ||