В этом блоге вы сможете найти различную информацию на русском языке о MythTV и дистрибутиве GNU/Linux на основе Ubuntu и MythTV - Mythbuntu. Если вы хотите оставить комментарий, то не стесняйтесь, включены анонимные комментарии. P.S. Как это часто бывает, тематика блога немного вышла за пределы Mythbuntu (Ubuntu), но пока не вышла за пределы MythTV. Оставайтесь с нами. :)

вторник, 29 сентября 2009 г.

Настройка lirc и пультов ДУ в Mythbuntu (MythTV). Актуально также и для Ubuntu 9.04 и 9.10.

Сначала небольшое вступление. Этот блог я создал, для того чтобы поделиться своим (и не только своим) практическим опытом по использованию Mythbuntu - одного из дистрибутивов Linux, который заточен под использования в качестве основы для создания HTPC. Данный дистрибутив представляет собой Ubuntu, в которую интегрирован пакет MythTV и другие связанные с ним пакеты.
Решение завести этот блог связано с тем, что информации о Mythbuntu и о MythTV на русском языке не много. Конечно, информации на английском на порядки больше, но не все могут ей воспользоваться, хотя бы в силу незнания языка.
В первом сообщении, хотел бы описать настройку пультов ДУ в Mythbuntu (Актуально и для Ubuntu соответствующей версии). Решил начать я с пульта ДУ, так как сам лично, буквально несколько дней назад, приобрел пульт ДУ от Microsoft и занимался его настройкой. В результате я решил, что описать процесс настройки по свежим следам, будет неплохой мыслью. На самом деле информации о настройке пультов ДУ в lirc, достаточно много, но информация часто бывает неполна и разрознена, поэтому надеюсь, что представленная ниже информация будет полезной.

P.S. Критика приветствуется.


Настройка дистанционного управления в Mythbuntu

Если ваш пульт дистанционного управления присутствует в списке доступных пультов в Mythbuntu Control Centre, то вероятно, вся настройка будет заключаться в выборе его из списка. В том случае если у вас еще нет пульта, то правильным выбором будет приобрести один из присутствующих в списке. Но даже если у вас уже есть пульт, но он отсутствует в списке, то волноваться не стоит, так как обычно удается без особых проблем настроить большинство пультов. Давайте рассмотрим как это сделать на практике, сначала мы коснемся настройки пультов ДУ, которые прилагаются к ТВ тюнерам, а потом рассмотрим настройку пульта Microsoft MCE Remote Control.

Пульт дистанционного управления подключаемый к ТВ тюнеру

Практически всегда в комплекте к ТВ тюнеру прилагается пульт ДУ в комплекте с приемником, который подключается к специальному входу на ТВ тюнере. Некоторые такие пульты присутствуют в списке в Mythbuntu Control Centre, но все многообразие моделей там конечно не охватывается. Если ваш пульт находится в списке то просто выберите его и на этом настройка ДУ закончена, далее мы рассмотрим ситуацию, когда вашего пульта нет в списке.
Итак, вы внимательно просмотрели список моделей пультов ДУ и вашего пульта там не оказалось. Но в этом же списке есть пункт — Linux input layer (/dev/input/eventX), который позволяет настроить многие пульты. Чтобы включить поддержку таких пультов, выберите этот пункт и нажмите кнопку Применить.
Сделаем небольшое лирическое отступление о том как работают пульты ДУ в Linux. За работу пультов в Mythbuntu (и других дистрибутивах Linux) отвечает пакет lirc. Чтобы наш пульт заработал, нужно соответствующим настроить работу lirc. Для настройки lirc требуется должны образом изменить файлы /etc/lirc/hardware.conf и /etc/lirc/lircd.conf. Но для начала мы должны узнать устройство, которым является инфракрасный приемник, принимающий сигналы от пульта ДУ. Для этого запустите терминал и введите команду:
ls /dev/input/by-path/ | grep event-ir
Вероятно, результатом данной команды будет что-то типа:
pci-0000:02:01.0-event-ir
Теперь мы можем создать конфигурационный файл для нашего пульта (автор выполнял настройки на примере комплектного приемника и пульта ДУ тюнера Life View FlyTV Prime 34 FM Radio), для этого следует выполнить команду:
irrecord -H dev/input -d /dev/input/by-path/pci-0000:02:01.0-event-ir /home/alex/flytv34.conf
Здесь после параметра -H задается драйвер для lirc, в данном случае это dev/input, после параметра -d указывается устройство, к конце строки указывается имя файла, в который будет сохранена конфигурация.
Давайте немного притормозим и познакомимся с программой irrecord подробнее и перечислим все ключи с которыми может запускаться данная программа:


  • -h --help отображает справку



  • -v --version отображает версию программы



  • -a --analyseанализирует конфигурационный файл raw_codes



  • -f --forceвключает raw режим



  • -n --disable-namespace отключает проверку пространства имен кнопок



  • -l --list-namespaceотображает доступные имена кнопок



  • -H --driver=driver задает драйвер



  • -d --device=deviceопределяет с какого устройства будет происходить чтение кодов

