Автор Тема: IR XBMC\KODI Android  (Прочитано 4344 раз)

Оффлайн warik

  • Administrator
  • Старейшина
  • *****
  • Сообщений: 534
  • Лайков: 151
  • Карма: +10/-0
    • Просмотр профиля
    • OrangePi.pp.ua
IR XBMC\KODI Android
« : Октябрь 21, 2015, 11:19:53 pm »
Поковыряв несколько дней IR для Андроид, я наконец-то понял свои ошибки, и исправил их.
По сути своей, эта инструкция это вольный перевод инструкции от darqoq на официальном форуме, с моими комментариями и дополнениями. Свои комментарии я буду отмечать таким текстом.

И так начнём.

1. Запускаем Терминал.

2. Выполняем команду su для получения root прав.
su
3. Загружаем файлы с Меги на карту памяти в папку: "/sdcard/Download/".

4. Создаём папку выполнив команду.
mkdir /etc/lircd
5. Копируем загруженные файлы.
cp /sdcard/Download/evtest /system/bin/
cp /sdcard/Download/lircd /system/bin/lircd
cp /sdcard/Download/irw /system/bin/irw
cp /sdcard/Download/irrecord /system/bin/irrecord
cp /sdcard/Download/start_lircd.sh /system/bin/start_lircd.sh
cp /sdcard/Download/stop_lircd.sh /system/bin/stop_lircd.sh
6. Устанавливаем права выполнения(запуска) для фалов.
chmod a+x /system/bin/evtest
chmod a+x /system/bin/lircd
chmod a+x /system/bin/irw
chmod a+x /system/bin/irrecord
chmod a+x /system/bin/start_lircd.sh
Тут меня ждал первый завтык. Конструкция "a+x" почему-то не заработала. В случае если у Вас будет какая либо ошибка, то попробуйте сделать не "a+x", а "755". Мне помогло.

7. Проверяем загружен ли модуль IR.
lsmod | grep sunxi_ir_rx
Результат:
sunxi_ir_rx 9154 0 - Live 0x00000000
8. Находим event драйвер IR.
cat /proc/bus/input/devices
Результат:
I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="sunxi-ir"
P: Phys=RemoteIR/input1
S: Sysfs=/devices/virtual/input/input3
U: Uniq=
H: Handlers=sysrq kbd event3 cpufreq_interactive
B: PROP=0
B: EV=100003
B: KEY=ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe
Подчеркну что у Вас может быть не "event3", а например "event4". Как было у меня.

9. Теперь можно протестировать работу IR.
evtest /dev/input/event3
Как написал выше, указывайте тот "event" который используется у Вас.
Теперь нажимая кнопки пульта, Вы должны видеть коды команд в консоли(терминале).

8. В случае если у Вас всё работает с первого раза, то следующую информацию можно пропустить.
К сожалению, у меня пульт работал, но не правильно. Из-за этого мне приходиться выгружать и загружать модуль при каждой загрузке ОС. Эту операцию я автоматизировал, и она мне в принципе не мешает. Как автоматизировал, опишу ниже.
Что-то не так с модулем  sunxi_ir_rx и его приходиться перезагружать.
Так как в первый раз вывод evtest зависал. (Нажатие любой клавиши на пульте дистанционного управления IR, должно добавлять строку в конце):
...
Event code 254 (?)
Event code 255 (?)
Event type 20 (Repeat)
Testing ... (interrupt to exit)
Event: time 1444933051.375784, -------------- Report Sync ------------
9. Перезагрузка модуля sunxi_ir_rx.
rmmod sunxi_ir_rx
insmod /system/vendor/modules/sunxi-ir-rx.ko
Проверка загрузился ли модуль.
lsmod | grep sunxi_ir_rx
Результат.
sunxi_ir_rx 9154 0 - Live 0x00000000
10. Проверяем драйвер заново.
cat /proc/bus/input/devices
Результат. Убедитесь что всё ещё event3.
I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="sunxi-ir"
P: Phys=RemoteIR/input1
S: Sysfs=/devices/virtual/input/input5
U: Uniq=
H: Handlers=sysrq kbd event3 cpufreq_interactive
B: PROP=0
B: EV=100003
B: KEY=ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe
11. Заново тестируем работу event.
evtest /dev/input/event3
Результат. (Нажатие любой клавиши на пульте дистанционного управления IR, должно добавить строку Event)
Event code 255 (?)
Event type 20 (Repeat)
Testing ... (interrupt to exit)
Event: time 1444933164.078062, type 1 (Key), code 123 (Hanja), value 1
Event: time 1444933164.078073, -------------- Report Sync ------------
Event: time 1444933164.276381, type 1 (Key), code 123 (Hanja), value 0
Event: time 1444933164.276389, -------------- Report Sync ------------
Event: time 1444933164.477201, type 1 (Key), code 123 (Hanja), value 1
Event: time 1444933164.477211, -------------- Report Sync ------------
Event: time 1444933164.676388, type 1 (Key), code 123 (Hanja), value 0
Event: time 1444933164.676396, -------------- Report Sync ------------
Работает! Но всё ещё нуждается в конфигурации.

