[lirc] Updating after review and test of not-released -15

leamas leamas at fedoraproject.org
Fri Oct 18 08:32:39 UTC 2013


commit 34cdc2ea64e4eddaf4ba972e0bb0d1bfa7fd2e0d
Author: Alec Leamas <leamas.alec at gmail.com>
Date:   Fri Oct 18 10:32:10 2013 +0200

    Updating after review and test of not-released -15

 0018-Start-lirc-0.9.1-git.patch                    |   82 ++------------------
 ...-lircs-use-systemctl-instead-of-sysV-init.patch |   43 ++++++++++
 0100-configure-ac-revert-to-git-branch.patch       |   15 ++--
 0104-Add-systemd-socket-activation-support.patch   |   44 ++++------
 99-remote-control-lirc.rules                       |    1 +
 README.fedora                                      |   65 +++++++++++++++-
 lirc.spec                                          |   58 +++++++++++----
 lirc.sysconfig                                     |   21 ++++--
 lircd.service                                      |    5 +-
 lircd.socket                                       |    1 +
 10 files changed, 205 insertions(+), 130 deletions(-)
---
diff --git a/0018-Start-lirc-0.9.1-git.patch b/0018-Start-lirc-0.9.1-git.patch
index b5f1c7d..83af27e 100644
--- a/0018-Start-lirc-0.9.1-git.patch
+++ b/0018-Start-lirc-0.9.1-git.patch
@@ -1,91 +1,25 @@
-From 7c8034be8a79dce219b60cce3afcf39f1b85d004 Mon Sep 17 00:00:00 2001
-From: Jarod Wilson <jarod at redhat.com>
-Date: Fri, 25 Mar 2011 18:27:31 -0400
-Subject: [PATCH] Start lirc 0.9.1-git
+From 08fc775629662fbdeae05b020e0c6ff9a5d45ccf Mon Sep 17 00:00:00 2001
+From: Alec Leamas <leamas at nowhere.net>
+Date: Tue, 15 Oct 2013 11:19:15 +0200
+Subject: [PATCH] patch18
 
-Signed-off-by: Jarod Wilson <jarod at redhat.com>
 ---
- ANNOUNCE                   | 4 ++--
- NEWS                       | 8 ++++++--
- configure.ac               | 2 +-
- doc/html-source/index.html | 2 +-
- setup.sh                   | 2 +-
- 5 files changed, 11 insertions(+), 7 deletions(-)
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/ANNOUNCE b/ANNOUNCE
-index 4db8756..da33538 100644
---- a/ANNOUNCE
-+++ b/ANNOUNCE
-@@ -1,8 +1,8 @@
--LIRC - Linux Infrared Remote Control, Version: 0.9.0-git
-+LIRC - Linux Infrared Remote Control, Version: 0.9.1-git
- 
- Copyright (C) 1996 Ralph Metzler <rjkm at thp.uni-koeln.de>
- Copyright (C) 1998-2010 Christoph Bartelmus <lirc at bartelmus.de>
--Copyright (C) 2010 Jarod Wilson <jarod at redhat.com>
-+Copyright (C) 2010-2011 Jarod Wilson <jarod at redhat.com>
- (according to GNU General Public Licence 2.0 or later)
- 
- LIRC is a package that allows you to decode and send infra-red signals
-diff --git a/NEWS b/NEWS
-index 08d1abf..c097f0d 100644
---- a/NEWS
-+++ b/NEWS
-@@ -1,4 +1,9 @@
--0.9.0-git: UNDER DEVELOPMENT
-+0.9.1-git: UNDER DEVELOPMENT
-+  * TBD
-+
-+0.9.0: 03/25/11
-+  * Remove mceusb, streamzap, it8x, ene0100 drivers, as they're
-+    now redundant with upstream kernel drivers
-   * fix oops unplugging igorplugusb receiver while in use (special
-     thanks to Timo Boettcher for providing hardware)
-   * more error-checking for NULL irctl in various lirc_dev paths
-@@ -13,7 +18,6 @@
-   * use portable type definitions all over the place
-   * drop an old GLIBC work-around for printing 64-bit values
-   * fix timing-specific repeat-after-release issue (Christoph Bartelmus)
--  * renamed lirc_ite8709 to lirc_it85 and updated (Yan-Min Lin, ITE)
- 
- 0.8.7: 09/06/10
-   * improved usb-uirt support for FreeBSD (John Wehle)
 diff --git a/configure.ac b/configure.ac