Если программа irrecord не может распознать протокол работы пульта ДУ, то используйте опцию -f (--force), чтобы получить хотя бы конфигурационный файл содержащий raw коды команд.
Если конфигурационный файл уже существует, то программа irrecord будет использовать описание протокола пульта ДУ, которое содержится в существующем конфигурационном файле и будет распознавать и записывать только кнопки. Такой вариант удобно использовать когда доступен конфигурационный файл для какой-либо модели данного производителя, использующей аналогичный протокол. Вы можете использовать конфигурационные файлы, расположенные в каталоге /usr/share/lirc/remotes/generic/
На самом деле, скорее всего, вам не придется вникать в детали работы программы irrecord, и достаточно будет просто следовать нашим инструкциям. Итак, вернемся к настройке нашего пульта. После запуска команды приведенной несколькими абзацами выше, перед вами появится текст говорящий о том, что вы запустили программу irrecord. Нажмите клавишу Enter, как предложено и переходите к настройке пульта. После нажатия Enter вам будут даны инструкции как действовать далее, если вы понимаете английский язык, то просто следуйте инструкциям на экране, в противном случае мы сейчас расскажем что нужно делать.
Сначала программа попросит вас нажимать различные кнопки таким образом, чтобы заполнилось 2 линии по 80 точек, обратите внимание, что каждое нажатие не должно дать больше 10 точек. После этого вам будет предложено перейти к назначению имен кнопок пульта. Для этого сначала вводится имя кнопки, которое может состоять из букв и цифр, и нажимается Enter, а потом нажимается соответствующая кнопка на пульте. После ввода всех кнопок нажмите еще раз Enter и после этого вы перейдете к последнему этапу. Здесь вас попросят нажимать, как только можно быстро, одну и ту же кнопку на пульте, при этом не раздумывайте долго перед тем как начать нажимать кнопку, так как через 10 секунд программа irrecord прекратит ожидание и закончит свою работы, в результате чего мы получим некорректный конфигурационный файл. Если так и произойдет то, прежде чем запустить программу irrecord, удалите некорректный файл.
В том случае если все закончилось как положено, скопируем полученный файл в один из каталогов находящихся в каталоге /usr/share/lirc/remotes/, где находятся конфигурационные файлы для пультов. В нашем случае это будет каталог /usr/share/lirc/remotes/life-view/.
Также мы должны немного подредактировать файл /etc/lirc/hardware.conf, а именно — изменить строку с параметром REMOTE_DEVICE, чтобы она выглядела следующим образом:
REMOTE_DEVICE="/dev/input/by-path/pci-0000:02:01.0-event-ir"
Теперь подредактируем файл /etc/lirc/lircd.conf, в который добавим строку:
include "/usr/share/lirc/remotes/life-view/flytv34.conf."
Если теперь выполнить команду:
sudo /etc/init.d/lirc restart
то ваш пульт ДУ будет готов посылать команды, а приемник получать их.
Но не торопитесь, мы еще не настроили соответствие команд пульта ДУ командам выполняемым MythTV при их нажатии соответствующих клавиш. Чтобы назначить кнопкам пульта ДУ команды MythTV мы должны отредактировать файл lircrc, используемый в Mythbuntu по умолчанию. Этот файл находится в каталоге ~/.mythtv, вернее там находится не сам файл, а символическая ссылка на файл mythtv, находящийся в каталоге ~/.lirc.
В файле ~/.lirc/mythtv для каждой клавиши вы должны сопоставить выполняемое действие.
Каждая команда описывается конструкцией, аналогичной представленной ниже:
begin
remote = flytv34
prog = mythtv
button = RIGHT
config = Right
repeat = 0
delay = 0
end
Перечислим ключевые слова в файле lircrc:


  • begin — начинает описание



  • remote — название вашего пульта ДУ



  • prog — название приложения, в данном случае mythtv



  • button — название кнопки на пульте ДУ



  • config — название команды выполняемой при нажатии кнопки



  • repeat — позволяет повторно выполнять команду, пока нажата клавиша. Число 0 означает отсутствие повтора, положительные значения — означают выполнение команды на каждое n-ное срабатывание клавиши.



  • delay — позволяет игнорировать заданное количество повторов перед тем как будет выполнена команда. Этот параметр используется для того, чтобы предотвратить двойные срабатывания. Значение по умолчанию равно 0 и означает отсутвие задержки перед срабатыванием повтора.

