Tom7320
Anmeldungsdatum: 2. Dezember 2007
Beiträge: 94
|
Moin! Ich versuche mich gerade an einer eigentlich ganz simplen Aufgabe: ich möchte das Programm irexec automatisch beim Booten starten. Dafür haben ich diesen Thread mit einer Lösung gefunden (ganz unten). Leider funktioniert das bei mir nicht: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | root@bee:~# systemctl status irexec
● irexec.service - LIRC Infrared Signal Exec
Loaded: loaded (/etc/systemd/system/irexec.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Di 2016-07-12 17:55:49 CEST; 2min 36s ago
Process: 782 ExecStart=/usr/sbin/irexec (code=exited, status=203/EXEC)
Main PID: 782 (code=exited, status=203/EXEC)
Jul 12 17:55:49 bee systemd[1]: Started LIRC Infrared Signal Exec.
Jul 12 17:55:49 bee systemd[1]: irexec.service: Main process exited, code=exited, status=203/EXEC
Jul 12 17:55:49 bee systemd[1]: irexec.service: Unit entered failed state.
Jul 12 17:55:49 bee systemd[1]: irexec.service: Failed with result 'exit-code'.
root@bee:~# cat /etc/systemd/system/irexec.service
[Unit]
Description=LIRC Infrared Signal Exec
[Service]
Type=simple
ExecStart=/usr/sbin/irexec
[Install]
WantedBy=multi-user.target
root@bee:~# ps -A | grep irexec
root@bee:~#
|
Warum klappt das nicht? Hat jemand mit mehr systemd Erfahrung vielleicht einen Tipp für mich? Ich würde mich freuen! Danke! Viele Grüße Thorsten
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11260
Wohnort: München
|
Welche Lirc-Version setzt du denn ein? In den Paketquellen von Ubuntu steckt ja noch die (alte) 0.9.0, die sehr wenig mit dem aktuellen Stand (die 0.9.4 ist ja erst vor kurzen rausgekommen) zu tun hat.
Damit die irexec.service so wie in dem Bugtracker beschrieben funktionieren kann, musst du es ermöglichen, dass lircd per Systemd Socket-Activation automatisch starten kann - im Git ist das über https://sourceforge.net/p/lirc/git/ci/master/tree/systemd/lircd.socket und https://sourceforge.net/p/lirc/git/ci/master/tree/systemd/lircd.service umgesetzt. Das beißt sich aber mit der Version aus den Ubuntu-Quellen, weil lircd da noch keine eigene Konfigurationsdatei kennt, aus der er beim Start die Einstellungen lesen kann - d.h. man benötigt ein Start-Skript, das dem Programm die Argumente direkt mitgibt. lircd wird unter Ubuntu 16.04 noch klassisch über SysVinit gestartet - wenn ich das Start-Skript (/etc/init.d/lirc, Zeile 111, 118 ff. und 134 ff. richtig verstehe, sollte er irexec automatisch mitstarten, wenn die Datei /etc/lirc/lircrc existiert und weder in dieser Datei noch in der /etc/lirc/lircd.conf eine Zeile vorkommt, die mit #UNCONFIGURED beginnt.
|
Tom7320
(Themenstarter)
Anmeldungsdatum: 2. Dezember 2007
Beiträge: 94
|
Hallo! Danke für die Antwort! Ich muss mich etwas korrigieren: zuerst hatte ich einen ganz banalen Fehler gemacht nämlich einen falschen Pfad in der irexec.service. Nachdem ich das korrigiert hatte, ging es leider noch immer nicht: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | root@bee:~# systemctl status irexec
● irexec.service - LIRC Infrared Signal Exec
Loaded: loaded (/etc/systemd/system/irexec.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Di 2016-07-12 20:21:01 CEST; 1min 38s ago
Process: 702 ExecStart=/usr/bin/irexec (code=exited, status=1/FAILURE)
Main PID: 702 (code=exited, status=1/FAILURE)
Jul 12 20:21:01 bee systemd[1]: Started LIRC Infrared Signal Exec.
Jul 12 20:21:01 bee irexec[702]: irexec: could not connect to socket
Jul 12 20:21:01 bee irexec[702]: irexec: No such file or directory
Jul 12 20:21:01 bee systemd[1]: irexec.service: Main process exited, code=exited, status=1/FAILURE
Jul 12 20:21:01 bee systemd[1]: irexec.service: Unit entered failed state.
Jul 12 20:21:01 bee systemd[1]: irexec.service: Failed with result 'exit-code'.
root@bee:~# journalctl _PID=702
-- Logs begin at Di 2016-07-12 20:21:00 CEST, end at Di 2016-07-12 20:22:47 CEST. --
Jul 12 20:21:01 bee irexec[702]: irexec: could not connect to socket
Jul 12 20:21:01 bee irexec[702]: irexec: No such file or directory
|
Das Socket-Problem ist hier im Wiki beschrieben. Der Anleitung dort nach habe ich die rc.local so angepasst: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | root@bee:~# cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
mkdir -p /var/run/lirc/ && ln -s /dev/lircd /var/run/lirc/lircd
exit 0
|
Dies hat leider nicht gebracht und führt noch immer zum selben Fehler... ☹ Ich habe die original Lirc-Version 0.9.0 aus den Paketquellen installiert. Da ich mir lirc gar nicht zu potte gekommen bin, habe ich inputlirc zusätzlich installiert. Das heißt aber, wenn ich das Wiki richtig verstehe, dass der lirc Daemon gar nicht gebraucht wird und folgerichtig auch nicht gestartet wird. Um aber die irexec zu starten, habe ich wie oben beschrieben versucht nur irexec per systemd zu starten. Das Startscript scheint irexec aber nicht ohne lircd zu starten?!? Meine hardware.conf: 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
47
48 | root@bee:~# cat /etc/lirc/hardware.conf
# /etc/lirc/hardware.conf
#
#Chosen Remote Control
REMOTE="None"
REMOTE_MODULES=""
REMOTE_DRIVER="devinput"
REMOTE_DEVICE=/dev/input/event12
REMOTE_SOCKET=""
REMOTE_LIRCD_CONF=""
REMOTE_LIRCD_ARGS=""
#Chosen IR Transmitter
TRANSMITTER="None"
TRANSMITTER_MODULES=""
TRANSMITTER_DRIVER=""
TRANSMITTER_DEVICE=""
TRANSMITTER_SOCKET=""
TRANSMITTER_LIRCD_CONF=""
TRANSMITTER_LIRCD_ARGS=""
#Disable kernel support.
#Typically, lirc will disable in-kernel support for ir devices in order to
#handle them internally. Set to false to prevent lirc from disabling this
#in-kernel support.
#DISABLE_KERNEL_SUPPORT="true"
#Enable lircd
START_LIRCD="false"
#Don't start lircmd even if there seems to be a good config file
#START_LIRCMD="false"
#Try to load appropriate kernel modules
LOAD_MODULES="true"
# Default configuration files for your hardware if any
LIRCMD_CONF=""
#Forcing noninteractive reconfiguration
#If lirc is to be reconfigured by an external application
#that doesn't have a debconf frontend available, the noninteractive
#frontend can be invoked and set to parse REMOTE and TRANSMITTER
#It will then populate all other variables without any user input
#If you would like to configure lirc via standard methods, be sure
#to leave this set to "false"
FORCE_NONINTERACTIVE_RECONFIGURATION="false"
START_LIRCMD=""
|
Ich könnte auch problemlos ohne inputlirc leben, allerdings hatte ich das Problem, dass lirc nach der Installation problemlos funktioniert hat nur leider nach einem Reboot nicht mehr?!? Jetzt weiß ich nicht mehr weiter... Hast Du vielleicht noch eine Idee?? Danke nochmals! Beste Grüße Thorsten PS: Hardware ist eine ASRock BeeBox N3150 samt dazu gelieferter Fernbedienung.
|
Tom7320
(Themenstarter)
Anmeldungsdatum: 2. Dezember 2007
Beiträge: 94
|
Noch ein Nachtrag: wenn ich nur lircd verwende (ohne inputlirc), lässt sich lircd nach einem Reboot nicht mehr starten: 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 | root@bee:~# /etc/init.d/lirc start
[ ok ] Starting lirc (via systemctl): lirc.service.
root@bee:~# systemctl status lirc
● lirc.service - LSB: Starts LIRC daemon.
Loaded: loaded (/etc/init.d/lirc; bad; vendor preset: enabled)
Active: active (exited) since Di 2016-07-12 20:56:31 CEST; 2min 33s ago
Docs: man:systemd-sysv-generator(8)
Process: 1321 ExecStop=/etc/init.d/lirc stop (code=exited, status=0/SUCCESS)
Process: 1338 ExecStart=/etc/init.d/lirc start (code=exited, status=0/SUCCESS)
Tasks: 0
Memory: 0B
CPU: 0
Jul 12 20:56:31 bee lirc[1338]: * Starting remote control daemon(s) :
Jul 12 20:56:31 bee lirc[1338]: lircd: there seems to already be a lircd process with pid 1290
Jul 12 20:56:31 bee lirc[1338]: lircd: otherwise delete stale lockfile /var/run/lirc/lircd.pid
Jul 12 20:56:31 bee lirc[1338]: ...fail!
Jul 12 20:56:31 bee lirc[1338]: * Starting execution daemon: irexec
Jul 12 20:56:31 bee lirc[1338]: ...fail!
Jul 12 20:56:31 bee systemd[1]: Started LSB: Starts LIRC daemon..
Jul 12 20:57:15 bee systemd[1]: Started LSB: Starts LIRC daemon..
Jul 12 20:58:32 bee systemd[1]: Started LSB: Starts LIRC daemon..
Jul 12 20:59:02 bee systemd[1]: Started LSB: Starts LIRC daemon..
root@bee:~# ps -A | grep lirc
root@bee:~# journalctl _PID=1321
-- Logs begin at Di 2016-07-12 20:56:23 CEST, end at Di 2016-07-12 21:00:27 CEST. --
Jul 12 20:56:31 bee lirc[1321]: sh: echo: I/O error
Jul 12 20:56:31 bee lirc[1321]: * Stopping execution daemon: irexec
Jul 12 20:56:31 bee lirc[1321]: ...done.
Jul 12 20:56:31 bee lirc[1321]: * Stopping remote control daemon(s): LIRC
Jul 12 20:56:31 bee lirc[1321]: ...done.
root@bee:~# journalctl _PID=1338
-- Logs begin at Di 2016-07-12 20:56:23 CEST, end at Di 2016-07-12 21:00:38 CEST. --
Jul 12 20:56:31 bee lirc[1338]: * Loading LIRC modules
Jul 12 20:56:31 bee lirc[1338]: ...done.
Jul 12 20:56:31 bee lirc[1338]: * Starting remote control daemon(s) :
Jul 12 20:56:31 bee lirc[1338]: lircd: there seems to already be a lircd process with pid 1290
Jul 12 20:56:31 bee lirc[1338]: lircd: otherwise delete stale lockfile /var/run/lirc/lircd.pid
Jul 12 20:56:31 bee lirc[1338]: ...fail!
Jul 12 20:56:31 bee lirc[1338]: * Starting execution daemon: irexec
Jul 12 20:56:31 bee lirc[1338]: ...fail!
root@bee:~#
|
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11260
Wohnort: München
|
Also hast du einen CIR-Empfänger, willst von dem dafür angelegten Kernel Input Device mit inputlirc die Tastendrücke auslesen und dann irexec an den Socket von inputlirc hängen. Die Änderung an der rc.local ist überflüssig, wenn nicht sogar schädlich - denn seit 2009 sind einige Jahre ins Land gegangen und inputlirc legt seinen Socket selber unter /var/run/lirc/lircd an (Quellcode, Zeile 65 der inputlircd.c), wie man es auch aufgrund der /etc/init.d/inputlirc vermuten könnte:
| case "$1" in
start)
mkdir -p /var/run/lirc
echo "Starting $DESC"
start-stop-daemon --exec $DAEMON --start -- $OPTIONS $EVENTS
# retain compatibility with old clients
[ -S /var/run/lirc/lircd ] && ln -sf /var/run/lirc/lircd /dev/lircd
;;
|
Jul 12 20:21:01 bee irexec[702]: irexec: could not connect to socket
Läuft denn inputlirc?
systemctl status inputlirc
Kann der seinen Socket ungestört unter /var/run/lirc/lircd anlegen oder wird das eventuell durch den Symlink, der in der rc.local angelegt wurde, verhindert (was für lircd vermutlich das gleiche Problem verursacht)?
|
Tom7320
(Themenstarter)
Anmeldungsdatum: 2. Dezember 2007
Beiträge: 94
|
rc.local ist wieder leer. inputlirc ist deinstalliert. Einzig und alleine das original lirc Paket 0.9.0 ist installiert. Nach der Installation funktioniert alles wie gewünscht. Nach einem Reboot nicht mehr: 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 | root@bee:~# systemctl status inputlirc
● inputlirc.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
root@bee:~# systemctl status irexec
● irexec.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
root@bee:~# systemctl status lirc
● lirc.service - LSB: Starts LIRC daemon.
Loaded: loaded (/etc/init.d/lirc; bad; vendor preset: enabled)
Active: active (exited) since Di 2016-07-12 21:13:58 CEST; 9min ago
Docs: man:systemd-sysv-generator(8)
Process: 1341 ExecStop=/etc/init.d/lirc stop (code=exited, status=0/SUCCESS)
Process: 1357 ExecStart=/etc/init.d/lirc start (code=exited, status=0/SUCCESS)
Tasks: 0
Memory: 0B
CPU: 0
Jul 12 21:13:58 bee systemd[1]: Starting LSB: Starts LIRC daemon....
Jul 12 21:13:58 bee lirc[1357]: * Loading LIRC modules
Jul 12 21:13:58 bee lirc[1357]: ...done.
Jul 12 21:13:58 bee lirc[1357]: * Starting remote control daemon(s) :
Jul 12 21:13:58 bee lirc[1357]: lircd: there seems to already be a lircd process with pid 1302
Jul 12 21:13:58 bee lirc[1357]: lircd: otherwise delete stale lockfile /var/run/lirc/lircd.pid
Jul 12 21:13:58 bee lirc[1357]: ...fail!
Jul 12 21:13:58 bee lirc[1357]: * Starting execution daemon: irexec
Jul 12 21:13:58 bee lirc[1357]: ...done.
Jul 12 21:13:58 bee systemd[1]: Started LSB: Starts LIRC daemon..
root@bee:~# ps -A | grep lirc
root@bee:~# ps -A | grep irexec
root@bee:~#
|
Was bedeutet die Fehlermeldung "there seems to already be a lircd process...". Offensichtlich stimmt das aber nicht?!
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11260
Wohnort: München
|
Da scheint es aber noch Reste zu geben:
Jul 12 21:13:58 bee lirc[1357]: lircd: there seems to already be a lircd process with pid 1302
Jul 12 21:13:58 bee lirc[1357]: lircd: otherwise delete stale lockfile /var/run/lirc/lircd.pid
Jul 12 21:13:58 bee lirc[1357]: ...fail!
|
Tom7320
(Themenstarter)
Anmeldungsdatum: 2. Dezember 2007
Beiträge: 94
|
Jo. Nur warum und woher direkt nach dem Booten?
BTW verändert sich in der hardware.conf das REMOTE_DEVICE wie von Geisterhand?!
Das kann doch nicht sooooo schwer sein, aber ich verstehe es noch immer nicht. Will aber nicht kurz vor dem Ziel aufgeben...
|
Tom7320
(Themenstarter)
Anmeldungsdatum: 2. Dezember 2007
Beiträge: 94
|
Nichts verändert, nur noch einmal gebootet. Jetzt läuft der Daemon plötzlich aber irw zeigt keine Tastendrücke an: 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 | root@bee:~# service status lirc
status: unrecognized service
root@bee:~# systemctl status lirc
● lirc.service - LSB: Starts LIRC daemon.
Loaded: loaded (/etc/init.d/lirc; bad; vendor preset: enabled)
Active: active (running) since Di 2016-07-12 21:30:55 CEST; 2min 14s ago
Docs: man:systemd-sysv-generator(8)
Process: 1233 ExecStop=/etc/init.d/lirc stop (code=exited, status=0/SUCCESS)
Process: 1273 ExecStart=/etc/init.d/lirc start (code=exited, status=0/SUCCESS)
Tasks: 2
Memory: 2.9M
CPU: 68ms
CGroup: /system.slice/lirc.service
├─1334 /usr/sbin/lircd --output=/run/lirc/lircd --driver=devinput --device=/dev/input/event12
└─1339 /usr/bin/irexec -d /etc/lirc/lircrc
Jul 12 21:30:55 bee lirc[1273]: * Loading LIRC modules
Jul 12 21:30:55 bee lirc[1273]: ...done.
Jul 12 21:30:55 bee lirc[1273]: * Starting remote control daemon(s) :
Jul 12 21:30:55 bee lircd-0.9.0[1334]: lircd(devinput) ready, using /run/lirc/lircd
Jul 12 21:30:55 bee lirc[1273]: ...done.
Jul 12 21:30:55 bee lirc[1273]: * Starting execution daemon: irexec
Jul 12 21:30:55 bee lircd-0.9.0[1334]: accepted new client on /run/lirc/lircd
Jul 12 21:30:55 bee lircd-0.9.0[1334]: initializing '/dev/input/event12'
Jul 12 21:30:55 bee lirc[1273]: ...done.
Jul 12 21:30:55 bee systemd[1]: Started LSB: Starts LIRC daemon..
root@bee:~# ps -A | grep lirc
1334 ? 00:00:00 lircd
root@bee:~# ps -A | grep irexec
1339 ? 00:00:00 irexec
root@bee:~# irw
^C
root@bee:~#
|
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11260
Wohnort: München
|
Zeig mal wie der Empfänger aktuell konfiguriert ist:
sudo apt-get install ir-keytable
sudo ir-keytable
|
Tom7320
(Themenstarter)
Anmeldungsdatum: 2. Dezember 2007
Beiträge: 94
|
| root@bee:~# ir-keytable
Found /sys/class/rc/rc0/ (/dev/input/event6) with:
Driver nuvoton-cir, table rc-rc6-mce
Supported protocols: unknown other lirc rc-5 jvc sony nec sanyo mce-kbd rc-6 sharp xmp
Enabled protocols: lirc
Name: Nuvoton w836x7hg Infrared Remote
bus: 25, vendor/product: 1050:00c9, version: 0x0013
Repeat delay = 500 ms, repeat period = 125 ms
|
|
Tom7320
(Themenstarter)
Anmeldungsdatum: 2. Dezember 2007
Beiträge: 94
|
Ich würde das Thema gerne noch einmal "pushen" wollen, da ich nach vielen Stunden dennoch noch nicht weiter gekommen bin... 🙄
Gibt es ein Paket der lirc Version 0.9.4 für Ubuntu Server 16.04? Würde es Sinn machen diese zu verwenden? Oder welche Optionen habe ich noch? Danke für's Lesen und Helfen! Thorsten
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11260
Wohnort: München
|
Mh, den devinput Treiber für lirc habe ich noch nie wirklich genutzt - ich arbeite an einer VDR-Distribution (yaVDR) mit und da nutzen wir eventlircd, um von Kernel Input Devices zu lesen und hatten bislang eigene Upstart-Skripte gepflegt, um lirc und irexec zu starten...
Wenn bei irw nichts kommt, würde ich als erstes mal nachsehen, ob man mit sudo ir-keytable -t Tastendrücke sehen kann (ggf. muss man lircd vorab stoppen, damit das klappt) und ob die lircd.conf die Tastennamen abbildet. Der neue Maintainer von lirc arbeitet daran die neue Version in die Debian-Paketquellen zu bekommen: https://mentors.debian.net/package/lirc
Das Bauen der Lirc-Pakete für Ubuntu 16.04 mit diesen Quellpaketen funktioniert schon mal, das habe ich in diesem PPA ausprobiert: https://launchpad.net/~yavdr/+archive/ubuntu/unstable-main/+packages?field.name_filter=lirc&field.status_filter=published&field.series_filter=xenial - aber ich bin noch nicht dazu gekommen das auf einem Testsystem auszuprobieren.
|
Tom7320
(Themenstarter)
Anmeldungsdatum: 2. Dezember 2007
Beiträge: 94
|
Das witzige ist ja, dass es direkt nach der Installation perfekt funktioniert! Nur nach einem Reboot eben nicht mehr?! Daher schlussfolgerte ich unglaublich messerscharf, dass das Problem bei Systemstart liegen müsse. 🙄 Ich kann leider erst morgen Abend wieder rumfrickeln, da ich bis dahin arbeiten muss. 😐 Cool! Ein .deb der 0.9.4, das ich einfach installieren kann, wäre ein Versuch wert... Schönen Abend! Thorsten
|
Tom7320
(Themenstarter)
Anmeldungsdatum: 2. Dezember 2007
Beiträge: 94
|
Moin! Jetzt konnte ich testen. ir-keytable -t gibt nichts aus. irw auch nicht. Wenn ich einfach (wie unter Windows... 😛 ) das Paket lirc deinstalliere und neu installiere funktioniert es. Bis zum nächsten reboot..... Schönen Tag allerseits! Grüße Thorsten
|