-index 485b8f3..4fedee1 100644
+index e47eff0..750264f 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -7,7 +7,7 @@ AC_INIT
  AC_CONFIG_SRCDIR([daemons/lircd.c])
  AC_CONFIG_MACRO_DIR([m4])
  
--AM_INIT_AUTOMAKE(lirc, 0.9.0-git)
+-AM_INIT_AUTOMAKE(lirc, 0.9.0)
 +AM_INIT_AUTOMAKE(lirc, 0.9.1-git)
  AM_CONFIG_HEADER(config.h)
  
  CFLAGS="${CFLAGS--O2 -g -Wall}"
-diff --git a/doc/html-source/index.html b/doc/html-source/index.html
-index 77bf381..0e44f83 100644
---- a/doc/html-source/index.html
-+++ b/doc/html-source/index.html
-@@ -1,5 +1,5 @@
-     <A NAME="welcome"></A><HR>
--    <H1 ALIGN="CENTER">Welcome to the LIRC 0.9.0-git Manual</H1>
-+    <H1 ALIGN="CENTER">Welcome to the LIRC 0.9.1-git Manual</H1>
-     <HR WIDTH="70%">
-     
-     <P>
-diff --git a/setup.sh b/setup.sh
-index 6220cda..9a3bdec 100755
---- a/setup.sh
-+++ b/setup.sh
-@@ -1,6 +1,6 @@
- #! /bin/sh
- 
--LIRC_VERSION="0.9.0-git"
-+LIRC_VERSION="0.9.1-git"
- 
- #############################################################################
- ## Default Values
 -- 
 1.8.3.1
 
