Это третья, заключительная статья цикла про HTPC на Linux. В первых двух мы собрали систему и настроили видео и звук. Медиацентр уже работает, но управлять им клавиатурой из гостиной неудобно. Пора научить систему понимать инфракрасный пульт. За это в Linux традиционно отвечает LIRC (Linux Infrared Remote Control).
Что делает LIRC
LIRC - это набор программ, который принимает сигналы от ИК-приёмника, распознаёт нажатые кнопки по заранее записанному описанию и превращает их в команды. Фоновый демон lircd слушает приёмник и отдаёт распознанные события приложениям вроде Kodi. Задача сводится к тому, чтобы система увидела приёмник, а мы описали кнопки нашего пульта.
Установка
Ставим сам пакет и утилиты:
sudo apt update
sudo apt install lirc
В комплект входят демон lircd, программа записи irrecord и отладчик irw, которые нам понадобятся дальше.
Определение приёмника
ИК-приёмник может быть USB-устройством, встроенным в тюнер или подключённым к материнской плате. После подключения проверьте, что ядро его увидело. Многие современные приёмники работают через подсистему ядра и создают устройство вида /dev/lirc0. Проверить можно так:
ls -l /dev/lirc*
Если файл /dev/lirc0 присутствует - приёмник опознан ядром и с ним можно работать. Полезно также заглянуть в журнал ядра, чтобы увидеть, какой драйвер загрузился:
dmesg | grep -i lirc
Запись кнопок через irrecord
Теперь главное - создать описание пульта. Файл описания сопоставляет физические кнопки с именами команд. Для многих распространённых пультов готовые файлы уже существуют в базе LIRC, но записать свой пульт надёжнее и полезнее для понимания. Для этого есть утилита irrecord.
Остановите демон, чтобы он не мешал захвату сигнала, и запустите запись в новый файл:
sudo systemctl stop lircd
sudo irrecord -d /dev/lirc0 my_remote.conf
Программа проведёт вас через процесс. Сначала она попросит несколько раз нажимать произвольные кнопки, чтобы понять параметры протокола пульта. Затем предложит по очереди назначать кнопкам стандартные имена. Имена лучше брать из общепринятого списка - например KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT, KEY_OK, KEY_PLAY, KEY_STOP, KEY_MENU, KEY_BACK. Единые имена потом проще привязать в Kodi.
Записывайте кнопки в спокойной обстановке и держите пульт неподвижно. Дрожание руки и посторонний ИК-свет (например от солнца в окно) мешают LIRC чисто прочитать сигнал.
Файл lircd.conf
После записи вы получите файл с секцией begin remote, где перечислены параметры протокола и таблица codes - пары имя кнопки и её код. Выглядит это примерно так:
begin remote
name my_remote
bits 16
begin codes
KEY_UP 0x00FF
KEY_DOWN 0x807F
KEY_OK 0x40BF
end codes
end remote
Готовый файл нужно подключить к демону. Обычно его кладут в каталог конфигурации LIRC (например /etc/lirc/lircd.conf.d/) и перезапускают демон:
sudo cp my_remote.conf /etc/lirc/lircd.conf.d/
sudo systemctl start lircd
Отладка через irw
Прежде чем настраивать плеер, убедитесь, что LIRC вообще распознаёт кнопки. Для этого есть простая и очень полезная утилита irw. Запустите её и понажимайте кнопки на пульте:
irw
При каждом нажатии в терминале должна появляться строка с кодом, счётчиком повторов, именем кнопки и именем пульта, например:
0000000000ff40bf 00 KEY_OK my_remote
Если строки появляются и имена кнопок совпадают с тем, что вы записывали - LIRC работает правильно. Если ничего не выводится, проверьте, что демон запущен, что файл описания подключён и что вы целитесь пультом в приёмник. Это ключевой этап отладки: пока irw не показывает кнопки, настраивать Kodi бессмысленно.
Привязка кнопок в Kodi
Kodi понимает события LIRC через свой механизм ввода. Чтобы связать имена кнопок LIRC с действиями Kodi, используется файл раскладки, где каждой команде LIRC сопоставляется действие интерфейса. Упрощённо это выглядит так: приходит событие KEY_UP - Kodi выполняет перемещение вверх по меню, приходит KEY_OK - выбор пункта, KEY_BACK - возврат. Именно поэтому на этапе записи важно давать кнопкам стандартные, осмысленные имена: тогда сопоставление получается прозрачным и предсказуемым.
После правки раскладки перезапустите Kodi и проверьте навигацию: стрелки должны двигать выделение, кнопка выбора - открывать пункты, а кнопки воспроизведения - управлять проигрыванием.
Пульт в MythTV
MythTV, о котором мы говорили во вводной статье, тоже дружит с LIRC. Принцип тот же: демон lircd распознаёт кнопки, а MythTV сопоставляет их с действиями через свой конфигурационный файл раскладки (традиционно ~/.lirc/mythtv). Если вы используете связку MythTV backend плюс Kodi как frontend, то настраивать пульт достаточно один раз - на стороне того интерфейса, которым вы реально пользуетесь.
Итог цикла
На этом сборка домашнего медиацентра завершена. Мы прошли путь от голого компьютера до системы, которая выводит чёткую картинку на телевизор, плавно проигрывает тяжёлое видео силами видеокарты и слушается обычного ИК-пульта. Дальше можно наполнять медиатеку, ставить дополнения Kodi и, при желании, подключать ТВ-тюнер через MythTV. Если что-то не заработало - возвращайтесь к первой статье и проверяйте шаги по порядку: медиацентр собирается слоями, и каждый слой опирается на предыдущий.