Также могут быть использовано ключевое слово mode, которое задает вход в специальный режим. Можно объединить в группу несколько конфигураций (команд), заключив их в следующую конструкцию:
begin mode
...
end mode
Все конфигурации заключенные между внутри данной конструкции неактивны до тех пор пока программа не переходит в соответствующий режим с помощью соответствующего знака режима. Но при этом, конфигурации за пределами блока mode, по-прежнему остаются активными, даже в том случае, если вы вошли в какой-либо режим. Чтобы предотвратить действие глобальной конфигурации вы можете поместить в конец конфигурационного файла все блоки mode и при этом использовать флаг quit, который предотвращает использование последующих конфигураций.
Если режим соответствует имени приложения, то это приложение всегда будет запускаться, при переходе в данный режим. Рассмотрим следующую ситуацию: вы хотите запустить приложение xawtv с помощью irexec и перейти в режим tv. Тогда irexec перейдет в режим tv, но xawtv запуститься без какого-либо режима. Чтобы решить эту проблему переименуйте режим tv в xawtv. Другим вариантом решения является использование флага startup_mode как показано ниже:
begin
flags = startup_mode
mode = browser
end
Такая конструкция позволяет запустить программу в нужном режиме, который задается строкой
mode = browser
Если вы нажмете кнопку на пульте, то lirc будет искать в файле lircrc, с его начала до самого конца, конфигурации, которые соответствуют нажатой кнопке. Обратите внимание, что поиск не будет прекращен, даже если lirc найдет соответствующую конфигурацию, до тех пор пока не будет достигнут конец файла. Чтобы поиск прекратился при нахождении соответствующей конфигурации, вы должны использовать флаг quit. Также помните о том, что если конфигурация изменяет текущий режим, то изменения вступают в силу немедленно, и это означает, что дальнейший поиск конфигураций начнется со следующей конфигурации.
На самом деле, у нас нет особой необходимости использовать все возможности предоставляемые lirc, MythTV прекрасно будет работать если файл будет выглядеть примерно следующим образом:
begin
remote = flytv34
prog = mythtv
button = air/catv
config = Esc
end

begin
remote = flytv34
prog = mythtv
button = video
config = Left
end

begin
remote = flytv34
prog = mythtv
button = audio
config = Right
end

begin
remote = flytv34
prog = mythtv
button = power
config = P
end

begin
remote = flytv34
prog = mythtv
button = av_source
config = M
end

