субота, 12 вересня 2009 р.

lirc і CyberLink Remote Control


Чорт дьорнув мене купити оцей пульт, який забрав в мене кілька годин часу з настройкою під лінукс. Все би було добре, якби при підключенні приймача не появлялося два вхідні пристрої /dev/input/event6 і /dev/input/event7, один з яких відповідав за верхній ряд кнопок, а другий за нижній. Інтернет багато не дав, почав копати в напрямку як заставити lirc сприймати два девайси відразу. Що найсмішніше, рішення знайшлося на сторінці lirc (Using multiple different devices simultaneously). Просто відключив lircd при завантаженні, і додав дві стрічки в /etc/rc.local:

lircd -d `grep -l 'TopSeed' /sys/class/input/input*/name | tail -n2 | awk 'NR==1' | sed -e s'|/name||' | sed -e s'|sys/class/input/input|dev/input/event|'` -H dev/input --output=/dev/lircd1 --pidfile=/var/run/lircd1.pid --listen

lircd -d `grep -l 'TopSeed' /sys/class/input/input*/name | tail -n2 | awk 'NR==2' | sed -e s'|/name||' | sed -e s'|sys/class/input/input|dev/input/event|'` -H dev/input --output=/dev/lircd --pidfile=/var/run/lircd.pid --connect=localhost:8765

Замість lircd.conf використав lircd.conf.devinput з /usr/share/lirc/remote/devinput, як remote_device відповідно використано devinput. Все працює :-)

PS Приклад для systemd:
$cat lircd-cyberlink.service
[Unit]
Description=Linux Infrared Remote Control

[Service]
ExecStartPre=/usr/bin/rm -rf /dev/lircd* /var/run/lirc/lirc*.pid
ExecStartPre=/usr/bin/ln -sf /dev/lircd /var/run/lirc/lircd
ExecStart=/usr/local/bin/lircvdr
ExecStop=/usr/bin/rm -rf /dev/lircd* /var/run/lirc/lirc*.pid

Type=forking
PIDFile=/var/run/lirc/lircd.pid

[Install]
WantedBy=multi-user.target

Google Analytics