Настройка LIRC (Управляем приложениями с пульта ДУ)

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Ответить
Аватара пользователя
Valerius
Бывший модератор
Сообщения: 1469
Статус: Отпетый КДЕ'шник

Настройка LIRC

Сообщение Valerius »

После того как я подключил TV-Out своей видеокарты к телевизору и смог валяясь на диване нормально смотреть фильмы вытянутые по локалке, возникла просто острейшая необходимость управления плеером от пульта ДУ. Поэтому пришлось посмотреть в сторону LIRC. Ниже описана последовательность настройки и использование lirc с КДЕ-приложениями.

Сам фотоприёмник был собран по этой схеме и воткнут в 1-й COM-порт. Схема даже не простая а очень простая, собрать её способен каждый кто хотя бы пару раз держал в руках паяльник. Комплектующие вместе с разъёмом обошлись в 1.5$.

После установки lirc попробуем выполнить следующие команды:

Код: Выделить всё

setserial /dev/ttyS0 uart none
modprobe lirc_serial

Если всё нормально, можно протестировать, воспринимает ли приёмник команды с пульта. Запускаем:
Т.к. в Мандриве создаётся файл устройства /dev/lirc0 а не /dev/lirc, то нужно явно указать девайс:

Код: Выделить всё

mode2 -d /dev/lirc0

Если при нажатии кнопок пульта на консоль начинает что-то выводиться, то значит "железо" у нас работает. Теперь нужно создать/найти config-файл для пульта. Много уже готовых конфигов для пультов есть на странице lirc. Но для моего пульта там ничего не нашлось. Ничего страшного, такой файл можно сделать самому. Запускаем

Код: Выделить всё

irrecord lircd.conf -d /dev/lirc0
и следуем инструкциям на экране. Желательно как можно точнее следовать этим инструкциям - от этого будет зависеть "качество" конфига. Вначале вас попросят нажимать удерживая не больше 1 сек. разные кнопки, при этом каждое нажатие должно дать не больше 10 точек. Это нужно делать пока не заполнятся 2 лини по 80 точек. После этого необходимо назначить имена разным кнопкам пульта. На каждую кнопку вводим название, жмём Enter и нажимаем соответствующую кнопку на пульте. После назначения всех кнопок давим на Enter. И на последок вас попросят многократно и быстро понажимать любую кнопку причём без удерживания. Кстати когда прога ожидает нажатия кнопок пульта, не нужно долго раздумывать – она будет ждать 10 сек. а потом вывалится и нужно всё начинать сначала не забыв кстати удалить "испорченный" файл, потому как irrecord не будет писать в существующий файл. Всё, конфиг готов и его нужно скопировать в /etc/lircd.conf

Теперь можно настроить демон lircd. В Мандриве он настраивается в файле /etc/sysconfig/lircd. Мой файл без комментов выглядит так:

Код: Выделить всё

DRIVER=default
HWMOD="lirc_serial"
DEVICE=/dev/lirc0
COM_PORT=/dev/ttyS0
DRIVER_OPTS="irq=4 io=0x3f8"

После настройки файла демон lircd должен нормально запуститься.

Теперь можно настраивать IRKick - это КДЕ-шный сервис для работы с пультами ДУ, его настройки находятся в Центре Управления или после запуска в иконке в трее. Т.к. IRKick работает с приложениями через другой КДЕ-шный сервис DCOP, то и управлять он может только КДЕ-приложениями. Для других приложений придётся использовать утилиты самого lirc. Некоторые приложения типа amaroK, kdetv, Noatan имеют соответствующие плагины для IRKick и довольно легко настраиваются, но к примеру у моего любимого kplayer-а такого плагина нет, поэтому будем управлять kplayer-ом через команды DCOP. Запускаем kplayer, в настройках IRKick жмём "добавить" -> функцию выполняющегося приложения, и выбираем нужную кнопку пульта. Потом kplayer->kplayer-mainwindow#1->activateAction. После этого на следующей вкладке вписываем нужное действие. Список всех действий kplayer-а можно получить командой:

Код: Выделить всё

dcop kplayer kplayer-mainwindow#1 actions


Вот собственно и вся настройка. Чтобы lirc лучше реагировал на команды с пульта, лучше его запускать с повышенным приоритетом. Для этого в файле /etc/rc.d/init.d/lircd находим строку

Код: Выделить всё

daemon lircd ${OPTIONS}
и заменяем её на

Код: Выделить всё

daemon nice -n -15 lircd ${OPTIONS}
Теперь lircd будет намного отзывчивее :)
Свобода есть тонкая полоска между диктатурой и анархией.

---------------------
Mandriva Linux PowerPack 2006 (Cooker-нутая) / KDE-3.5.1
Спасибо сказали:
Аватара пользователя
serg_sk
Бывший модератор
Сообщения: 2749
Статус: <3 Anime
ОС: Gentoo Linux <3
Контактная информация:

Re: Настройка LIRC

Сообщение serg_sk »

http://forums.gentoo.org/viewtopic-t-364624.html -- тут навтушка для гентушников, но правда на англиском.
Не ждали?! А я приперся!
Помойка Gentoo'шника
-------
Спасибо сказали:
Murz
Сообщения: 14
ОС: Kubuntu (Ubuntu Linux)

Re: Настройка LIRC

Сообщение Murz »

Никак не могу заставить ИК-порт на Kubuntu 9.04 понимать сигналы от ИК-пульта. Через mode2 валятся постоянно разные цифры от одной и той же кнопки, в результате irrecord выдает ошибку:
Something went wrong. Please try again. (9 retries left)

Девайса пробовал 2: Tekram IR 210 B и Igor Cesko serial IR receiver.
Мамка на чипсете NVIDIA GeForce 8200.
Как мне кажется, проблема в скорости COM-порта, но никак не найду где в Linux её можно задать.
Могу выложить результаты mode2 если помогут.
Может кто чего посоветовать чтобы заставить это всё работать?
Спасибо сказали:
WdanteW
Сообщения: 95

Re: Настройка LIRC

Сообщение WdanteW »

подскажите как собрать правильно полностью от инфракрасного который висит на com порте до настройки самого lirc
Для Mandriva или Ubuntu.
Я уже пересобирал все несколько раз но в итоге вариант один и тот же

Код: Выделить всё

mode2: could not get file information for /dev/lirc
mode2: default_init(): No such file or directory
Спасибо сказали:
Murz
Сообщения: 14
ОС: Kubuntu (Ubuntu Linux)

Re: Настройка LIRC

Сообщение Murz »

WdanteW писал(а):
24.10.2009 22:32
подскажите как собрать правильно полностью от инфракрасного который висит на com порте до настройки самого lirc
Для Mandriva или Ubuntu.
Я уже пересобирал все несколько раз но в итоге вариант один и тот же

Код: Выделить всё

mode2: could not get file information for /dev/lirc
mode2: default_init(): No such file or directory

У меня имя устройство было /dev/lirc0 или /dev/lirc1
Команда запуска:
#mode2 --device=/dev/lirc0
При какой команде и на каком этапе выдаются эти ошибки?
Спасибо сказали:
Ответить