begin
remote = flytv34
prog = mythtv
button = full_screen
config = Q
end

begin
remote = flytv34
prog = mythtv
button = stereo
config = Z
end

begin
remote = flytv34
prog = mythtv
button = Mute
config = F9
end

begin
remote = flytv34
prog = mythtv
button = 1
config = 1
end

begin
remote = flytv34
prog = mythtv
button = 2
config = 2
end

begin
remote = flytv34
prog = mythtv
button = 3
config = 3
end

begin
remote = flytv34
prog = mythtv
button = vol+
repeat = 3
config = F11
end

begin
remote = flytv34
prog = mythtv
button = 4
config = 4
end

begin
remote = flytv34
prog = mythtv
button = 5
config = 5
end

begin
remote = flytv34
prog = mythtv
button = 6
config = 6
end

begin
remote = flytv34
prog = mythtv
button = vol-
repeat = 3
config = F10
end

begin
remote = flytv34
prog = mythtv
button = 7
config = 7
end

begin
remote = flytv34
prog = mythtv
button = 8
config = 8
end

begin
remote = flytv34
prog = mythtv
button = 9
config = 9
end

begin
remote = flytv34
prog = mythtv
button = ch+
repeat = 3
config = Up
end

begin
remote = flytv34
prog = mythtv
button = recall
config = I
end

begin
remote = flytv34
prog = mythtv
button = 0
config = 0
end

begin
remote = flytv34
prog = mythtv
button = enter
config = Return
end

begin
remote = flytv34
prog = mythtv
button = ch-
repeat = 3
config = Down
end

Пульт дистанционного управления Microsoft MCE Remote Control

Простым, но при этом функциональным и удобным решением проблемы дистанционного управления для MythTV (как, впрочем, и других медиаоболочек) является комплект из приемника и пульта ДУ, который называется Microsoft MCE Remote Control. Данный пульт имеет несколько модификаций, и lirc поддерживает практически все из них. Принципиально различаются две версии пультов MCE – первая и вторая. Обе эти версии поддерживаются пакетом lirc, разница заключается в том, что для первой версии комплекта от Microsoft нет поддержки выносных ИК передатчиков (обычно их называют IR Blaster), которые используются для управления различной аппаратурой. В настоящее время в продаже обычно имеются пульты второй версии, различных модификаций, а также совместимые пульты сторонних производителей, например Philips, и именно настройку таких пультов мы и рассмотрим ниже.

Настройка пульта Microsoft MCE Remote Control

Настройку пульта ДУ Microsoft MCE Remote Control в Mythbuntu не представляет никакой сложности благодаря наличию утилиты Mythbuntu Control Centre.
Для того чтобы включить поддержку Microsoft MCE Remote Control выполните следующие действия:


  1. Запустите Mythbuntu Control Centre и перейдите на вкладку Infrared Devices.



  2. Установите флажок Enable Remote Control (Включить поддержку дистанционного управления).



  3. Выберите из выпадающего списка Remote (Дистанционно управление) пункт Windows Media Center Remotes (new version Philips et al.)



  4. Установите также флажок Generate Dynamic Button Mappings, чтобы автоматически сгенерировать файл lircrc для MythTV (на самом деле будет сгенерирован файл ~/.lirc/mythtv, на который будет установлена символическая ссылка ~/.mythtv/@lircrc).



  5. Запустите заново lirc (или просто перезагрузите Mythbuntu) с помощью следующей команды:
    sudo /etc/init.d/lirc restart