12. Теперь запишем команды IR пульта.
/system/bin/irrecord -H devinput -d name=sunxi-ir /etc/lircd/lircd.conf
Основная моя проблема заключалась в этом пункте, как я потом понял. Изначально при запуске этой команды необходимо понажимать кнопки пульта, для того что бы записать префиксы и тому подобное. Почему-то я нажимал, а точнее зажимал, всего одну кнопку. Из-за этого, в дальнейшем, у меня не работали другие кнопки которые я записал.
Потому замечу что когда Вы выполнили эту команду и Вас просят нажимать кнопки пульта, нажимайте на все кнопки пульта!
Эта манипуляция позволит более корректно записать коды пульта в дальнейшем.
Запись кнопок производиться очень легко. Вы вводите имя кнопки, например: "KEY_LEFT", нажимаете Enter и зажимаете кнопку влево на пульте и так далее. Пока не запишите все необходимые Вам кнопки.

Вы можете увидеть допустимые ключевые имена выполнив команду.
/system/bin/irrecord -l
Проверьте /etc/lircd/lircd.conf, и если ваши коды были записаны два раза, как тут.
begin codes
        KEY_0                    0x0100FF00000001 0x00000000000000
        KEY_1                    0x01000100000001 0x00000000000000
end codes
Отредактируйте /etc/lircd/lircd.conf и вручную удалите вторую часть кода (0x00000000000000)
Результат.
begin codes
         KEY_0                    0x0100FF00000001
         KEY_1                    0x01000100000001
end codes
Отредактируйте /etc/lircd/lircd.conf и измените параметр "name" с "lircd.conf" на "devinput" или на "linux-input-layer" (Эти имена заранее записаны в конфигурации Kodi).
begin remote
    name  devinput
Запишите клавиши: KEY_DOWN, KEY_UP, KEY_LEF, KEY_ENTER, KEY_BACK. Их будет достаточно для проверки.
13. Тест.
Запустите демон lirc.
/system/bin/start_lirc.sh
Запустите irw и нажимайте на любые клавиши(записанные в /etc/lircd/lircd.conf) на вашем пульте.
/system/bin/irw /dev/lircd
000100c300000001 00 KEY_OK myremote
000100c500000001 00 KEY_DOWN myremote
000100a800000001 00 KEY_KPPLUS myremote
000100a000000001 00 KEY_POWER myremote
0001000800000001 00 KEY_8 myremote
0001000100000001 00 KEY_1 myremote
0001000600000001 00 KEY_6 myremote
14. Наслаждайтесь! LIRC успешно работает.
Теперь вы можете управлять программами, и особенно Kodi, с IR-пульта дистанционного управления.
15. Остановка демона производить командой.
/system/bin/stop_lirc.sh

Это конец статьи от darqoq. Теперь буду писать от себя.

