Настройка IrDA-Соединения

Семейство протоколов IrDA поддерживается некоммерческой организацией The INFRARED DATA ASSOCIATION. Эти протоколы предназначены для высокоскоростной передачи данных между устройствами, расположенными в прямой видимости на небольшом расстоянии друг от друга.

Основным преимуществом инфракрасного протокола передачи данных является то, что это беспроводный протокол, то есть для установки связи между двумя устройствами, поддерживающими IrDA, достаточно расположить их в пределах видимости и направить окна приемопередатчиков друг на друга.

Поэтому инфракрасными портами оборудуются подавляющее большинство портативных и карманных компьютеров, а так же такие устройства, как цифровые фотокамеры, сотовые телефоны, принтеры и другие. В настольный компьютер также может быть установлен инфракрасный порт, как расширение одного из COM-портов или как отдельное устройство USB.

Протоколы IrDA являются открытыми протоколами (то есть их техническое описание опубликовано в открытых источниках), и это дало возможность реализовать поддержку IrDA в ядре и приложениях ОС Linux.

Необходимые пакеты

  • irdautils

SIR или FIR

Приемопередатчики IrDA разделяются на два вида – SIR и FIR.

  • SIR(SerialInfraRed) – использует обычный последовательный порт и поэтому их скорость ограничена скоростью UART – не более 115200 бит/сек.
  • FIR(FastInfraRed) – использует специализированные микросхемы, и поэтому скорость передачи данных может достигать 4 Мбит/сек. Большинство микросхем FIR имеют встроенную эмуляцию UART, что позволяет использовать их в режиме SIR в том случае, если драйвер этой микросхемы недоступен.

Настройка порта SIR

Настройка адаптера IrDA в режиме SIR является наиболее простой процедурой, поскольку не требует загрузки дополнительных модулей.

Достаточно только выяснить, какой из COM-портов использует адаптер, и указать правильное устройство в файле /etc/sysconfig/irda. Имя порта должно быть указано с учетом соответствия имен устройств в DOS/Windows и Linux:

  • COM1 соответствует /dev/ttyS0
  • COM2 – /dev/ttyS1
  • COM3 – /dev/ttyS2
  • COM4 – /dev/ttyS3

То есть, если адаптер подключен к порту COM2, файл /etc/sysconfig/irda должен выглядеть так:

IRDA=yes
DEVICE=/dev/ttyS1
DISCOVERY=yes

На портативных компьютерах устройства PCMCIA могут использовать прерывание 3, необходимое для работы IrDA на /dev/ttyS1.

Это может привести к неработоспособности IrDA или даже зависанию компьютера. Поэтому рекомендуется запретить использование IRQ3 в настройке подсистемы PCMCIA. Для этого необходимо убрать значок комментария перед строкой “exclude irq3” в файле /etc/pcmcia/config.opts:

...
# Resources we should not use, even if they appear to be available
# First built-in serial port
exclude irq 4

# Second built-in serial port
exclude irq 3

# First built-in parallel port
exclude irq 7

# PS/2 Mouse controller port, comment this out if you don't have a PS/2
# based mouse
exclude irq 12
...

После изменения файлов конфигурации необходимо запустить службу irda.

Диагностика

После запуска службы irda в системе должен появиться интерфейс irda0.

Убедиться в его наличии можно следующей командой:

# /sbin/ip ad sh irda0
 3: irda0: <noarp,up> mtu 2048 qdisc pfifo_fast qlen 8
    link/irda

Теперь можно убедиться, что инфракрасная связь действительно работает. Для этого нужно расположить в зоне действия порта любое устройство, поддерживающее IrDA, и запустить команду irdadump. Если связь работает, вывод команды должен быть примерно таким:

# irdadump
14:39:38.193350 xid:rsp 5c06fe5e < 65f21345 S=6 s=2 Nokia E70 hint=b325
[ PnP  PDA/Palmtop Modem Fax Telephony IrCOMM IrOBEX ] (26)
14:39:38.196534 xid:cmd 5c06fe5e > ffffffff S=6 s=3 (14)
14:39:38.284529 xid:cmd 5c06fe5e > ffffffff S=6 s=4 (14)
14:39:38.372543 xid:cmd 5c06fe5e > ffffffff S=6 s=5 (14)
14:39:38.460548 xid:cmd 5c06fe5e > ffffffff S=6 s=* omnibook hint=4400
[ Computer LAN Access ] (24)

