dr_magnus 14.04.2010 00:31
How-to`s — Мой путь настройки LIRC
По просьбам трудящихся опишу как я настраивал LIRC.У меня есть какой-то безымянный ТВ-тюнер, а у него, в свою очередь, есть пульт ДУ. На базе этого безобразия я расскажу о настройке и конфигурации LIRC'a.
Небольшое отступление.
Это уже третий ТВ-тюнер, который попал в мои руки. Первый был фирмы KWorld на базе чипсета Philips и использовал драйвер gpio - его я так и не сумел заставить работать. Второй (какой-то VideoMate на чипе saa7134) мне дали просто на один день пощупать - хоть он и определялся как devinput-устройство, но "искаропки" не запустился, а возится с ним у меня просто не было времени.
Итак, моя конфигурация:
# lspci
02:09.0 Multimedia controller: Philips Semiconductors SAA7134/SAA7135HL Video Broadcast Decoder (rev 01)
Для начала я продублирую свой пост, в котором я подружил ТВ-тюнер и UDEV с некоторыми пояснениями.
Часть 1. Конфигурация UDEV.
Мой пульт работает через драйвер devinput, а этим устройствам номер event'a udev при каждой перезагрузке назначает каким-то произвольным образом. Т.е. если мой пульт сейчас висит на /dev/input/event5, то при следующей перезагрузке udev ему может присвоить /dev/input/event6. Естественно, если наш LIRC в качестве параметра LIRC_DEVICE использует /dev/input/event5, то работать после перезагрузки он перестанет.
Это можно исправить, указав в правилах udev'а создание симлинка на наше устройство.
Поиск нашего пульта:
# cat /proc/bus/input/devices
I: Bus=0001 Vendor=5168 Product=0138 Version=0001
N: Name="saa7134 IR (LifeView FlyVIDEO30"
P: Phys=pci-0000:02:09.0/ir0
S: Sysfs=/devices/pci0000:00/0000:00:1e.0/0000:02:09.0/input/input6
U: Uniq=
H: Handlers=kbd event6
B: EV=100003
B: KEY=c0304 390000 0 0 0 0 0 0 c0000002 1e0000 0 0 10000ffc
Нас интересует номер input'a, присвоенный нашему устройству. В данном случае - это input6.
С помощью udevadm выясняем атрибуты нашего устройства:
# udevadm info -a -p /sys/class/input/input6
Информации вываливается довольно-таки много. Нам интересна та, которая однозначно определяет наше устройство:
....
KERNEL=="input6"
SUBSYSTEM=="input"
DRIVER==""
ATTR{name}=="saa7134 IR (LifeView FlyVIDEO30"
ATTR{phys}=="pci-0000:02:09.0/ir0"
ATTR{uniq}==""
ATTR{modalias}=="input:b0001v5168p0138e0001-e0,1,14,k71,72,73,74,81,9E,9F,170,173,174,175,182,188,189,192,193,ramlsfw"
....
Создаем правило для UDEV, которое будет создавать нам симлинк с нашего устройства на /dev/lirc0:
# cat /etc/udev/rules.d/10-lirc.rules
KERNEL=="event*", ATTRS{name}=="saa7134 IR (LifeView FlyVIDEO30", SYMLINK="lirc0"
Теперь, при следующей перезагрузке, мы получим устройство /dev/lirc0, которое будем однозначно указывать на наш девайс.
Часть 2. Установка, конфигурация и настройка LIRC.
Каждый готовит кошек как умеет. У меня в Арче для установки LIRC'a достаточно двух пакетов - lirc и lirc-utils.
Теперь неплохо бы настроить наш пульт. Для этого используется файл /etc/lirc/lircd.conf и утилита irrecord (man irrecord).
Примечание:
Файл /etc/lirc/lircd.conf содержит "общепринятые" названия кнопок на пульте и их управляющие коды, получаемые непосредственно с пульта. Если кому-то повезет, то этот файл для своего устройства можно найти на оффсайте LIRC'a. Мне не повезло :-)
# irrecord --disable-namespace -H devinput -d /dev/lirc0 /etc/lirc/lircd.conf
Здесь нужно немного пояснить параметр --disable-namespace. Оказывается, что если его не указать, то irrecord ищет какие-то "общепринятые" названия кнопок в каком-то одному ему известном name-space. Т.е. мы просто не сможем называть кнопки пульта так, как нам нравится.
irrecord сначала предложит нам нажать любую кнопку на пульте и подержать её, а затем указать имя для кнопки и нажать её. Поочередно обзываем все кнопки пульта и жмакаем их. Когда закончили - просто нажали ENTER. irrecord радостно сообщит нам об удачном создании файла /etc/lirc/lircd.conf.
Ну что же, основной файл конфигурации создан и можно перейти к запуску демона.
Проверим настройки:
# cat /etc/conf.d/lircd.conf
LIRC_DEVICE="/dev/lirc0"
LIRC_DRIVER="devinput"
LIRC_EXTRAOPTS=""
LIRC_CONFIGFILE=""
Запускаемся:
# /etc/rc.d/lircd start
Для проверки LIRC'a служит утилитка irw - при ее запуске в терминале при нажатии на клавишу пульта отображается название клавиши и её управляющий код. Вот пример ее работы:
0000000080010074 00 POWER /etc/lirc/lircd.conf
0000000080010188 00 AUDIO /etc/lirc/lircd.conf
0000000080010189 00 VIDEO /etc/lirc/lircd.conf
0000000080010175 00 TV /etc/lirc/lircd.conf
0000000080010188 00 AUDIO /etc/lirc/lircd.conf
0000000080010189 00 VIDEO /etc/lirc/lircd.conf
0000000080010175 00 TV /etc/lirc/lircd.conf
Если все хорошо, то можно перейти к следующей части.
Часть 3. ~/.lircrc
Для того, что бы задействовать пульт в своей системе нужно рассказать об этом приложению, используещему пульт (как-то не по-русски фраза звучит - подправьте кто сможет). Для этого служит файл ~/.lircrc, в котором описывается как и какому приложению реагировать на нажатие клавиши на пульте.
Вот мой файл :-):
# cat ./.lircrc
include .lirc/lircrc.mplayer
В большинство мультемедийных приложений под Линуксом уже включен модуль/плагин для работы с LIRC'ом, поэтому для работы таких приложений как mplayer, vlc, totem, etc достаточно просто поставить галочку в нужном месте.
Вот моя конфигурация для mplayer'a:
# cat ./.lirc/lircrc.mplayer
begin
button = VOL_PLUS
prog = mplayer
config = volume 10
repeat = 5
end
begin
button = VOL_MINUS
prog = mplayer
config = volume -10
repeat = 5
end
begin
button = MUTE
prog = mplayer
config = mute
end
begin
button = POWER
prog = mplayer
config = quit
end
begin
button = FULL_SCREEN
prog = mplayer
config = vo_fullscreen
end
begin
button = CH_PLUS
prog = mplayer
config = seek 30
end
begin
button = CH_MINUS
prog = mplayer
config = seek -30
end
begin
button = 0
prog = mplayer
config = pause
end
Отдельного упоминания заслуживает программа irexec - она передает управляющие команды тем программам, которые не умеют самостоятельно работать с LIRC'ом. Но это уже - домашнее задание.
Спасибо всем за внимание.
З.Ы. Предлагаю в камментах выкладывать свои конфиги lircrc, дабы узнать как и какими программами можно управлять с помощью пульта.
Тэги: archlinux lirc
да. шнурком с аудио-выхода тюнера на аудио-вход звуковой.
по pci как-то никогда даже не заморачивался - нужды не было.
по pci как-то никогда даже не заморачивался - нужды не было.
Эх жалко, а то в гугле одна вода по этому поводу =.((
ЗЫ
атопик статья знатная получилась =.)))
ЗЫ
а
посмотри вот эту ссылку - я не экспериментировал, но там вроде как твоя проблемка решается
Отлично, спасибо за статью - у меня была проблема с Lirc`ом, которую я так и не решил. Не хотел работать и все тут - без указания, так сказать, причин.
Потом-то я понл, что дело было не в бобине - просто инпут не тот указывал. Но поборолся я с ним знатно тогда.
P.S. Пожалуй в избранное положу - вдруг да пригодится на будущее.
Потом-то я понл, что дело было не в бобине - просто инпут не тот указывал. Но поборолся я с ним знатно тогда.
P.S. Пожалуй в избранное положу - вдруг да пригодится на будущее.
Заработало !!!
Моя система Убунта 10.04 бета 2, пульт sony rm-ga002, приемник сделан своими руками, подключено всё на СОМ1.
Поехали.
1) ставим lirc и setserial + выполняем действия указаные в 2) статьи изложеной выше, список пультов на которые есть готовое конфиги моего тоже не было пришлось учить с помощью irrecord --disable-namespace -H devinput -d /dev/lirc0 /etc/lirc/lircd.conf, единственное у меня почему то программа отказывадась принимать второю и последующие клавиши, пришлось запускать irrecord ещё из параметром -f
вот что получилось (для теста завёл только 2 клавиши звук+ звук-):
# Please make this file available to others
# by sending it to
#
# this config file was automatically generated
# using lirc-0.8.6(default) on Wed Apr 14 15:57:35 2010
#
# contributed by
#
# brand: lircd.conf
# model no. of remote control:
# devices being controlled by this remote:
#
begin remote
name lircd.conf
flags RAW_CODES|CONST_LENGTH
eps 30
aeps 100
gap 44849
begin raw_codes
name KEY_VOLUMEUP
2422 574 624 559 1220 553
636 551 627 568 1233 561
618 554 647 544 1234 568
632 552 627 552 638 557
629
name KEY_VOLUMEDOWN
2414 577 1224 561 1232 553
630 546 623 568 1237 560
626 550 629 558 1236 564
639 550 622 563 628 563
625
end raw_codes
end remote
и пример файла /etc/lirc/hardware.conf
2) Пробуем
перезапускаем сервер lirc
пробуем устройство
запускаем irw проверяем привязку к клавишам
3) Конфигурируем приложение
в принцепе здесь тоже что и в основной Часть 3. ~/.lircrc, на собственном примере покажу настройку Totem 2.30.0, вот мой пример
сохраняемся, пробуем, у меня заработало !!!!!
З.Ы. может что не так по тексту правте, ибо долго возился с даным девайсом, перепробывал кучу всего, может чегото пропустил...
Моя система Убунта 10.04 бета 2, пульт sony rm-ga002, приемник сделан своими руками, подключено всё на СОМ1.
Поехали.
1) ставим lirc и setserial + выполняем действия указаные в 2) статьи изложеной выше, список пультов на которые есть готовое конфиги моего тоже не было пришлось учить с помощью irrecord --disable-namespace -H devinput -d /dev/lirc0 /etc/lirc/lircd.conf, единственное у меня почему то программа отказывадась принимать второю и последующие клавиши, пришлось запускать irrecord ещё из параметром -f
вот что получилось (для теста завёл только 2 клавиши звук+ звук-):
# Please make this file available to others
# by sending it to
#
# this config file was automatically generated
# using lirc-0.8.6(default) on Wed Apr 14 15:57:35 2010
#
# contributed by
#
# brand: lircd.conf
# model no. of remote control:
# devices being controlled by this remote:
#
begin remote
name lircd.conf
flags RAW_CODES|CONST_LENGTH
eps 30
aeps 100
gap 44849
begin raw_codes
name KEY_VOLUMEUP
2422 574 624 559 1220 553
636 551 627 568 1233 561
618 554 647 544 1234 568
632 552 627 552 638 557
629
name KEY_VOLUMEDOWN
2414 577 1224 561 1232 553
630 546 623 568 1237 560
626 550 629 558 1236 564
639 550 622 563 628 563
625
end raw_codes
end remote
# /etc/lirc/hardware.conf
#
#Chosen Remote Control
REMOTE=""
REMOTE_MODULES="lirc_serial"
REMOTE_DRIVER="default"
REMOTE_DEVICE="/dev/lirc0"
REMOTE_LIRCD_CONF="/etc/lirc/lircd.conf"
REMOTE_LIRCD_ARGS=""
LOAD_MODULES=true
MODULES="lirc_serial"
LIRCD_CONF="/etc/lirc/lircd.conf"
#Enable lircd
START_LIRCD="true"
#
#Chosen Remote Control
REMOTE=""
REMOTE_MODULES="lirc_serial"
REMOTE_DRIVER="default"
REMOTE_DEVICE="/dev/lirc0"
REMOTE_LIRCD_CONF="/etc/lirc/lircd.conf"
REMOTE_LIRCD_ARGS=""
LOAD_MODULES=true
MODULES="lirc_serial"
LIRCD_CONF="/etc/lirc/lircd.conf"
#Enable lircd
START_LIRCD="true"
2) Пробуем
перезапускаем сервер lirc
* Stopping remote control daemon(s): LIRC < OK >
* Loading LIRC modules < OK >
* Starting remote control daemon(s) : LIRC < OK >
* Loading LIRC modules < OK >
* Starting remote control daemon(s) : LIRC < OK >
пробуем устройство
при нажатии должны появлятся цифиркизапускаем irw проверяем привязку к клавишам
0000000000000001 00 KEY_VOLUMEUP lircd3.conf
0000000000000001 01 KEY_VOLUMEUP lircd.conf
0000000000000001 02 KEY_VOLUMEUP lircd.conf
0000000000000001 03 KEY_VOLUMEUP lircd.conf
0000000000000001 04 KEY_VOLUMEUP lircd.conf
0000000000000001 05 KEY_VOLUMEUP lircd.conf
0000000000000002 00 KEY_VOLUMEDOWN lircd.conf
0000000000000002 01 KEY_VOLUMEDOWN lircd.conf
0000000000000002 02 KEY_VOLUMEDOWN lircd.conf
0000000000000002 03 KEY_VOLUMEDOWN lircd.conf
0000000000000002 04 KEY_VOLUMEDOWN lircd.conf
0000000000000002 05 KEY_VOLUMEDOWN lircd.conf
0000000000000002 06 KEY_VOLUMEDOWN lircd.conf
0000000000000001 01 KEY_VOLUMEUP lircd.conf
0000000000000001 02 KEY_VOLUMEUP lircd.conf
0000000000000001 03 KEY_VOLUMEUP lircd.conf
0000000000000001 04 KEY_VOLUMEUP lircd.conf
0000000000000001 05 KEY_VOLUMEUP lircd.conf
0000000000000002 00 KEY_VOLUMEDOWN lircd.conf
0000000000000002 01 KEY_VOLUMEDOWN lircd.conf
0000000000000002 02 KEY_VOLUMEDOWN lircd.conf
0000000000000002 03 KEY_VOLUMEDOWN lircd.conf
0000000000000002 04 KEY_VOLUMEDOWN lircd.conf
0000000000000002 05 KEY_VOLUMEDOWN lircd.conf
0000000000000002 06 KEY_VOLUMEDOWN lircd.conf
3) Конфигурируем приложение
в принцепе здесь тоже что и в основной Часть 3. ~/.lircrc, на собственном примере покажу настройку Totem 2.30.0, вот мой пример
#Custom lircrc generated via mythbuntu-lirc-generator
#All application specific lircrc files are within ~/.lirc
include ~/.lirc/mythtv
include ~/.lirc/mplayer
include ~/.lirc/xine
include ~/.lirc/vlc
include ~/.lirc/xmame
include ~/.lirc/xmess
include ~/.lirc/totem
include ~/.lirc/elisa
begin
prog = Totem
remote = *
button = KEY_VOLUMEDOWN
repeat = 1
config = volume_down
end
begin
prog = Totem
remote = *
button = KEY_VOLUMEUP
repeat = 1
config = volume_up
end
#All application specific lircrc files are within ~/.lirc
include ~/.lirc/mythtv
include ~/.lirc/mplayer
include ~/.lirc/xine
include ~/.lirc/vlc
include ~/.lirc/xmame
include ~/.lirc/xmess
include ~/.lirc/totem
include ~/.lirc/elisa
begin
prog = Totem
remote = *
button = KEY_VOLUMEDOWN
repeat = 1
config = volume_down
end
begin
prog = Totem
remote = *
button = KEY_VOLUMEUP
repeat = 1
config = volume_up
end
сохраняемся, пробуем, у меня заработало !!!!!
З.Ы. может что не так по тексту правте, ибо долго возился с даным девайсом, перепробывал кучу всего, может чегото пропустил...
в данном случае нужно писать так: "аффтар жжет - пишЫ исчо" :-)
Такая хорошая статья, а комментариев мало - надо хорошенько расписать плюсы LIRC и народ сразу начнёт ресиверы на коленке собирать =.)
А я для себя нашёл выход в виде anyremote - с телефона, по синему зубу.
А я для себя нашёл выход в виде anyremote - с телефона, по синему зубу.
прикольно. какой, кстати, радиус действия? и не сильно ли мешают какие-нить преграды, типа плюшевого пингвина на столе?
я просто как-то мышу по синезубу подключал, так пришлось этот самый зуб на шнурок вешать - из под стола не работала.
В пределах прямой видимости - далеко, через железобетон - конечно не берёт, сквозь столы, кружки с пивом - на ура...
Но, при том что БТ-брелок воткнут сзади в корпус, когда между брелком и телефоном весь кейс вдоль, то на близком расстоянии до 2 метров подглючивает(видимо наводки от железа), но эта зона шириной всего сантиметров 10-15 и не беспокоит =.)
Но, при том что БТ-брелок воткнут сзади в корпус, когда между брелком и телефоном весь кейс вдоль, то на близком расстоянии до 2 метров подглючивает(видимо наводки от железа), но эта зона шириной всего сантиметров 10-15 и не беспокоит =.)
@ dr_magnus
Пытаюсь по разным мануалам отстроить свой пульт в Ubuntu 10.04. В 9.04 и 9.10 всё отстаивалось на раз , только по ATTRS{modalias}. Что-то изменилось в 10.04 , но процедура irrecord на "Press RETURN to continue." ни на одну кнопку пульта не реагирует.
Можете помочь советом?
Пытаюсь по разным мануалам отстроить свой пульт в Ubuntu 10.04. В 9.04 и 9.10 всё отстаивалось на раз , только по ATTRS{modalias}. Что-то изменилось в 10.04 , но процедура irrecord на "Press RETURN to continue." ни на одну кнопку пульта не реагирует.
Можете помочь советом?
p.s. на команды реагирует адекватно
~$ ls -l /dev/input
drwxr-xr-x 2 root root 80 2010-07-29 19:19 by-id
drwxr-xr-x 2 root root 140 2010-07-29 19:19 by-path
lrwxrwxrwx 1 root root 6 2010-07-29 19:19 Cyp -> event4
~$ irw
0000000080010002 00 KEY_1 devinput
0000000080010003 00 KEY_2 devinput
0000000080010074 00 KEY_POWER devinput
Сейчас определил пульт по ATTRS{modalias}. До этого аналогичная ситуация была по ATTRS{name} на lirc0
~$ ls -l /dev/input
drwxr-xr-x 2 root root 80 2010-07-29 19:19 by-id
drwxr-xr-x 2 root root 140 2010-07-29 19:19 by-path
lrwxrwxrwx 1 root root 6 2010-07-29 19:19 Cyp -> event4
~$ irw
0000000080010002 00 KEY_1 devinput
0000000080010003 00 KEY_2 devinput
0000000080010074 00 KEY_POWER devinput
Сейчас определил пульт по ATTRS{modalias}. До этого аналогичная ситуация была по ATTRS{name} на lirc0
Вы звук с тюнера заворачиваете шнурком во вход аудиокарты или по PCI забираете? У меня тоже saa7134 что то я никак не разберусь как без провода звук забрать, вроде это должен уметь делать модуль saa7134_alsa(при условии что тюнер умеет), но я даже не знаю с чего начать =.(