Skip to content

Подключение приёмника IRLink к Linux

Подключение приёмника IRLink к Linux published on Комментариев к записи Подключение приёмника IRLink к Linux нет

Как-то раз я собрался с духом и настроил у себя просмотр IP-телевидения от Корбины с помощью всемогущего mplayer (возможно, я напишу об этом позднее). Создал в fvwm меню пунктов на сорок для быстрого выбора каналов… Но всё равно было как-то не вполне удобно. Например, научить домашних пользоваться телевизором с клавиатуры — мягко скажем, задача не из простых и смысла в ней нет никакого.

Так я осознал, что моему компьютеру нужен пульт дистанционного управления. Беглый поиск в гугле моментально вывел меня на общеизвестную в линуксовых кругах программу lirc. Всё бы ничего, но к ней требовался инфракрасный приёмник и пульт. Паять приёмник самому у меня не было ни умения, ни особого желания.

Несколько позднее в разговоре с другом речь зашла и об инфракрасных приёмниках (ну как-то к слову пришлось). Тут-то и прозвучало ключевое слово — irlink. На сайте www.irlink.ru я увидел информацию, что lirc среди прочих приёмников поддерживает и irlink, цена тоже показалась подходящей. Заказал в каком-то магазине, привезли usb-приёмник, пульт к нему и компакт. На компакте всё было только под винду, так что он мне не понадобился.

Установка lirc

Всё как обычно:


emerge lirc

В списке флагов к портажу irlink есть, но только в версии 0.8.4. которая на момент написания статьи была замаскирована — пришлось в /etc/portage/package.keywords писать

app-misc/lirc ~x86

Собралось. Читаю доки, понимаю, что нужно пускать irrecord.
Пробую:


irrecord -H irlink

получаю ругань на отсутствие /dev/lirc0.

То есть инфракрасного приёмника в системе пока нет. Печаль!

Установка инфракрасного приёмника IRLink

Втыкаю irlink приёмник в usb, смотрю в /var/log/messages:

Jan 17 21:37:16 walklight ivman: New Device: /org/freedesktop/Hal/devices/usb_device_403_6001_A6005WzJ

Ну, думаю, всё нормально. Опять пускаю irrecord. Опять получаю ругань на отсутствие /dev/lirc0.

Решаю посмотреть точнее, что за устройство в системе. Набираю:


lshal | less

и ищу в длинном списке строку 6001. Устройство выглядит примерно так:

udi = ‘/org/freedesktop/Hal/devices/usb_device_403_6001_A6005WzJ’
info.linux.driver = ‘usb’ (string)
info.parent = ‘/org/freedesktop/Hal/devices/usb_device_1d6b_1_0000_00_02_0′ (string)
info.product = ‘FT232 USB-Serial (UART) IC’ (string)
info.subsystem = ‘usb_device’ (string)
info.udi = ‘/org/freedesktop/Hal/devices/usb_device_403_6001_A6005WzJ’ (string)
info.vendor = ‘Future Technology Devices International, Ltd’ (string)
linux.device_file = ‘/dev/bus/usb/002/002′ (string)
linux.hotplug_type = 2 (0×2) (int)
linux.subsystem = ‘usb’ (string)
linux.sysfs_path = ‘/sys/devices/pci0000:00/0000:00:02.0/usb2/2-1′ (string)
usb_device.bus_number = 2 (0×2) (int)
usb_device.can_wake_up = true (bool)
usb_device.configuration_value = 1 (0×1) (int)
usb_device.device_class = 0 (0×0) (int)
usb_device.device_protocol = 0 (0×0) (int)
usb_device.device_revision_bcd = 1536 (0×600) (int)
usb_device.device_subclass = 0 (0×0) (int)
usb_device.is_self_powered = false (bool)
usb_device.linux.device_number = 2 (0×2) (int)
usb_device.linux.sysfs_path = ‘/sys/devices/pci0000:00/0000:00:02.0/usb2/2-1′ (string)
usb_device.max_power = 90 (0×5a) (int)
usb_device.num_configurations = 1 (0×1) (int)
usb_device.num_interfaces = 1 (0×1) (int)
usb_device.num_ports = 0 (0×0) (int)
usb_device.product = ‘FT232 USB-Serial (UART) IC’ (string)
usb_device.product_id = 24577 (0×6001) (int)
usb_device.serial = ‘A6005WzJ’ (string)
usb_device.speed = 12.0 (12) (double)
usb_device.vendor = ‘Future Technology Devices International, Ltd’ (string)
usb_device.vendor_id = 1027 (0×403) (int)
usb_device.version = 2.0 (2) (double)

Понятно, что в моём случае приёмник виден в системе как /dev/bus/usb/002/002, но что-то прочитать из данного устройства не получалось. Более того, на попытки вида


irrecord -H irlink -d /dev/bus/usb/002/002

компьютер писал No such file, то есть вообще не признавал данное устройство за файл.

После довольно долгих экспериментов с различными пересборками lirc я наконец-то перечитал описание устройства и обратил внимание на строку

info.product = ‘FT232 USB-Serial (UART) IC’ (string)

Медленно, но верно до меня доходит, что в плате инфракрасного приёмника стоит микросхема, которая может изображать из usb-устройства /dev/bus/usb/002/002 какой-то tty-терминал, с которого уже можно считывать что-то осмысленное. Иду в ядро


cd /usr/src/linux
make menuconfig

и начинаю планомерно искать похожие микросхемы в списке устройств, известных ядру. В конце концов нахожу:

Device Drivers
[*] USB support
USB Serial Converter support
USB FTDI Single Port Serial Driver

В примечании к опции читаю:

CONFIG_USB_SERIAL_FTDI_SIO:

Say Y here if you want to use a FTDI SIO single port USB to serial converter device. The implementation I have is called the USC-1000. This driver has also be tested with the 245 and 232 devices.

Оно! Пересобираю ядро:


make
make modules_install
make install

перезагружаю машину. Читаю вывод команды dmesg и нахожу в нём новое:

usbcore: registered new interface driver usbserial
usbserial: USB Serial Driver core
usbserial: USB Serial support registered for FTDI USB Serial Device
ftdi_sio 2-1:1.0: FTDI USB Serial Device converter detected
ftdi_sio: Detected FT232RL
usb 2-1: FTDI USB Serial Device converter now attached to ttyUSB0
usbcore: registered new interface driver ftdi_sio

Устройство /dev/ttyUSB0 действительно есть в системе. Пробую прослушать:


cat /dev/ttyUSB0

в ответ на нажатия кнопок пульта на экране появляется мусор. Отлично. Пишу


ln -s /dev/ttyUSB0 /dev/lirc0

Пробую пустить irrecord -H irlink my_future_conf_for_lircd — irrecord наконец-то работает как полагается.

Про настройку собственно lirc и создание конфига к конкретному пульту — в nследующей статье.

 

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Primary Sidebar