Как видно, в радиусе действия порта был успешно обнаружен телефон NokiaE70.

Теперь можно при помощи любой терминальной программы (cu, minicom) проверить работу модема на устройстве /dev/ircomm0 и настраивать удалённый доступ.

# cu -lircomm0
 Connected.
 ati3
 Nokia E70-1
 OK

Настройка порта FIR

Подбор драйвера адаптера FIR

Настроить IrDA-адаптер в режиме FIR возможно только в том случае, если в ядре Linux имеется драйвер этого контроллера. Определить, какой именно драйвер нужен, можно при помощи команды findchip.

# findchip -v
 Found NSC PC87338 Controller at 0x398, DevID=0x0b, Rev. 2
    SIR Base 0x2f8, FIR Base 0x2f8
    IRQ = 3, DMA = 1
    Enabled: yes, Suspended: no
    UART compatible: yes
    Half duplex delay = 0 us

Из этого примера видно, что в компьютере установлен чип NSC, которому соответствует драйвер nsc-ircc.

Список доступных драйверов IrDA можно получить, просмотрев файлы в каталоге /lib/modules/*/kernel/drivers/net/irda.

Назначение того или иного модуля можно определить при помощи команды modinfo.

/etc/modprobe.conf

Из приведенного выше вывода команды findchip видно, что устройство FIR.

Поскольку ядро Linux при загрузке распознает контроллер FIR как обычный последовательный порт, необходимые ресурсы (порт и прерывание) оказываются занятыми драйвером последовательного порта. Поэтому в /etc/modprobe.conf необходимо включить команду, которая будет освобождать ресурсы последовательного порта перед загрузкой драйвера FIR.

Ниже приведен фрагмент файла /etc/modprobe.conf, который привязывает к устройству irda0 драйвер nsc-ircc и перед загрузкой этого драйвера освобождает ресурсы порта /dev/ttyS1.

 install nsc-ircc /bin/setserial /dev/ttyS1 uart none; \
   /sbin/modprobe --ignore-install nsc-ircc

Файл /etc/sysconfig/irda при этом должен выглядеть следующим образом:

IRDA=yes
DEVICE=irda0
DISCOVERY=yes

Обратите внимание, что устройство irda0 здесь указывается без /dev/. Дальнейшие действия по настройке порта такие же, как и при настройке SIR – достаточно запустить службу irda и убедиться в наличии связи с устройством.

Если при попытке загрузить модуль FIR(smsc-ircc2,nmc-ircc,donauboe) выдается сообщение об ошибке (нет такого устройства), возможно устройство использует нестандартные ресурсы. В этом случае можно уточнить ресурсы устройства в документации компьютера, настройках BIOS или в обзоре оборудования системы Windows, если она уже установлена на компьютере, и указать их как аргумент модуля FIR. Например, для модуля nsc-ircc могут быть указаны следующие аргументы:

  • io – порт ввода-вывода (io=0x2f8)
  • irq – прерывание (irq=3)
  • dma – канал прямого доступа (dma=1)

Параметры должны быть указаны в файле /etc/modprobe.conf следующим образом:

options nsc-ircc io=0x2f8 irq=3 dma=1

Настройка USB IrDA

В настоящее время все большое распространение получили IrDA-адаптеры, подключаемые к шине USB. Среди моделей, работоспособность которых под Linux подтверждена, можно перечислить ACTiSYSACT-IR2000UFIR-USB адаптер, Tekram410U и некоторые NoName адаптеры, использующие ту же элементную базу. Поскольку эти устройства являются устройствами FIR, их настройка во многом аналогична настройке встроенных устройств FIR. Так, формат файла /etc/sysconfig/irda для FIR-USB адаптеров полностью аналогичен описанному выше для встроенных устройств FIR:

IRDA=yes
DEVICE=irda0
DISCOVERY=yes

Инициализация необходимого модуля irda-usb происходит автоматически, но в стандартной конфигурации одновременно с драйвером irda-usb грузится драйвер эмуляции последовательного порта ir-usb, который препятствует работе irda-usb. Поэтому перед подключением устройства в файл /etc/modprobe.conf необходимо добавить следующую строку:

alias ir-usb off

Если после этого подключить FIR-USB адаптер, команда

# /sbin/ip ad sh

должна показать наличие устройства irda0. После чего можно запустить службу irda и убедиться в наличии связи с IrDA-устройством, находящимся в пределах видимости (команда irdadump).

Статьи по Теме

Другие Статьи

Категории
Поиск