Es gibt wieder viel zu lesen:
lirc_options.conf sieht jetzt so aus:
[lircd]
nodaemon = False
driver = default
device = /dev/lirc0
output = /var/run/lirc/lircd
pidfile = /var/run/lirc/lircd.pid
plugindir = /usr/lib/lirc/plugins
permission = 666
allow-simulate = No
repeat-max = 600
#effective-user =
#listen = [address:]port
#connect = host[:port]
#loglevel = 6
#uinput = ...
#release = ...
#logfile = ...
[lircmd]
uinput = False
nodaemon = False
[modinit]
# code = /usr/sbin/modprobe lirc_serial
# code1 = /usr/bin/setfacl -m g:lirc:rw /dev/uinput
# code2 = ...
code = setserial /dev/ttyS0 uart none
code1 = modprobe serial_ir
#code2 = /usr/bin/echo rc-5 > /sys/class/rc/rc0/protocols
lircd ist gestartet.
modprobe -r serial_ir ausgeführt.
lsmod schreibt kein serial_ir mehr geladen.
systemctl restart lircd ausgeführt.
# systemctl status lircd
● lircd.service - Flexible IR remote input/output application support
Loaded: loaded (/usr/lib/systemd/system/lircd.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2017-04-21 17:03:37 CEST; 1min 23s ago
Docs: man:lircd(8)
http://lirc.org/html/configure.html
Main PID: 1203 (lircd)
Tasks: 2 (limit: 4915)
CGroup: /system.slice/lircd.service
└─1203 /usr/sbin/lircd --nodaemon
Apr 21 17:03:37 gregina2 lircd-0.10.0-devel[1203]: Notice: Options: configfile: /etc/lirc/lircd.conf
Apr 21 17:03:37 gregina2 lircd-0.10.0-devel[1203]: Notice: Options: dynamic_codes: (null)
Apr 21 17:03:37 gregina2 lircd-0.10.0-devel[1203]: Notice: Current driver: default
Apr 21 17:03:37 gregina2 lircd-0.10.0-devel[1203]: Notice: Driver API version: 3
Apr 21 17:03:37 gregina2 lircd-0.10.0-devel[1203]: Notice: Driver version: 0.9.4
Apr 21 17:03:37 gregina2 lircd-0.10.0-devel[1203]: Notice: Driver info: See file:///usr/share/doc/lirc/plugindocs/default.html
Apr 21 17:03:37 gregina2 lircd-0.10.0-devel[1203]: Info: lircd: Opening log, level: Info
Apr 21 17:03:37 gregina2 lircd-0.10.0-devel[1203]: Warning: Running as root
Apr 21 17:03:37 gregina2 lircd-0.10.0-devel[1203]: Info: Using remote: palcomtest.
Apr 21 17:03:37 gregina2 lircd-0.10.0-devel[1203]: Notice: lircd(default) ready, using /var/run/lirc/lircd
cat protocols zeigt das an:
cat /sys/class/rc/rc0/protocols
other unknown rc-5 nec rc-6 jvc sony rc-5-sz sanyo sharp mce_kbd xmp cec [lirc]
Ich nehme mal an, dass in den []Klammern das aktuell aktive Protokoll steht.
Dann ein
echo rc-5 > /sys/class/rc/rc0/protocols
[root@gregina2 gl]# cat /sys/class/rc/rc0/protocols
other unknown [rc-5] nec rc-6 jvc sony rc-5-sz sanyo sharp mce_kbd xmp cec [lirc]
zeigt jetzt rc-5 zusätzlich in Klammern.
Ein mode2 bringt Aktivität raus:
# mode2
Using driver default on device /dev/lirc0
Trying device: /dev/lirc0
Using device: /dev/lirc0
Warning: Running as root.
space 16777215
pulse 251
space 504470
pulse 8996
...
...
irrecord ohne Parameter eingegeben:
irrecord palcomneu.conf
Die Prozedur mit einigen Tasten durchgeführt und die palcomneu.conf ins Verzeichnis /etc/lirc/lircd.conf.d/ kopiert.
Den Kommentator vor code2 in der lirc_options.conf entfernt.
lircd neu gestartet, cat ..protocols nochmal angesehen, rc-5 ist allerdings nicht in Klammern sondern nur lirc.
irw ausgeführt, klappt nicht. Das gleiche Spiel wie vorher. Die palcmneu.conf sieht auch nicht so aus wie die alte palcom.conf.
Jetzt nochmal neu:
Feststellen auf welchen Protokollen die Fernbedienungen laufen:
Dazu habe ich den devinput mit dem eventdingens benutzt.
lirc_options.conf wie folgt:
[lircd]
nodaemon = False
driver = devinput
device = /dev/input/by-path/platform-serial_ir.0-event-ir
output = /var/run/lirc/lircd
pidfile = /var/run/lirc/lircd.pid
plugindir = /usr/lib/lirc/plugins
permission = 666
allow-simulate = No
repeat-max = 600
#effective-user =
#listen = [address:]port
#connect = host[:port]
#loglevel = 6
#uinput = ...
#release = ...
#logfile = ...
[lircmd]
uinput = False
nodaemon = False
[modinit]
# code = /usr/sbin/modprobe lirc_serial
# code1 = /usr/bin/setfacl -m g:lirc:rw /dev/uinput
# code2 = ...
code = setserial /dev/ttyS0 uart none
code1 = modprobe serial_ir
code2 = /usr/bin/echo nec > /sys/class/rc/rc0/protocols
# [lircd-uinput]
# release-timeout = 200
den Daemon lircd und mode2 gestartet.
Zu Anfangs erst unter code2 rc-5 eingetragen und mit mode2 da kam nichts.
Alle Protokolle durchprobiert. Bei der Fernbedienung palcom und bei der Fernbedienung strong wurde dann beim Protokol nec das angezeigt:
# systemctl restart lircd
[root@gregina2 gl]# mode2
Using driver devinput on device /dev/input/by-path/platform-serial_ir.0-event-ir
Trying device: /dev/input/by-path/platform-serial_ir.0-event-ir
Using device: /dev/input/by-path/platform-serial_ir.0-event-ir
Warning: Running as root.
code: 0x1134fa5800000000eab60d00000000000400040011020200
code: 0x1134fa5800000000eab60d00000000000000000000000000
code: 0x1234fa5800000000887d0d00000000000400040011020200
code: 0x1234fa5800000000887d0d00000000000000000000000000
Auch ein cat protocols kam das raus:
# cat /sys/class/rc/rc0/protocols
other unknown rc-5 [nec] rc-6 jvc sony rc-5-sz sanyo sharp mce_kbd xmp cec [lirc]
So, das ist ja mal wenigstens etwas. Jetzt weiß ich schonmal was für ein Protokoll die Dinger haben.
Eine Grundig Fernbedienung habe ich nicht ans laufen gebracht. Es könnte eine andere Trägerfrequenz sein. Mein Empfänger hat den TSOP1738 mit 38khz. Falls die Grundig Fernbedienung eine andere Frequenz hat, dann kann ich diese mit meinen Empfänger nicht auslesen.
Sieht so aus, dass ich mich noch weiter mit dem Kram rumschlagen muss. Ich versuche es dann mit devinput Treiber + ir-keytable.
Ist schon sehr schade, früher ging das alles ohne Probleme. Ich weiß nicht was die lirc Leute sich dabei gedacht haben. Und die Dokus sind nicht gerade sehr hilfreich.
Dann viel mir noch ein, ich habe noch eine uralt Knoppix CD. Die habe ich mal gebootet. Leider war da kein LIRC installiert, kein irrecord. -- Auch nix.
Dank nochmal an xafnir.
Gruß Greg
Nachtrag, Beschreibung wie man eine keymap macht mit Benutzung des devinput Treibers und des eventdevices.
Wenn als Treiber der devinput und das device /dev/input/by-path/platform-serial_ir.0-event-ir benutzt wird, so ist darauf zu achten, dass man die /etc/lirc/lircd.conf.d/devinput.lircd.conf benutzen muss. Also am Ende kein .dist sondern .conf. Andere conf Dateien in diesem Verzeichnis auf .dist umbenennen damit diese dann unwirksam werden.
Hat man wie weiter oben beschrieben das Protokoll ermittelt, sollte in der Zeile code2 das Protokoll eingetragen sein. Siehe oben, als Beispiel nec.
systemctl restart lircd
Das richtige Protokoll übernommen? (In diesem Fall NEC).
# cat /sys/class/rc/rc0/protocols
other unknown rc-5 [nec] rc-6 jvc sony rc-5-sz sanyo sharp mce_kbd xmp cec [lirc]
Eine keymap anlegen:
Eine ähnliche keymap suchen in /lib/udev/rc_keymaps/
Es wurde was ausgewählt was dem nec Protokoll am nächsten liegt.
nec_terratec_cinergy_xs
Diese kopieren nach /etc/rc_keymaps/neuekeymaps
Die obere Zeile anpassen nach Namen der Fernbedienung und Protokoll
# table nec_terratec_cinergy_xs, type: NEC
0x1441 KEY_HOME
...
ändern in
# table neuekeymaps, type: NEC
0x1441 KEY_HOME
...
Ein Terminal aufmachen und mit ir-keytable -c -p NEC -t eine Taste der Fernbedienung betätigen.
Taste 1 ergibt 1492859022.785723: event type EV_MSC(0x04): scancode = 0xc099
Eintragen in die neuekeymaps 0xc099 KEY_1 . Das Ganze mit allen Tasten der Fernbedienung durchführen und die Codes anpassen. Falls eine Taste fehlt, dann diese zusätzlich eintragen. Zu viele Tasten in der keymaps löschen.
Es ist darauf zu Achten, dass die Tastenbezeichnung mit den Namen aus /etc/lirc/devinput.lircd.conf unbedingt übereinstimmen müssen. Sind alle Tasten durch und die keymap fertig, so muss diese übernommen werden.
Die neue keytable übernehmen:
# ir-keytable -c -w /etc/rc_keymaps/neuekeymaps
Read neuekeymaps table
Old keytable cleared
Wrote 34 keycode(s) to driver
Protocols changed to nec
Quelle:
https://wiki.ubuntuusers.de/Kodi_Remote/
Nach dem Neustart des Rechners funktioniert das wieder nicht.
Damit die keytable beim initialisieren des lircd Daemon geladen wird, muß noch in der /etc/lirc_option.conf eine Zeile eingefügt werden.
code3 = ir-keytable -c -w /etc/rc_keymaps/neuekeymaps
Das Resultat ist, die Fernbedienung funktioniert. Allerdings ist auch bei mir der Fehler drin wie es schon xafnir beschrieben hat. Wird eine Taste betätigt, so wird zuerst der Code ausgegeben der von der Taste zuvor erzeugt wurde.
Ja, ich weiß, es ist sehr viel zu lesen. Da aber die bisherigen Dokus nicht ausreichend waren, könnte das für so Manchem hilfreich sein. Wenn das mit den Tastencodefehler nicht wäre, dann hätte ich ein Wiki daraus gemacht.
Bis denn..
Greg