lircd работает при запуске из командной строки, а не при запуске из init.d / service

Я настраиваю систему для использования в качестве медиацентра под управлением Mythbuntu 12.04. Все работает, кроме пульта. Я настроил свой пульт, и я запускаю lirc из командной строки, он работает нормально. Если я запускаю его из сценария инициализации service lirc start, он не работает. (Для этого работа означает, что irw покажет вывод). В обоих случаях я использую одну и ту же команду (фактически, для запуска ее из командной строки, я просто копирую команду, представленную в ps -ef). В обоих случаях lirc работает от имени пользователя root (по крайней мере, так говорит ps -ef). В обоих случаях в syslog выдается точно такая же информация.

Команда для запуска lirc:

sudo /usr/sbin/lircd --output=/var/run/lirc/lircd --driver=devinput --device=/dev/input/irremote

вывод системного журнала (запуск lirc, запуск irw, остановка irw, уничтожение lirc):

Aug 13 22:06:05 Myth-FJ lircd-0.9.0[4917]: lircd(devinput) ready, using /var/run/lirc/lircd
Aug 13 22:06:05 Myth-FJ lircd-0.9.0[4917]: accepted new client on /var/run/lirc/lircd
Aug 13 22:06:05 Myth-FJ lircd-0.9.0[4917]: initializing '/dev/input/irremote'
Aug 13 22:06:28 Myth-FJ lircd-0.9.0[4917]: accepted new client on /var/run/lirc/lircd
Aug 13 22:06:35 Myth-FJ lircd-0.9.0[4917]: removed client
Aug 13 22:06:42 Myth-FJ lircd-0.9.0[4917]: caught signal
Aug 13 22:06:42 Myth-FJ lircd-0.9.0[4917]: closing '/dev/input/irremote'

Я совершенно в тупике .

0
задан 13 August 2013 в 16:20

1 ответ

У меня были те же признаки, lirc не будет работать, когда выполнено как услуга, но работал бы командой. Обратите внимание, что в моем случае некоторые ключи работали, но только когда lirc не работал (ни как услуга, ни команда).

Проблема состояла в том, что evdev (входной драйвер для Xorg) брал удаленное как устройство ввода с клавиатуры. Получение evdev для игнорирования удаленного решило проблему для меня. Я предполагаю, что lirc сервис запускается, сценарий зависся тем, что evdev имел дескриптор на удаленном, так или иначе.

Проблема детализирована в этом потоке: http://www.tbsdtv.com/forum/viewtopic.php?f=22&t=2896&sid=f8d407bf0e7a02db70439a41ea2adc3c

Следующее из последнего сообщения в том потоке.Примечание: TBS6981 является спутниковым тюнером, который я использовал в качестве своего дистанционного приемного устройства.

Проблема была вызвана evdev (входной драйвер для Xorg), который брал удаленное как устройство ввода с клавиатуры. Это было видно от моих журналов Xorg (/var/log/Xorg...), посмотрите ниже. Большинство кнопок не работает по умолчанию, потому что они естественно не отображаются на кнопки клавиатуры, например, Ваша клавиатура не имеет ключа EPG, но она действительно имеет числа и клавиши направления.

Существует в основном два решения

  1. Настройте evdev, чтобы проигнорировать вход IR и использовать lirc ИЛИ
  2. Повторно отобразите удаленные кнопки на клавиши на клавиатуре, как обсуждено в этом сообщении, и не используйте lirc

evdev может быть настроен для игнорирования TBS6981 как клавиатуры путем добавления следующего в конец/usr/share/X11/xorg.conf.d/10-evdev.conf -

Section "InputClass"
        Identifier "cx23885 IR (TurboSight TBS 6981)"
        MatchProduct "cx23885 IR (TurboSight TBS 6981)"
        MatchIsKeyboard "on"
        Option "Ignore"
EndSection

Обратите внимание, что MatchProduct выше соответствует идентификатору, найденному в Xorg.0.log.

Это - выписка из Xorg.0.log, показывающего evdev выбор удаленного входа, эти строки не появляются, если evdev правильно настроен для игнорирования удаленного как клавиатуры:

[    21.486] (II) config/udev: Adding input device cx23885 IR (TurboSight TBS 6981) (/dev/input/event3)
[    21.486] (**) cx23885 IR (TurboSight TBS 6981): Applying InputClass "evdev keyboard catchall"
[    21.486] (II) Using input driver 'evdev' for 'cx23885 IR (TurboSight TBS 6981)'
[    21.486] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so
[    21.486] (**) cx23885 IR (TurboSight TBS 6981): always reports core events
[    21.486] (**) evdev: cx23885 IR (TurboSight TBS 6981): Device: "/dev/input/event3"
[    21.486] (--) evdev: cx23885 IR (TurboSight TBS 6981): Vendor 0x6981 Product 0x8888
[    21.486] (--) evdev: cx23885 IR (TurboSight TBS 6981): Found keys
[    21.486] (II) evdev: cx23885 IR (TurboSight TBS 6981): Configuring as keyboard
[    21.486] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:04.0/0000:02:00.0/rc/rc0/input3/event3"
[    21.486] (II) XINPUT: Adding extended input device "cx23885 IR (TurboSight TBS 6981)" (type: KEYBOARD, id 8)

Так, первый шаг, ищут строки в Вашем /var/log/Xorg.0.log, показывающем evdev берущий Вашего дистанционного приемного устройства, затем настраивают/usr/share/X11/xorg.conf.d/10-evdev.conf для игнорирования получателя с помощью идентификатора для получателя, как найдено в Xorg.0.log.

1
ответ дан 13 August 2013 в 16:20

Другие вопросы по тегам:

Похожие вопросы: