Заказал у товарищей из Dangerous Prototypes девайс USB IR Toy v2. Целый день убил на то, чтобы разобраться как завести эту штуку под LIRC'ом.
Чтобы работать с девайсом в ядре должна быть поддержка CONFIG_USB_ACM.
Первое что необходимо сделать - обновить прошивку до свежей версии. Для этих целей используется Diolan bootloader. Официальная инструкция есть на сайте производителя игрушки. Чтобы ввести девайс в состояние обслуживания надо или подать на него в консоль $ (этот способ, как и у всех у меня не сработал) или замкнуть контакты PGC и PGD. Чтобы прописать саму прошивку из Linux нужна утилита fw_update. Как показала практика не все fw_update одинаково полезны, а некоторые могут сделать кирпич из вашей игрушки. В итоге у меня всё получилось с версией, которую какой-то чувак выложил в одном из тредов формума Dangerous Prototypes. Стоит отметить, что устройство не особо реагировало на команды, отличные от
sudo ./fw_update -e -w -v -m all -vid 0x04D8 -pid 0xFD0B -ix ../USBIRToy.v22.hex
Теперь про LIRC. Производитель рекомендует использовать irman устройство в LIRC, но у меня с ним не срослось. Благо кто-то написал нормальный драйвер и даже заопрувил его в lirc. Так что в версии 0.9.2 этот драйвер имеется под названием irtoy. А пока патчик 0.9.0-r5 и используем имя usb_irtoy. ebuild я добавил в свой репозиторий. Отдельно пускаю поносный луч в сторону Sony. Родной USB порт тупил и глючил из-за чего я потратил уйму времени выясняя в чем причина.
Далее по инструкции обучаем LIRC нашему пульту. Много времени на это ушло, но в итоге получилось. Советую для названий клавишь использовать официальные (не использовать ключ irrecord -n). Их список можно получить командой
irrecord --list-namespace
Копируем конфиг в /etc/lirc/lircf.conf. Не забываем дать вменяемое имя в поле name. Правим /etc/lirc/hardware.conf:
REMOTE="Custom"
REMOTE_MODULES=""
REMOTE_DRIVER="usb_irtoy"
REMOTE_DEVICE="/dev/ttyACM0"
REMOTE_SOCKET=""
REMOTE_LIRCD_CONF=""
REMOTE_LIRCD_ARGS=""
Запускаем lirc, и проверяем работоспособность:
#sudo irw
ffff001700000000 00 ok RemoteXXX.conf
ffff001000000000 00 up RemoteXXX.conf
ffff001100000000 00 down RemoteXXX.conf
Теперь можно настроить управляемое ПО. К примеру по мануалу XBMC (.xbmc/userdata/Lircmap.conf):
<lircmap>
<remote device="LG_AKB73615307">
<left>KEY_LEGT</left>
<right>KEY_RIGHT</right>
...
</remote>
</lircmap>
Кроме LIRC рекомендую проект PyIrToy. Позволяет легко из питона работать с игрушкой. Вот пример кода:
import serial
import irtoy
import time
with serial.Serial('/dev/ttyACM0') as serialDevice:
toy = irtoy.IrToy(serialDevice)
irCode = toy.receive()
print irCode
time.sleep(5)
toy.transmit(irCode)
Comments
comments powered by Disqus