LIRC (англ. Linux Infrared Remote Control, «управление Linux при помощи инфракрасного пульта дистанционного управления») — программный пакет, добавляющий в операционную систему Linux (в том числе в Ubuntu) возможность ввода информации при помощи инфракрасного пульта дистанционного управления (ПДУ). При помощи LIRC в Ubuntu можно настроить практически любую кнопку любого ПДУ на выполнение любого действия компьютера.

Описание

Пакет LIRC состоит из двух демонов и нескольких обычных программ:

  • lircd — демон, декодирующий информацию об инфракрасных сигналах, поступающую от драйвера инфракрасного приёмника в ядре Linux, и предоставляющий полученную информацию через сокет домена UNIX, а также принимающий команды на отправку сигналов и передающий информацию для отправки этих сигналов драйверу приёмника. Запускается при старте системы с правами суперпользователя.
  • lircmd — демон, получающий через сокет от lircd информацию о нажатиях кнопок ПДУ и транслирующий эти нажатия в движения указателя мыши.
  • irrecord — программа, позволяющая исследовать протокол, используемый ПДУ, и автоматически подготовить информацию для конфигурационного файла для lircd для использования LIRC с этим ПДУ. Программа взаимодействует напрямую с драйвером инфракрасного приёмника, без lircd.
  • ircat — программа, получающая через сокет от lircd информацию о нажатиях кнопок ПДУ, транслирующая эти нажатия в команды, отправляемые приложению, использующему управление при помощи ПДУ, и выводящая эти команды на экран.
  • И другие.

В пакет также входит база конфигурационных файлов для lircd для настройки LIRC на работу с некоторыми ПДУ и инфракрасными приёмниками.

Поддерживаемое аппаратное обеспечение

Для управления Ubuntu при помощи ПДУ подойдёт практически любой ПДУ. При выборе пульта обычно приходится обращать внимание только на количество и расположение кнопок и надписей на них. Кроме ПДУ требуется также подключённый к компьютеру инфракрасный приёмник, для которого имеется драйвер в ядре Linux. Если драйвер имеется, то в выводе команды dmesg будет информация о подключении и настройке приёмника.

Установка

Для установки LIRC следует установить пакет lirc. Во время установки откроется диалог выбора используемых ПДУ и инфракрасного приёмника (1-й список) и инфракрасного приёмопередатчика (2-й список). Если в предлагаемом списке ПДУ и приёмников (1-й список) имеется ваш ПДУ и/или приёмник, то можно этот пункт выбрать. Это привёдет к созданию конфигурационных файлов для lircd, один из которых (/etc/lirc/hardware.conf) настраивает автоматическую подгрузку модулей ядра Linux, содержащих драйвера для выбранного приёмника, а другой (/etc/lirc/lircd.conf) настраивает lircd на работу с выбранным ПДУ. Файлы создаются путём копирования из идущей в составе LIRC базы конфигурационных файлов для различных устройств. При этом если в выводе команды dmesg имеется информация о приёмнике, то это означает, что модули уже и так подгружаются автоматически и ничего дополнительно подгружать не нужно. Если вашего ПДУ нет в списке, ничего страшного, для него можно будет создать конфигурационный файл далее самостоятельно. Если модули подгружать не нужно, и пульта нет в списке, то выбирать следует пункт «None». При установке будет настроен автоматический запуск демона lircd при старте системы.

Настройка

lircd.conf

Для корректной работы LIRC следует настроить lircd при помощи конфигурационного файла /etc/lirc/lircd.conf. Если вы его создавали при установке LIRC на основе файла из базы, то нужно только просмотреть этот файл и ознакомиться с названиями кнопок пульта, содержащимися в файле (это понадобится в дальнейшем). Если вы его не создавали при установке, то его нужно создать.

Подготовка конфигурационных файлов для lircd для работы с неизвестными (отсутствующими в базе) пультами осуществляется при помощи программы irrecord:

sudo irrecord -d <device> -n <fn>

Для того чтобы irrecord смогла получить прямой доступ к драйверу приёмника, требуется завершить процесс lircd (он будет снова автоматически запущен после перезагрузки). В параметре -d <device> следует указать устройство приёмника. В общем случае имя файла зависит от драйвера, но в большинстве случаев это /dev/lirc0. Параметр -n сообщает irrecord о том, что при формировании конфигурационного файла не нужно проверять указываемые пользователем названия кнопок пульта на соответствие предлагаемым разработчиками стандартным названиям кнопок ПДУ, которые могут встретиться на ПДУ (список таких названий отображается командой irrecord -l). <fn> — имя файла, в который должен быть записан сформированный конфигурационный файл.

