UMGUM.COM 

Linux + IrDA ( Linux + IrDA. )

1 апреля 2010  (обновлено 27 мая 2017)

Эта публикация отнесена в архив. Она неактуальна.

OS: Debian Lenny.

Устанавливаем программное обеспечение, предназначенное для работы с IrDA устройствами:

# aptitude install irda-utils

В процессе инсталляции потянется, как минимум, ещё пару пакетов: openobex-apps и setserial.

На самом деле устанавливаемое программное обеспечение старается установить себя как постоянно работающий сервис IrDA-daemon. Нам это ни к чему, можем и вручную включить IrDA устройства; потому разубеждаем автоматически запускаться IrDA-daemon корректировкой файла /etc/default/irda-utils:

....
ENABLE="false"
....

Приёмопередатчики устройств IrDA разделяются на два вида - SIR и FIR. SIR используют обычный COM-порт и потому их скорость ограничена скоростью UART, не более 115200 бит/сек. FIR используют специализированные микросхемы и поэтому скорость передачи данных может достигать 4 Mbit/s. Большинство микросхем FIR имеют встроенную эмуляцию UART, что позволяет использовать их в режиме SIR в том случае, если драйвер этой микросхемы недоступен. Ясное дело, что USB устройство должно бы поддерживать режим работы FIR; его работы и будем добиваться.


Проверяем, присутствует ли IrDA устройство в нашем компьютере. Для "брелока" от неизвестного производителя, подключённого к моему ноутбуку вывод dmesg был следующий:

....
usb 3-2: new full speed USB device using uhci_hcd and address 2
usb 3-2: configuration #1 chosen from 1 choice
usb 3-2: New USB device found, idVendor=9710, idProduct=7780
usb 3-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
NET: Registered protocol family 23
usbcore: registered new interface driver mcs7780

Просмотр опознанных USB устройств показывает наш "донгл":

# lsusb

....
Bus 003 Device 005: ID 9710:7780 MosChip Semiconductor MS7780 4Mbps Fast IRDA Adapter
....

Просмотр списка автоматически и принудительно загруженных модулей показал нам следующее:

# lsmod | grep ir

irtty_sir    9728  0
irda       117732  2 sir_dev,mcs7780
crc_ccitt    6528  2 mcs7780,irda

Из вышеприведённого видно, что имеющиеся в системе драйверы для нашего устройства поддерживают полноценную работу в режиме FIR.

Выгружаем лишние модули, могущие конфликтовать с уже загруженным mcs7780:

# modprobe -r irda-usb
# modprobe -r irtty_sir

Создаем виртуальные устройства для взаимодействия приложений и IrDA драйвера, если они уже не были созданы:

# mknod /dev/ircomm0 c 161 0
# mknod /dev/ircomm1 c 161 1

Активируем IrDA порт, если это не было сделано ранее:

# irattach irda0 -s

Вывод ifconfig показывает наличие созданного модулем mcs7780 виртуального сетевого устройства IrDA для взаимодействия с портом (то есть, мы будем передавать данные на устройства используя не последовательный порт, а виртуальный сетевой интерфейс):

....
irda0
  Link encap:IrLAP  HWaddr mac.address
  NOARP  MTU:2048  Metric:1
  RX packets:0 errors:0 dropped:0 overruns:0 frame:0
  TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:8
  RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
....

Запускаем утилиту irdadump для просмотра трафика от доступных IrDA устройств:

# irdadump

Вывод, если он есть, "говорящий":

....
07:10:29.379787 xid:rsp 78ed231d < 0000fe84 S=6 s=4 Nokia 3110c hint=b125 [ PnP Modem Fax Telephony IrCOMM IrOBEX ] (28)
....

Если все вышеописанные манипуляции прошли успешно, то на выходе мы должны получить виртуальный интерфейс /dev/ircomm0 эмулирующий последовательный порт так, как будто наше устройство IrDA подключено кабелем. К этому интерфейсу можно обращаться с запросами. например, к GPRS модему сотового телефона для подключения к сети интернет.


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )