(пишу статью, стадия: прием замечаний)
Установка и настройка медиацентра kodi(xbmc) lirc с пультом ДУ под AltLinuxПредисловие: Захотел я как то собрать медиа-проигрыватель, что бы было можно фильмы смотреть и мультики, я давно пытаюсь отказаться от телевизора, надоела мне эта реклама. Мне хотелось, что бы все было удобно, управлялось с пульта от телевизора или музыкального центра. Информации было много в интернете. Но я захотел все сделать под себя, так что, вот что получилось!Итак моя ОС AltLinux 7, графический интерфейс mate, это бывшие гномики версии 2 вроде как.
Итак настраиваем репозиторий, обновляем его.
Устанавливаем сам медиа проигрыватель. Называется он kodi старое название xbmc.
# apt-cache search kodi
kodi - Kodi Media Center
# apt-get install kodi
Так же нам понадобится программа которая будет принимать сигналы с пульта дистанционного управления по ИК каналу и выполнять какие то действия.
# apt-get install lirc
Установили, отлично.
Теперь давайте соберем сам приемник ИК. Схем много в интернете, вот точно рабочая.
Прицепил, называется рис. 2.png
Это самый простой и рабочий вариант. Насколько слов по схеме. Диодик нужен для того, что бы не испортить нашу схему от переплюсовки. Например, когда наш компьютер загрузился, то на 7 ноге (RTS) будет -12 вольт. Схема не включится, но и не сгорит. Диод можно поставить почти любой мало мощный, я поставил советский КД522Б.
Далее идет резистор. Он используется для оттяжки. Точность его не особо сильно важна, просто значение 4,7 КилоОма оптимально, но можно и 5к1 и 10к. По мощности любой, если советский то 0,125Вт, можно даже smd капельку поставить, тоже подойдет.
Далее идет пяти вольтовый стабилизатор напряжения. Если нет того, что в схеме указан, можно поставить крен5а. Распиновки можно посмотреть в интернете.
Конденсатор электолитический 4,7-20 микрофарад, с напряжением от 6,3 вольта, главное полярность не перепутайте.
Инфро Красный приемник указанный в схеме, это сборка, с ИК фото диодом, фильтрами, замечательная вещь! Тут надо знать одну тонкость, 38 в номере это означает частоту модуляции несущей сигнала. Разные пульты используют разные частоты, тем самым они пытаются не мешать друг другу. Поэтому перед покупкой этой микросхемы надо узнать несущую Вашего пульта. На практике мне это сделать самому без дорогих приборов не удалось. И в интернете я ничего не нашел для своего пульта. Взял 1738, потом 1736 и тот, и тот работали прекрасно. Значит мне повезло. Но есть пульты у которых несущая 56кГц по моему, но надеюсь это будет не Ваш случай.
Можно так же дополнительно навесить всяких светодиодиков, что бы они мигали при нажатии на кнопки или горели при включении, но это уже факультативчик. Главное не перестарайтесь, более 20 милиАмпер не нагружайте свое устройство, так как будет падать напряжение.
Все собираем.
Кстати, кому интересно, все детальки запихиваются в пласмаску-ручку ком-порта, а ИК датчик выносится на коротеньких проводках наружу. В качестве разъема для ИК датчика я использовал разъем от спикера, 4 пина, который втыкается в материнку, с черным и красным проводками.
В современных материнских платах com-порт не выводится на ряду с другими разъемами на панельку, но есть вероятность, что он есть введе штырьков на самой материнке.
И так в тыкаем чудо девайс и смотрим видет ли его система.
$ ls /dev | grep ttyS
ttyS0
ttyS1
ttyS2
ttyS3
хм.. интересно.. но вобщем мой com1 - это ttyS0
Ядро ОС как правило занимает устройтво /dev/ttyS0 и нам его надо освободить для "личных" целей. Даем команду от рута.
# setserial /dev/ttyS0 uart none
после этого загружаем модуль ядра
# modprobe lirc_serial
Можно проверить, что все загрузилось
# lsmod | grep lirc_serial
lirc_serial 9923 0
lirc_dev 9370 1 lirc_serial
После этого, на контакте 7 (RTS) com-порта появляется +12 вольт и наше устройство включается.
Так же должно появиться устройство /dev/lirc0 смотрим
# ls /dev | grep lirc
lirc0
Проверяем как работает приемник.
# mode2
space 10040
pulse 174
space 19128
pulse 332
space 499
pulse 375
space 452
.....
Нажимаем на кнопки пульта и должны видеть pulse, space. Это значит что все читает! Поздравляю.
Дальше сложнее. Нам надо собрать файл в котором будут коды нашего пульта соответствовать неким названиям-кодам. Этот файл будет находится тут /etc/lircd.conf На самом деле тут (
http://lirc.sourceforge.net/remotes/) можно попробовать найти готовый файл /etc/lircd.conf с кодами от Вашего пульта. Но я делал сам с помощью программки irrecord.
Ознакомимся с "названиями-кодами"
$ irrecord --list-namespace
KEY_0
KEY_102ND
.....
Так мы будем называть прилетающие коды от нашего пульта. Следующее на что стоит обратить внимание, это на сколько наворочен Ваш пульт. Мой простенький пульт toshiba ct-90090 считывался командой
# irrecord -H default -d /dev/lirc0 /etc/lircd.conf
Но я захотел прицепить соньку... sony rm-pp412 мой маленький программируемый комбаин. Оказалось он таким образом не считывается. Пришлось по другому его читать.
# irrecord -f -H default -d /dev/lirc0 /etc/lircd.conf
И вот что у меня получилось.
# cat /etc/lircd.conf
# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
#
# this config file was automatically generated
# using lirc-0.9.0(default) on Mon Dec 14 23:38:57 2015
#
# contributed by
#
# brand: /etc/lircd.conf
# model no. of remote control:
# devices being controlled by this remote:
#
begin remote
name sony_RM-PP412-video11
flags RAW_CODES|CONST_LENGTH
eps 30
aeps 100
gap 45015
begin raw_codes
name KEY_LEFT
2473 511 687 551 1261 510
667 558 651 506 669 573
1264 497 1305 545 1264 503
1250 580 670 499 1253 584
663
name KEY_RIGHT
2460 539 1221 613 625 543
628 557 649 585 639 527
1248 593 1236 549 1261 530
1250 578 625 551 1245 584
623
name KEY_UP
2391 601 627 529 1248 599
635 519 655 591 622 543
622 586 1254 536 1210 624
1236 554 626 584 1227 564
625
name KEY_DOWN
2454 547 1253 479 1280 587
657 501 669 581 628 537
672 537 1277 514 1286 548
1250 509 689 551 1252 507
685
name KEY_OK
2422 530 1279 575 632 546
626 584 627 540 1219 614
627 541 1214 621 1240 550
1249 580 627 541 1259 572
628
name KEY_ENTER
2373 619 626 542 1249 582
627 543 1244 589 1241 548
624 584 1251 548 1249 582
1222 529 624 625 1215 537
661
name KEY_EXIT
2413 545 1300 505 1300 515
1284 550 625 499 1332 546
1251 504 1283 570 641 508
691 484 657 540 659 584
1285 508 1292 543 623 543
1295
name KEY_PLAY
2447 552 621 544 1290 546
622 544 1284 547 1251 509
700 538 627 541 1302 535
1248 541 669 540 1252 536
685
name KEY_PAUSE
2485 513 1298 522 678 502
663 574 1263 499 1302 534
666 502 700 540 1258 498
1303 540 657 502 1308 500
668
name KEY_STOP
2443 555 624 582 628 540
652 560 1250 541 1247 584
625 546 634 555 1265 567
1226 582 627 570 1220 584
629
name KEY_NEXT
2416 587 620 541 687 521
1284 512 1251 577 1254 542
671 535 626 541 1252 559
1273 541 675 530 1253 542
669
name KEY_PREVIOUS
2427 540 1213 622 1238 519
625 617 1233 526 1284 573
634 542 623 585 1236 558
1249 574 632 542 1250 578
624
name KEY_VOLUMEUP
2420 555 704 500 1249 544
707 503 663 531 1254 549
669 581 629 496 716 526
635 543 698 509 664 504
1268 526 1230 599 685 525
665
name KEY_VOLUMEDOWN
2506 489 1289 508 1328 496
668 509 699 501 1287 534
675 504 721 518 638 537
685 524 668 499 708 502
1291 501 1321 511 664 507
704
name KEY_MUTE
2517 481 712 518 645 510
1326 524 640 509 1334 521
636 542 704 504 670 498
721 488 684 543 647 503
1326 517 1292 494 699 521
648
name KEY_POWER
2451 548 1250 541 627 584
1256 534 648 561 1254 555
650 543 622 596 1236 548
1260 530 627 583 1256 557
636
name KEY_MENU
2403 587 1208 579 627 586
1204 564 1282 532 624 587
623 593 1195 590 1260 552
1246 562 623 570 1254 553
624
name KEY_PREVIOUSSONG
2483 514 665 582 1245 511
1295 551 648 506 1298 552
645 505 1295 562 1241 523
1249 578 665 508 1251 584
653
name KEY_NEXTSONG
2474 526 1279 486 1297 508
1314 509 668 510 1320 502
667 533 1294 506 1249 543
1305 532 662 502 1312 523
628
name KEY_VIDEO
2441 557 636 539 1271 560
630 540 626 582 628 564
1228 581 625 548 676 532
628 590 653 504 672 572
1244 513 1291 563 640 510
657
end raw_codes
end remote
После создания своего файла, открываем его на редактирование и правим название пульта, у меня оно такое: name sony_RM-PP412-video11 По этому названию, в дальнейшем будет определяться наш пульт, точнее команды именно с нашего пульта, а не кого то там другого. Это важный момент.
Вносим строчку в другой конфиг:
# echo 'LIRCD_OPTIONS="-H dev/input -d /dev/lirc0"' >> /etc/sysconfig/lircd
так он выглядет у меня:
# example config for creative audigy 2 livecdrive
# see https://bugzilla.altlinux.org/show_bug.cgi?id=9454
#
# OPT="--driver livedrive_midi -c /dev/snd/midiC0D1"
# OPT="-H dev/input -d /dev/lirc0 /etc/lircd.conf"
# OPT="-H dev/input -d /dev/lirc0 /etc/lircd.conf"
# OPT=" /etc/lircd.conf"
# OPT="--driver dev/input --device /dev/lirc0 /etc/lircd.conf"
# LIRCD_OPTIONS="-H dev/input -d /dev/input/event7"
LIRCD_OPTIONS="-H dev/input -d /dev/lirc0"
#DRIVER=default
#HWMOD="lirc_serial"
#DEVICE=/dev/lirc0
#COM_PORT=/dev/ttyS0
#DRIVER_OPTS="irq=4 io=0x3e8"
#####DRIVER_OPTS="irq=4 io=0x3f8"
Теперь стартуем
# service lircd start
Для диагностики или рестартов есть такие варианты
# service lircd stop
# service lircd restart
# service lircd status
После этого смотрим как все работает, запускаем, жмем на кнопки с пульта.
# irw
0000000000000008 00 KEY_PLAY sony_RM-PP412-video11
0000000000000008 01 KEY_PLAY sony_RM-PP412-video11
0000000000000008 02 KEY_PLAY sony_RM-PP412-video11
0000000000000008 03 KEY_PLAY sony_RM-PP412-video11
0000000000000009 00 KEY_PAUSE sony_RM-PP412-video11
0000000000000009 01 KEY_PAUSE sony_RM-PP412-video11
0000000000000009 02 KEY_PAUSE sony_RM-PP412-video11
0000000000000009 03 KEY_PAUSE sony_RM-PP412-video11
000000000000000a 00 KEY_STOP sony_RM-PP412-video11
000000000000000a 01 KEY_STOP sony_RM-PP412-video11
000000000000000a 02 KEY_STOP sony_RM-PP412-video11
000000000000000a 03 KEY_STOP sony_RM-PP412-video11
Ура. Все получилось. Здесь мы видем код кнопки и имя пульта. Если у Вас такого нету. Причина кроется в ошибке файлов /etc/sysconfig/lircd или /etc/lircd.conf !!! Я много времени потратил что бы их победить. Использовал метод научного тыка. Так как документация на них суха, и многие вещи мне были не понятны.
Пробуем запустиь kodi
$ kodi
Он создаст свои папки.
Теперь нам надо научить kodi все это дело понимать с пульта. Копируем файл
$ cp /usr/share/kodi/system/Lircmap.xml ~/.kodi/userdata/Lircmap.xml
Далее его правим. Хотя рекомендуют его не трогать, а подключать свой файл.
Этот файл ждет команду с пульта имя которого sony_RM-PP412-video11 и каждому коду сопоставляет действие.
Моя допись в файл выглядит так
$ cat ~/.kodi/userdata/Lircmap.xml
.......
<star>KEY_NUMERIC_STAR</star>
<hash>KEY_NUMERIC_POUND</hash>
<red>KEY_RED</red>
<green>KEY_GREEN</green>
<yellow>KEY_YELLOW</yellow>
<blue>KEY_BLUE</blue>
<recordedtv>KEY_PVR</recordedtv>
<liveradio>KEY_RADIO</liveradio>
</remote>
<remote device="sony_RM-PP412-video11">
<left>KEY_LEFT</left>
<right>KEY_RIGHT</right>
<up>KEY_UP</up>
<down>KEY_DOWN</down>
<select>KEY_OK</select>
<enter>KEY_ENTER</enter>
<back>KEY_EXIT</back>
<play>KEY_PLAY</play>
<pause>KEY_PAUSE</pause>
<stop>KEY_STOP</stop>
<forward>KEY_NEXT</forward>
<reverse>KEY_PREVIOUS</reverse>
<volumeplus>KEY_VOLUMEUP</volumeplus>
<volumeminus>KEY_VOLUMEDOWN</volumeminus>
<mute>KEY_MUTE</mute>
<power>KEY_POWER</power>
<menu>KEY_MENU</menu>
<StepForward>KEY_PREVIOUSSONG</StepForward>.
<StepBack>KEY_NEXTSONG</StepBack>
</remote>
</lircmap>
После этого можно запустить kodi и он прекрасно будет управляться с пульта. Есть и другие поддерживаемые команды kodi, но это будет для самостоятельного изучения.
Теперь небольшой тюнинг.
# gpasswd -a <пользователь> lirc
Добавляем Вашего пользователя в группу.
Теперь автоматизируем все это чудо, что мы делали с Вами руками. Что бы при включении компьютера, все необходимые настройки загружались сами. И пульт был бы готов к работе по умолчанию. Я понимаю, что у Линукса все авто запуски разделены по уровням, но я сделал так
# cat /etc/rc.d/rc.local
#!/bin/sh
setserial /dev/ttyS0 uart none
modprobe lirc_serial
service lircd start
Дал ему права на запуск.
# chmod +x /etc/rc.d/rc.local
Отлично, далее мне захотелось, что бы kodi запускался с пульта.
Тоже возможно. Делаем такой файлик
cat ~/.xsession.d/start_irexec.sh
#/bin/sh
/usr/bin/irexec --daemon ~/.lircrc
Даем права на исполнение. Поясню, это что бы выполнялся автоматический запуск программы которая следит за нажатием кнопки "запустить kodi" в Операционной Системе. Запуск происходит после того как пользователь залогинился.
Далее файл конфигурации этой програмки
cat ~/.lircrc
begin
prog = irexec
remote = sony_RM-PP412-video11
config = ~/kodi_start.sh
button = KEY_VIDEO
repeat = 0
end
Здесь
- название программы обработчика, у всех одинаково.
- имя пульта, у меня такое, писал об этом ранее
- далее идет скрипт запуска kodi
- кнопка на пульте к которой привязан запуск kodi.
Кстати я сделал разные кнопки "Старт/Включения" и "Выключения" kodi, что бы не было конфликтов.
Далее сам скрипт
cat ~/kodi_start.sh
#/bin/sh
if [ "`ps -C kodi.bin -o comm=`" != 'kodi.bin' ]; then
nohup kodi -fs &
exit 1
fi
Не забудьте дать ему права на исполнение! Этот скрипт следит за тем, что бы не произошел двойной запуск kodi, при повторном нажатии кнопки "Старт" kodi на пульте.
Далее у меня была проблема со звуком. При запуске ОС он всегда выключен, и это мне не нравилось. Решение тоже нашлось. Надо установить
# apt-get install pavucontrol
И теперь можно получать удовольствие!!!
Автологин в mate 7
# /usr/libexec/lightdm/lightdm-set-defaults -a `Ваш пользователь`
Как с пульта завершить kodi и выключить компьютер? Вот ответ:
Запускаем kodi идем в "Система" - "Настройки" - "Система", включаем уровень настроек эксперт, далее "Экономия энергии" - "Режим выключения" и здесь ставим "Выключение".
Для справки права на некоторые файлы:
-rwxr--r-- 1 user user 88 дек 20 19:13 kodi_start.sh
-rw-r--r-- 1 user user 165 дек 20 19:09 .lircrc
-rwxr--r-- 1 user user 46 дек 20 19:07 ~/.xsession.d/start_irexec.sh
-rw-r--r-- 1 user user 16101 дек 16 23:07 ~/.kodi/userdata/Lircmap.xml
-rwxr-xr-x 1 root root 83 дек 17 23:39 /etc/rc.d/rc.local
-rw-r--r-- 1 root root 6367 дек 17 00:27 /etc/lircd.conf
-rw-r--r-- 1 root root 594 дек 10 23:21 /etc/sysconfig/lircd
Версии ПО:
kodi-15.2-alt0
lirc-0.9.0-alt3
Linux 3.8.13.3-std-def-alt1.M70P.1 i686 GNU/Linux
Полезные ссылки:
http://www.lirc.org/https://xbmc.org/http://xbmc.ru/forum/Дата написания статьи: 20.12.2015
=====================================
Прошу разместить мою статью на wiki
Для полноты картины, кто бы помог с переводом lirc на русский ..