Вот и все, теперь ваш пульт дистанционного управления готов вам служить, запустите MythTV и наслаждайтесь.
Позже при необходимости вы можете вручную редактировать файл ~/.lirc/mythtv. Автор бы порекомендовал например назначить кнопке Back действие Escape, так как используемая по умолчанию для действия Escape кнопка Stop находится достаточно далеко от кнопок управления курсором и пользоваться ей неудобно. При этом кнопка Back никак не задействована, и странно что разработчики не выполнили такие настройки по умолчанию. Для этого в файл ~/.lirc/mythtv внесите следующую конструкцию:
begin
remote = mceusb
prog = mythtv
button = Back
config = Escape
repeat = 0
delay = 0
end
На самом деле при установке флажка Generate Dynamic Button Mappings будут также созданы конфигурационные файлы и для других программ: elisa, mplayer, totem, vlc, xine, xmame, xmess. Нам пригодиться как минимум файл для программы mplayer, так как этот плеер может использоваться для воспроизведения видеофайлов в MythTV. А xmame и xmess – эмуляторы игровых приставок, которые могут использоваться в MythTV для игр.
Еще один момент на который стоит обратить внимание, это то, что при автоматическом генерировании конфигурационных файлов, параметр repeat будет иметь значение равное 0, это означает отсутствие повтора команды при удержании кнопки на пульте. Для ряда кнопок, таких как кнопки управления курсором и кнопки управления громкостью, удобно когда команда повторяется при удержании кнопки. Для этого в файле ~/.lirc/mythtv, для вышеперечисленных кнопок, необходимо установить значение параметра repeat в виде положительного числа, обычно подходящее значение находится в диапазоне от 1 до 3.

Настройка ИК передатчиков (IR Blaster)

Как мы уже говорили выше, кроме самого пульта и приемника в состав комплекта Microsoft MCE Remote Control входят также ИК передатчики, которые подключаются к ИК приемнику и позволяют управлять различными устройствами. Обычно при использовании MythTV таким устройством является приставка (STB — Set Top Box) для IPTV. Автор использовал один из ИК передатчиков именно для управления переключением каналов приставки IPTV Amino Aminet 110.
Давайте рассмотрим действия необходимые для управления внешним устройством с помощью ИК передатчика:


  1. В первую очередь необходимо добавить конфигурационный файл для пульта ДУ который вы собираетесь эмулировать с помощью ИК передатчика. Вы можете найти конфигурационный файл для очень многих пультов ДУ по адресу: http://lirc.sourceforge.net/remotes. Так автор нашел нужный файл для пульта ДУ от Amino Aminet 110. Если по указанному выше адресу, нужного файла нет, то можно использовать поиск в Интернет, возможно кто-то выложил файл на другом сайте. Если все-таки готового файла не нашлось, то вы можете сгенерировать его сами с помощью программы irrecord, о которой мы говорили в разделе «Пульт дистанционного управления подключаемый к ТВ тюнеру».



  2. Полученный или сгенерированный самостоятельно файл скопируйте в каталог /usr/share/lirc/transmitters, в нашем случае в данном каталоге мы создадим каталог /usr/share/lirc/transmitters/amino и скопируем файл (в нашем случае назовем файл aminet110.conf) в него.



  3. В файле /etc/lirc/lircd.conf добавим строку
    include /usr/share/lirc/transmitters/amino/aminet110.conf



  4. Выполним перезапуск lirc, чтобы применить новые настройки:
    $ sudo lircd restart



  5. Теперь можно посмотреть на список доступных команд, которые можно послать на ИК излучатель, для этого выполним следующую команду:
    $ irsend LIST name ""
    В данной команде name следует заменить на имя пульта дистанционного управления, как оно задано в конфигурационном файле в строке remote.



  1. Теперь можно попробовать послать какую-нибудь команду на ИК передатчик:
    $ irsend SET_TRANSMITTERS 1
    $ irsend SEND_ONCE name button

    Команда посылает на ИК передатчик под номером 1 (к приемнику MCE могут подключаться два передатчика, номер указан рядом с разъемом в который подключается передатчик), чтобы послать команду на второй передатчик, вместо цифры “1” укажите цифру “2”.



  2. Теперь у нас есть исходные данные чтобы составить скрипт для переключения каналов на STB. Скрипт может выглядеть таким образом:
    #!/bin/sh
    REMOTE_NAME=#######
    irsend SET_TRANSMITTERS 1
    for digit in $(echo $1 | sed -e 's/./& /g'); do

      irsend SEND_ONCE $REMOTE_NAME $digit sleep 0.4 # возможно интервал между нажатиями цифр нужно будет # изменить, в зависимости от модели STB