Программа irrecord предлагает пользователю делать различные действия при помощи ПДУ, исследует инфракрасные сигналы, приходящие от ПДУ, и пытается выполнить обратную разработку протокола связи, используемого ПДУ (то есть отгадать его). Сначала предлагается нажимать на случайные кнопки ПДУ, удерживая их приблизительно в течение секунды. При этом в течение времени удержания кнопки на экране с постоянной скоростью появляются точки. После появления некоторого количества точек появление точек может прекратиться. Однако ни остановка появления точек, ни отсутствие остановки не должно влиять на время удержания кнопки: оно всегда должно быть приблизительно равно одной секунде. Затем предлагается нажимать на кнопки ПДУ и указывать для них названия. При этом предлагается отдавать предпочтение стандартным именам, перечисленным в выводе команды irrecord -l. В конце предлагается быстро и кратко нажимать на одну и ту же произвольную кнопку (каждое нажатие должно быть таким, как будто вы хотите в телевизоре прибавить громкость на единичку).

Полученный файл следует скопировать в /etc/lirc/lircd.conf (если этот файл уже существует, его нужно перезаписать новым). Кроме того, разработчики предлагают внести в заголовок этого файла информацию о ПДУ и о вас как о его создателе и отправить на lirc@bartelmus.de для включения в базу конфигурационных файлов, идущую в составе LIRC. Таким образом можно настроить несколько ПДУ и полученные файлы объединить (конкатенировать) в одном файле /etc/lirc/lircd.conf. После этого LIRC сможет работать с любым из этих ПДУ.

.lircrc

Далее требуется настроить команды, которые будут получать приложения, использующие управление при помощи ПДУ, при нажатии кнопок пульта. Эти настройки индивидуальные для каждого пользователя. Они указываются в файле ~/.lircrc. Ниже приводится пример такого файла, настраивающего управление при помощи ПДУ громкостью на компьютере (громкостью стока по умолчанию в PulseAudio), программами Rhythmbox и Totem:

begin
  prog = pulseaudio
  button = KEY_VOLUMEUP
  repeat = 1
  config = volume-up
end

begin
  prog = pulseaudio
  button = KEY_VOLUMEDOWN
  repeat = 1
  config = volume-down
end

begin
  prog = pulseaudio
  button = KEY_MUTE
  config = mute-toggle
end

begin
  prog = rhythmbox
  button = KEY_PLAYPAUSE
  config = playpause
end

begin
  prog = rhythmbox
  button = KEY_STOP
  config = stop
end

begin
  prog = rhythmbox
  button = KEY_NEXT
  repeat = 1
  config = next
end

begin
  prog = rhythmbox
  button = KEY_PREVIOUS
  repeat = 1
  config = previous
end

begin
  prog = rhythmbox
  button = KEY_FASTFORWARD
  repeat = 1
  config = seek_forward
end

begin
  prog = rhythmbox
  button = KEY_REWIND
  repeat = 1
  config = seek_backward
end

begin
  prog = totem
  button = KEY_PLAYPAUSE
  config = play_pause
end

begin
  prog = totem
  button = KEY_STOP
  config = stop
end

begin
  prog = totem
  button = KEY_FASTFORWARD
  repeat = 1
  config = seek_forward
end

begin
  prog = totem
  button = KEY_REWIND
  repeat = 1
  config = seek_backward
end

begin
  prog = totem
  button = KEY_FULLSCREEN
  config = fullscreen
end

Каждый элемент настройки включает название программы, название нажимаемой кнопки ПДУ и название команды, получаемой программой при нажатии этой кнопки. Название программы и принимаемые ей команды устанавливаются разработчиками программы, и их следует искать в документации к программе. Названия кнопок должны соответствовать названиям, указанным в файле /etc/lirc/lircd.conf. Также элемент настройки может содержать информацию о ПДУ, сигналы с которого следует обрабатывать, (remote = <remote>) (опять же, название должно соответствовать указанному в /etc/lirc/lircd.conf) (по умолчанию обрабатываются сигналы со всех настроенных ПДУ) и указание на необходимость повторять команду многократно при удержании кнопки (repeat = 1) (по умолчанию команда посылается один раз).

Настройка приложений

Для настройки управления при помощи ПДУ указанными выше программами (PulseAudio, Rhythmbox и Totem) следует также настроить сами эти программы. В PulseAudio нужно доустановить пакет pulseaudio-module-lirc и настроить подгрузку модуля module-lirc (дописать load-module module-lirc в /etc/pulse/default.pa и перезагрузить компьютер), а в Rhythmbox и Totem — включить в настройках соответствующие плагины.

Ссылки