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'

Я полностью в тупике.

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, чтобы он игнорировал ИК-вход и использовал 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.

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