Как я говорил выше есть проблема. Если не перезагружать модуль ядра, то пульт работает, но работает некорректно. Некорректно - в моём случае было так, я нажимаю одну кнопку, а по факту нажимается другая кнопка. Потому мне необходимо каждый раз выполнять перезагрузку модуля. А так же необходимо каждый раз запускать SH скрипта старта демона lirc, а так же каждый раз запускать Kodi. Так как я сисадмин, а они обычно всё хотят автоматизовать :D понятное что я это всё автоматизовал.
Для автоматизации процесса я использовал программу Script Manager - SManager. Это полезная тулза которая даёт возможность написать свой BASH скрипт и выполнять его при запуске ОС.
Мною был написан коротеньки скрипт kodi-ir-remote-control и помещён на SD карту в папку: Scripts. Листинг скрипта такой:
#!/system/bin/sh
mount -o remount,rw /system
rmmod sunxi_ir_rx
insmod /system/vendor/modules/sunxi-ir-rx.ko
/system/bin/start_lircd.sh
am start -n org.xbmc.kodi/org.xbmc.kodi.Splash
Где:
Монтирование /system в чтение-запись. Почему-то у меня не запускается lirc без этого.
mount -o remount,rw /system
Выгрузка модуля.
rmmod sunxi_ir_rx
Загрузка модуля.
insmod /system/vendor/modules/sunxi-ir-rx.ko
Запуск lirc.
/system/bin/start_lircd.sh
Запуск Kodi.
am start -n org.xbmc.kodi/org.xbmc.kodi.Splash

В принципе вот и всё что я хотел написать. Благодаря этим всем манипуляциям, я просто подаю питание на свою OPi PC, и через несколько минут я получаю рабочий IR и запущенный Kodi.
В случае если Вы заметили какие-либо ошибки, или же у Вас есть предложения по улучшению данной инструкции, или же у Вас что-то не вышло, отписывайтесь в теме. Поможем! Исправим!
« Последнее редактирование: Ноябрь 01, 2015, 08:23:14 pm от warik »
Orange Pi PC, Orange Pi One, Orange Pi Zero

Оффлайн tracert

  • Administrator
  • Житель
  • *****
  • Сообщений: 286
  • Лайков: 63
  • Карма: +53/-0
  • Orange Pi 2
    • Просмотр профиля
Re: IR XBMC\KODI Android
« Ответ #1 : Октябрь 23, 2015, 01:18:23 am »
Да эта тема слабо тут раскрыта

Оффлайн warik

  • Administrator
  • Старейшина
  • *****
  • Сообщений: 534
  • Лайков: 151
  • Карма: +10/-0
    • Просмотр профиля
    • OrangePi.pp.ua
Re: IR XBMC\KODI Android
« Ответ #2 : Ноябрь 01, 2015, 08:18:22 pm »
Исправил тему. Удалил предыдущее сообщения, а саму инструкцию занёс в первое сообщение.
Orange Pi PC, Orange Pi One, Orange Pi Zero

Оффлайн tracert

  • Administrator
  • Житель
  • *****
  • Сообщений: 286
  • Лайков: 63
  • Карма: +53/-0
  • Orange Pi 2
    • Просмотр профиля
Re: IR XBMC\KODI Android
« Ответ #3 : Ноябрь 02, 2015, 07:04:05 am »
Добавил в FAQ

Оффлайн smsa

Re: IR XBMC\KODI Android
« Ответ #4 : Апрель 30, 2016, 01:19:06 am »
А как получить root права?
Ставил supersu, не работает....

Оффлайн warik

  • Administrator
  • Старейшина
  • *****
  • Сообщений: 534
  • Лайков: 151
  • Карма: +10/-0
    • Просмотр профиля
    • OrangePi.pp.ua
Re: IR XBMC\KODI Android
« Ответ #5 : Май 18, 2016, 06:03:05 am »
smsa, они там по дефолту вроде должны быть. По крайней мере в той версии Андроид что была у меня, именно так и было.
Orange Pi PC, Orange Pi One, Orange Pi Zero