четверг, 24 марта 2011 г.

Ubuntu и ИК пульт от ASUS AT3IONT-I deluxe

Исходные данные:
Есть компьютер под управлением XBMClive, к нему прикручен пульт ДУ Microsoft IrDa adapter for MCE, работающий с lirc что называется "из коробки". Но в один момент пульт превращается в кирпич с кнопками... Не беда! комп собран на базе ASUS AT3IONT-I deluxe, а у этой мамки в комплекте есть свой замечательный пульт! Но, как оказалось, lirc о существовании такого пульта даже и не подозревает- а вот это уже грустно... Что ж, достаем бубен и заходим под кат.




К счастью, после весьма недолгих поисков, решение было найдено и воплощено в жизнь.
Все что следует далее - мой вольный перевод вот этой ветки форума убунтоводов.
Итак, хороший человек pj7 сконструлил пакет, решающий нашу проблему. Правда пульт будет работать не через lirc, а как клавиатура, что мне абсолютно без разницы - главное чтоб работало.
Забираем пакет здесь. Этот пакет содержит исходные коды драйвера (hid-philips-asus) для ПДУ и ath3k для bluetooth адаптера установленного на материнской плате (я этим добром не пользуюсь, поэтому ничего про установку, настройку и работоспособность сказать не могу)

Установка.
Чтобы установить пакет выполняем:
sudo dpkg -i asus-at3iont-i-deluxe-dkms_1.0.1_all.deb
DKMS автоматически соберет и установит модули в систему, как для текущего ядра, так и для последующих обновлений ядра.

Загрузка модулей.
Модуль  ath3k для bluetooth будет запущен автоматически, после перезагрузки системы.
Модуль hid-philips-asus для ПДУ требует для запуска некоторых ухищрений. Дело в том. что он зависит от модуля usbhid, но при этом должен быть загружен раньше, чем usbhid. Иначе usbhid займет приемник ПДУ и hid-philips-asus не сможет получить к нему (приемнику) доступ. Для решения этой проблемы в составе пакета есть скрипт load-module.sh
Выполняем:
sudo sh /usr/src/asus-at3iont-i-deluxe-1.0.1/drivers/hid-philips-asus/load-module.sh
Суть решения в том, что данный скрипт выгружает все загруженные ранее модули hid, загружает hid-philips-asus и затем загружает модули hid, выгруженные ранее. (Надо сказать костыль кривоват, ну да работает и ладно)
Чтобы это безобразие отрабатывало при запуске системы, добавляем строку для его запуска в /etc/rc.local
Если модули загружены в нужном порядке, после загрузки модуля в логах должно появиться сообщение типа:
input: PHILIPS MCE USB IR Receiver- Spinel plusf0r ASUS as /devices/pci0000:00/0000:00:0b.1/usb1/1-4/1-4.1/1-4.1.3/1-4.1.3:1.0/input/input60
philips_asus 0003:0471:206C.0004: input: USB HID v1.00 Keyboard [PHILIPS MCE USB IR Receiver- Spinel plusf0r ASUS] on usb-0000:00:0b.1-4.1.3/input0
В противном случае:
input: PHILIPS MCE USB IR Receiver- Spinel plusf0r ASUS as /devices/pci0000:00/0000:00:0b.1/usb1/1-4/1-4.1/1-4.1.3/1-4.1.3:1.0/input/input63
generic-usb 0003:0471:206C.0005: input,hiddev98,hidraw3: USB HID v1.00 Keyboard [PHILIPS MCE USB IR Receiver- Spinel plusf0r ASUS] on usb-0000:00:0b.1-4.1.3/input0
Настройка
Опытным путем было выяснено, что на пульте не работает кнопка "OK", в ходе дальнейших изысканий на форуме нашлось решение - открываем для редактирования файл /usr/src/asus-at3iont-i-deluxe-1.0.1/drivers/hid-philips-asus/mappings.h и меняем строку
define BUTTON_OK KEY_OK
на
define BUTTON_OK KEY_ENTER
После чего выполняем
sudo dpkg-reconfigure asus-at3iont-i-deluxe-dkms
Перезагружаемся, проверяем - все работает как надо! Значение любой кнопки на пульте можно переназначить, допустимые значения KEY_* можно посмотреть тут
На сегодня все.
Всем удачи!

Комментариев нет:

Отправить комментарий