irsend SEND_ONCE $REMOTE_NAME Enter
exit 0


  1. Сохраните этот скрипт под подходящим именем, например chan_change



  2. Не забудьте установить для скрипта нужные права:
    $ chmod +x chan_change



  3. Теперь можно проверить работоспособность скрипта выполнив:
    chan_change 3

    Цифра «3» в данном случае означают номер канала на который мы хотим переключиться.

Если все работает, то можно в настройках бэкэнда указать получившийся скрипт для переключения каналов. Для этого запустите настройку бэкэнда MythTV и выберите пункт 4. Соединение входов. В открывшемся окне настроек Соединение входов в поле Внешняя команда смены канала введите полный путь к файлу chan_change.

Использованные источники:
http://lirc.org/
http://www.mythtv.org/wiki/MCE_Remote#Version_2

Данный текст распространяется под лицензией Creative Commons Attribution/Share-Alike

4 комментария:

  1. Здравствуйте Алекс.Достался по случаю пульт нонаме опознается в системе как P05-R определился сразу, но почему-то как мышь и клавиатура. В мифе половина кнопок не опознается подскажите как его определить в лирке? На что он может быть похож...

    ОтветитьУдалить
  2. [ 2932.022652] input: Cy se P-05R UIR_V2B as /devices/pci0000:00/0000:00:1d.0/usb5/5-2/5-2:1.0/input/input13
    [ 2932.022829] generic-usb 0003:0755:2626.0002: input,hidraw1: USB HID v1.10 Keyboard [Cy se P-05R UIR_V2B] on usb-0000:00:1d.0-2/input0
    [ 2932.048944] input: Cy se P-05R UIR_V2B as /devices/pci0000:00/0000:00:1d.0/usb5/5-2/5-2:1.1/input/input14
    [ 2932.049168] generic-usb 0003:0755:2626.0003: input,hidraw2: USB HID v1.10 Mouse [Cy se P-05R UIR_V2B] on usb-0000:00:1d.0-2/input1
    [ 3088.016330] usb 5-2: USB disconnect, address 3
    [ 3096.440191] usb 5-2: new low speed USB device using uhci_hcd and address 4
    [ 3096.618426] usb 5-2: configuration #1 chosen from 1 choice
    [ 3096.637686] input: Cy se P-05R UIR_V2B as /devices/pci0000:00/0000:00:1d.0/usb5/5-2/5-2:1.0/input/input15
    [ 3096.637865] generic-usb 0003:0755:2626.0004: input,hidraw1: USB HID v1.10 Keyboard [Cy se P-05R UIR_V2B] on usb-0000:00:1d.0-2/input0
    [ 3096.663980] input: Cy se P-05R UIR_V2B as /devices/pci0000:00/0000:00:1d.0/usb5/5-2/5-2:1.1/input/input16
    [ 3096.666193] generic-usb 0003:0755:2626.0005: input,hidraw2: USB HID v1.10 Mouse [Cy se P-05R UIR_V2B] on usb-0000:00:1d.0-2/input1

    Вот такой вывод дает dmesg

    ОтветитьУдалить
  3. На что похож трудно сказать, хорошо бы знать его название, пусть оно и "нонеймовское", тогда можно просто тупо нагуглить. Вообще с такими случаяими (определение как клавиатура и мышь) как я понимаю многие сталкиваются. Я погуглил, пробежал по диагонали, ясной картины у меня не получилось, но нагугливается всякое, попробуйте погуглить по такой фразе "lirc пульт ДУ как клавиатура", вроде выдает на первой паре страничек несколько полезных ссылок.

    ОтветитьУдалить
  4. Спасибо буду пробовать

    ОтветитьУдалить

Постоянные читатели

Архив блога

Обо мне

Великий Новгород, Russia