diff --git a/0019-lircs-use-systemctl-instead-of-sysV-init.patch b/0019-lircs-use-systemctl-instead-of-sysV-init.patch
new file mode 100644
index 0000000..ff2452a
--- /dev/null
+++ b/0019-lircs-use-systemctl-instead-of-sysV-init.patch
@@ -0,0 +1,43 @@
+From 55870fd91d8e36927f6807931ecd1cfa49ce4ed1 Mon Sep 17 00:00:00 2001
+From: Alec Leamas <leamas.alec at gmail.com>
+Date: Fri, 18 Oct 2013 00:21:44 +0200
+Subject: [PATCH] lircs: use systemctl instead of sysV init.
+
+---
+ lirc-0.9.0/contrib/lircs | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/contrib/lircs b/contrib/lircs
+index 1db2f2a..47350f9 100755
+--- a/contrib/lircs
++++ b/contrib/lircs
+@@ -24,7 +24,7 @@
+ CONFIG_FILE=${HOME}/.lircrc
+
+ # any editor to edit LIRC config file
+-FILE_EDITOR=vim
++FILE_EDITOR=${EDITOR:-vim}
+
+
+
+@@ -48,7 +48,7 @@ start_clients () {
+ restart_lircd () {
+ 	if [ "${USER}" = "root" ]; then
+ 		# change this if your Linux system keeps the init scripts elsewhere
+-		/sbin/init.d/lircd restart
++		systemctl restart lircd.service
+ 	else
+ 		echo "`basename ${0}`: you must be 'root' to restart the LIRC daemon (lircd)."
+ 		exit 1
+@@ -58,7 +58,7 @@ restart_lircd () {
+ stop_lircd () {
+ 	if [ "${USER}" = "root" ]; then
+ 		# change this if your Linux system keeps the init scripts elsewhere
+-		/sbin/init.d/lircd stop
++		systemctl stop lircd.service
+ 	else
+ 		echo "`basename ${0}`: you must be 'root' to stop the LIRC daemon (lircd)."
+ 		exit 1
+--
+1.8.3.1
+
diff --git a/0100-configure-ac-revert-to-git-branch.patch b/0100-configure-ac-revert-to-git-branch.patch
index 2ae5e34..96ec399 100644
--- a/0100-configure-ac-revert-to-git-branch.patch
+++ b/0100-configure-ac-revert-to-git-branch.patch
@@ -1,26 +1,25 @@
-From 7635b1e321bf2f98468ae4f2233e28e3d78505cb Mon Sep 17 00:00:00 2001
+From f23dfe414e95def3c094a344f7b27eedd06b062e Mon Sep 17 00:00:00 2001
 From: Alec Leamas <leamas at nowhere.net>
-Date: Fri, 11 Oct 2013 05:50:12 +0200
-Subject: [PATCH] configure-ac: revert to git branch
+Date: Tue, 15 Oct 2013 11:07:25 +0200
+Subject: [PATCH] Reverting to 0.9.1-git (base for upstream patches)
 
-rebasing for further changes to match upstream merge request.
 ---
  configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/configure.ac b/configure.ac
-index 5a9b31d..9efe2f9 100644
+index 052908b..51ee9a5 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -7,7 +7,7 @@ AC_INIT
  AC_CONFIG_SRCDIR([daemons/lircd.c])
  AC_CONFIG_MACRO_DIR([m4])
-
+ 
 -AM_INIT_AUTOMAKE(lirc, 0.9.0)
 +AM_INIT_AUTOMAKE(lirc, 0.9.1-git)
  AM_CONFIG_HEADER(config.h)
-
+ 
  CFLAGS="${CFLAGS--O2 -g -Wall}"
---
+-- 
 1.8.3.1
 
diff --git a/0104-Add-systemd-socket-activation-support.patch b/0104-Add-systemd-socket-activation-support.patch
index 0481231..e2f0ab6 100644
--- a/0104-Add-systemd-socket-activation-support.patch
+++ b/0104-Add-systemd-socket-activation-support.patch
@@ -1,31 +1,15 @@
-From 171ac321f1e97a60fbda3858c4c84d60d0b7dacb Mon Sep 17 00:00:00 2001
-From: Alec Leamas <alec at tests.notat.diaspora.com>
-Date: Wed, 9 Oct 2013 20:57:12 +0200
-Subject: [PATCH 104/105] Add systemd socket activation support.
+From b5fec91d4b91e6798e9c92b389b96f7f44639a9a Mon Sep 17 00:00:00 2001
+From: Alec Leamas <leamas at nowhere.net>
+Date: Tue, 15 Oct 2013 07:34:51 +0200
+Subject: [PATCH] fixing 104
 
-Since systemd was introduced lirc clients have had problems at
-startup when trying to connect to the lircd socket before it's
-created. The root cause is the aggressive parallell boot performed
-by systemd.
-
-The solution is to add socket activation. In this mode, the socket
-is created by systemd and handed over to lircd at startup. The patch
-implements this. It should be reasonably transparent.
-
-At configure time it enables systemd support if it's available,
-otherwise it's silently ignored.
-
-In runtime lircd looks for and uses a socket handed over by systemd.
-If there is no such socket it proceeds as normal.
-
-Adds a dependency on pkg-config for the PKG_CHECK_MODULES macro.
 ---
  configure.ac    |  7 +++++
- daemons/lircd.c | 94 ++++++++++++++++++++++++++++++++++-----------------------
- 2 files changed, 63 insertions(+), 38 deletions(-)
+ daemons/lircd.c | 95 ++++++++++++++++++++++++++++++++++-----------------------
+ 2 files changed, 63 insertions(+), 39 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index af28e4f..7df186a 100644
+index 0ee99e4..e49dc8d 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -232,6 +232,9 @@ AH_TEMPLATE([HAVE_SCSI],
@@ -50,9 +34,18 @@ index af28e4f..7df186a 100644
  
  AC_ARG_WITH(driver,
 diff --git a/daemons/lircd.c b/daemons/lircd.c
-index 8ace7af..9cde69b 100644
+index 8ace7af..5b8f361 100644
 --- a/daemons/lircd.c
 +++ b/daemons/lircd.c
+@@ -5,7 +5,7 @@
+  ****************************************************************************
+  *
+  * lircd - LIRC Decoder Daemon
+- * 
++ *
+  * Copyright (C) 1996,97 Ralph Metzler <rjkm at thp.uni-koeln.de>
+  * Copyright (C) 1998,99 Christoph Bartelmus <lirc at bartelmus.de>
+  *
 @@ -63,6 +63,10 @@
  #include "input_map.h"
  #endif
@@ -72,7 +65,7 @@ index 8ace7af..9cde69b 100644
  
  	/* create pid lockfile in /var/run */
  	if ((fd = open(pidfile, O_RDWR | O_CREAT, 0644)) == -1 || (pidf = fdopen(fd, "r+")) == NULL) {
-@@ -881,51 +886,64 @@ void start_server(mode_t permission, int nodaemon)
+@@ -881,51 +886,63 @@ void start_server(mode_t permission, int nodaemon)
  	(void)ftruncate(fileno(pidf), ftell(pidf));
  
  	/* create socket */
@@ -87,7 +80,6 @@ index 8ace7af..9cde69b 100644
 +                fprintf(stderr, "Too many file descriptors received.\n");
  		goto start_server_failed0;
 -	}
-+                exit(1);
 +        }
 +        else if (n == 1)
 +                sockfd  = SD_LISTEN_FDS_START + 0;
diff --git a/99-remote-control-lirc.rules b/99-remote-control-lirc.rules
new file mode 100644
index 0000000..c6d6bed
--- /dev/null
+++ b/99-remote-control-lirc.rules
@@ -0,0 +1 @@
+SUBSYSTEM=="rc", ATTR{protocols}="lirc"
diff --git a/README.fedora b/README.fedora
index 43458c4..090003a 100644
--- a/README.fedora
+++ b/README.fedora
@@ -1,6 +1,33 @@
 ## Fedora README
 
-As of current releases, the Fedora lirc package sports systemd socket
+#### New service name: lirc -> lircd.
+
+For reasons of consistency we have renamed the lirc service to
+lircd. Basically, this means that to start the service one need
+to use systemctl start lircd.service instead of lirc.service etc.
+Sorry for the inconvenience.
+
+#### Enable lirc protocol
+
+For lirc to work with ir devices, the lirc protocol must be enabled
+for the actual device used. This only applies to ir devices which
+are visible as /sys/class/rc/rc? devices. E. g., I have an RF remote
+which is just an usb device (driver atilibusb) and this one does
+*not* require the the lirc protocol to be enabled in this way.
+
+If you have a "classic" ir device needing lirc to be enabled one option
+is to install the lirc-disable-kernel-rc subpackage. This is an udev
+rule which disables the kernel built-in ir device handling and makes
+lirc the only protocol used. This might or might not be what you want.
+
+Another option is to set the LIRCD_IR_DEVICE in /etc/sysconfig/lirc. This
+will enable the lirc protocol for that device when lirc is running. The
+kernel built-in protocols are still in place, but not used. Again, this
+might or might not be what you want.
+
+#### Socket activation
+
+As of 0.9.4-15+, the Fedora lirc package sports systemd socket
 activation. This should fix the problems at startup when clients can't
 connect to /var/run/lircd because the lircd service is yet not started.
 
@@ -14,5 +41,41 @@ The lircmd is started the usual way:
     # systemctl enable lircmd.service
     # systemctl start lircmd.service
 
+#### Running another instance.
+
+Sometimes another lircd instance is required to handle some other input
+device. This could be done by creating a new service definition in
+/etc/systemd/system.
+
+In my case I have an extra instance handling ir output to the transciever.
+This is accomplished with  a file /etc/systemd/system/lirc-tx:
+----------------
+[Unit]
+Description=LIRC Infrared Signal Decoder
+After=network.target
+
+[Service]
+Type=simple
+ExecStart=/usr/sbin/lircd --driver=iguanaIR \
+                          --device=/var/run/iguanaIR/0 \
+                          --output=/var/run/lirc/lircd-tx \
+                          --pidfile=/run/lirc/dont-use-lircd-tx.pid \
+                          --nodaemon \
+                          --allow-simulate
+
+[Install]
+WantedBy=multi-user.target
+
+-----------------------
+
+This defines a new service which can be started using
+'systemctl start lirc-tx' etc. It's essential that each service has an
+unique output socket. You should probably also think twice before running
+two instances with the same input device.
+
+
+
+
+
 
 http://stackoverflow.com/questions/11939255/writing-to-dev-uinput-on-ubuntu-12-04
diff --git a/lirc.spec b/lirc.spec
index 48630e2..239c2da 100644
--- a/lirc.spec
+++ b/lirc.spec
@@ -6,7 +6,6 @@
 #         https://sf.net/mailarchive/forum.php?forum_name=lirc-list&viewmonth=201310
 #
 
-
 %bcond_without  alsa
 %bcond_without  portaudio
 %bcond_without  x
@@ -23,7 +22,7 @@
 Name:           lirc
 Version:        0.9.0
 %if 0%{?released}
-Release:        15%{?dist}
+Release:        17%{?dist}
 %else
 Release:        0.2.%{pre}%{?dist}
 %endif
@@ -44,6 +43,7 @@ Source3:        lircmd.service
 Source4:        lircd.socket
 Source5:        lirc.conf
 Source6:        README.fedora
+Source7:        99-remote-control-lirc.rules
                 # Patches 7..17 are from upstream.
 Patch7:         0007-Make-lirc_wpc8769l-functional-again.patch
 Patch8:         0008-lirc_sir-fix-resource-busy-error-from-bunk-lirc_open.patch
@@ -57,16 +57,16 @@ Patch15:        0015-media-lirc_dev-fixes-in-lirc_dev_fop_read.patch
 Patch16:        0016-media-lirc_dev-add-some-__user-annotations.patch
 Patch17:        0017-media-media-rc-lirc_dev-check-kobject_set_name-resul.patch
 Patch18:        0018-Start-lirc-0.9.1-git.patch
-                # 101-104 is upstream merge request, 101+105
-                # local support which should no upstream.
-Patch100:       0100-configure-ac-revert-to-git-branch.patch
+Patch19:        0019-lircs-use-systemctl-instead-of-sysV-init.patch
+                # 101-104: upstream merge request:
+                #    https://sourceforge.net/p/lirc/git/merge-requests/3/
 Patch101:       0101-Stripping-some-eol-whitespace.patch
 Patch102:       0102-Update-autotools-config-files.patch
 Patch103:       0103-xmode2.c-Use-generic-fixed-font-instead-of-Courier.patch
 Patch104:       0104-Add-systemd-socket-activation-support.patch
+                # local glue which should not go upstream.
 Patch105:       0105-configure-ac-back-to-0.9.0.patch
 
-BuildRequires:  %{__perl}
 Buildrequires:  autoconf
 BuildRequires:  automake
 
@@ -161,6 +161,15 @@ signals as well as user space applications which allow controlling a
 computer with a remote control.  This package contains a collection
 of remote control configuration files.
 
+%package        disable-kernel-rc
+Summary:        Disable kernel ir device handling in favor of lirc
+Requires:       %{name} = %{version}-%{release}
+
+%description  disable-kernel-rc
+Udev rule which disables the kernel built-in handling of infrared devices
+(i. e., rc* ones) by making lirc the only used protocol. An alternative is
+to use the LIRCD_IR_DEVICE option in /etc/sysconfig/lirc
+
 
 # Don't provide or require anything from _docdir, per policy.
 %global __provides_exclude_from ^%{_docdir}/.*$
@@ -185,8 +194,9 @@ of remote control configuration files.
 %patch15 -p1
 %patch16 -p1
 %patch17 -p1
+%patch18 -p1
+%patch19 -p1
 
-%patch100 -p1
 %patch101 -p1
 %patch102 -p1
 %patch103 -p1
@@ -198,16 +208,17 @@ chmod +x contrib/hal
 chmod +x daemons/input_map.sh
 
 sed -i -e 's|/usr/local/etc/|/etc/|' contrib/irman2lirc
-sed -i -e 's|/sbin/init.d/lircd|%{_initrddir}/lirc|' contrib/lircs
 
 for f in remotes/chronos/lircd.conf.chronos \
     remotes/creative/lircd.conf.livedrive remotes/atiusb/lircd.conf.atiusb \
-    NEWS ChangeLog AUTHORS contrib/lircrc ; do
+    NEWS ChangeLog AUTHORS contrib/lircrc
+do
     iconv -f iso-8859-1 -t utf-8 $f > $f.utf8 ; mv $f.utf8 $f
 done
 
 
 %build
+mkdir m4 || :
 autoreconf -fi
 
 %configure \
@@ -235,6 +246,8 @@ install -Dpm 644 %{SOURCE4} $RPM_BUILD_ROOT%{_unitdir}/lircd.socket
 install -Dpm 644 %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/lirc
 install -Dpm 644 %{SOURCE5} $RPM_BUILD_ROOT/etc/lirc/lircd.conf
 install -Dpm 644 %{SOURCE5} $RPM_BUILD_ROOT/etc/lirc/lircmd.conf
+install -Dpm 644 %{SOURCE7} \
+    $RPM_BUILD_ROOT%{_udevrulesdir}/99-remote-control-lirc.rules
 cp -a %{SOURCE6} README.fedora
 
 # Put remote definitions in place
@@ -256,13 +269,14 @@ rm -rf doc/Makefile* doc/.libs doc/man* doc/lirc.hwdb
 rm -rf contrib/irman2lirc contrib/lirc.* contrib/sendxevent.c
 cd ..
 
-mkdir -p $RPM_BUILD_ROOT/etc/tmpfiles.d
+mkdir -p $RPM_BUILD_ROOT/%{_tmpfilesdir}
 echo "d /var/run/lirc  0755  root  root  10d" \
-    > $RPM_BUILD_ROOT/etc/tmpfiles.d/lirc.conf
+    > $RPM_BUILD_ROOT/%{_tmpfilesdir}/lirc.conf
 
 
 %post
 %systemd_post lircd.service lircmd.service
+systemd-tmpfiles --create %{_tmpfilesdir}/lirc.conf
 
 %post libs -p /sbin/ldconfig
 
@@ -291,7 +305,7 @@ echo "d /var/run/lirc  0755  root  root  10d" \
 %dir  /etc/lirc
 %config(noreplace) /etc/lirc/lirc*d.conf
 %config(noreplace) /etc/sysconfig/lirc
-%config(noreplace) /etc/tmpfiles.d/lirc.conf
+%{_tmpfilesdir}/lirc.conf
 %{_unitdir}/lirc*
 %{_bindir}/*ir*
 %{_bindir}/*mode2
@@ -316,10 +330,26 @@ echo "d /var/run/lirc  0755  root  root  10d" \
 %doc AUTHORS ChangeLog COPYING README
 %{_datadir}/lirc-remotes
 
+%files disable-kernel-rc
+%{_udevrulesdir}/99-remote-control-lirc.rules
+
 
 %changelog
+* Thu Oct 17 2013 Alec Leamas <leamas.alec at nowhere.net> - 0.9.0-17
+- Add a udev "Only use lirc" subpackage.
+- Revise enabling of lirc protocol.
+- Documenting upstream merge request.
+- Resurrect contrib/lircs, use systemctl.
+- Force creation of /run/lirc after installation.
+- Use /lib/tmpfiles.d, not /etc/tmpfiles.d with _tmpfilesdir macro.
+
+* Tue Oct 15 2013 Wolfgang Ulbrich <chat-to-me at raveit.de> - 0.9.0-16
+- fix build for f18
+- remove BR perl, already called in build system
+- fix bogus in changelog date
+
 * Thu Oct 10 2013 Alec Leamas <leamas.alec at nowhere.net> - 0.9.0-15
-- Actually use sysconfig files (881976)
+- Actually use sysconfig files (881976).
 - Modify lirc.service to not fork.
 - Add support for iguanaIR driver (#954146).
 - Add hardened build flag (955144).
@@ -633,7 +663,7 @@ echo "d /var/run/lirc  0755  root  root  10d" \
 * Sun Apr 17 2005 Ville Skyttä <ville.skytta at iki.fi> 0.7.1-2
 - 0.7.1.
 
-* Fri Apr  7 2005 Michael Schwendt <mschwendt[AT]users.sf.net>
+* Thu Apr 7 2005 Michael Schwendt <mschwendt[AT]users.sf.net>
 - rebuilt
 
 * Sun Dec  5 2004 Ville Skyttä <ville.skytta at iki.fi> 0.7.0-1
diff --git a/lirc.sysconfig b/lirc.sysconfig
index 1bca325..4e32a76 100644
--- a/lirc.sysconfig
+++ b/lirc.sysconfig
@@ -11,12 +11,21 @@ LIRCD_OPTIONS=""
 LIRC_DRIVER="default"
 
 # Which lirc device will be used by lircd(8).
-# This is the same as passing "-d device" to lircd.
-# An empty value will use the default /dev/lirc0 device.
+# This is the same as passing "-d device" to lircd. It must be set.
 LIRC_DEVICE="/dev/lirc0"
 
-# Options to lircmd(8). The default --version effectively disables
-# lircmd, setting it to "" enables it with default options. lircmd
-# always runs with --nodaemon added to LIRCMD_OPTIONS.
-LIRCMD_OPTIONS="--version"
+# Options to lircmd(8). lircmd always runs with --nodaemon added
+# to LIRCMD_OPTIONS.
+LIRCMD_OPTIONS=""
+
+# The infrared device used by lirc, if any. If this is set, lircd will
+# enable the lirc protocol and disable kernel built-in handling using
+# "echo lirc > /sys/class/rc/$LIRCD_IR_DEVICE/protocols" at startup.
+# If unset, this is ignored.
+# - The common case when there is just one ir device: LIRCD_IR_DEVICE="rc0".
+# - Non-IR devices e. g., RF ones typically don't need this set.
+# - If not set when required, the typical symptom is duobled key-presses.
+# - If installing the lirc-disable-kernel-rc subpackage this setting is not
+#   needed.
+LIRCD_IR_DEVICE=""
 
diff --git a/lircd.service b/lircd.service
index fd184cb..f8e92e8 100644
--- a/lircd.service
+++ b/lircd.service
@@ -5,9 +5,12 @@ After=network.target
 [Service]
 Type=simple
 EnvironmentFile=-/etc/sysconfig/lirc
-ExecStartPre=/bin/sh -c 'echo lirc > /sys/class/rc/rc0/protocols'
+ExecStartPre=/bin/sh -c 'test -n "$LIRCD_IR_DEVICE" && \
+    echo lirc > /sys/class/rc/$LIRCD_IR_DEVICE/protocols || :'
 ExecStart=/usr/sbin/lircd $LIRCD_OPTIONS \
     --driver $LIRC_DRIVER --device $LIRC_DEVICE  --nodaemon
+ExecStopPost=/bin/sh -c 'test -n "$LIRCD_IR_DEVICE" && \
+    echo -lirc > /sys/class/rc/$LIRCD_IR_DEVICE/protocols || :'
 
 [Install]
 WantedBy=multi-user.target
diff --git a/lircd.socket b/lircd.socket
index ef9752f..0ee7d0d 100644
--- a/lircd.socket
+++ b/lircd.socket
@@ -3,4 +3,5 @@ ListenStream=/run/lirc/lircd
 
 [Install]
 WantedBy=sockets.target
+Also=lircd.service
 


More information about the scm-commits mailing list