3.1. 启动 IrDA 堆栈

有三种类型的底层驱动程序:SIR、FIR 和 dongle。

3.1.1. 标准红外 - SIR

3.1.2. 快速红外 - FIR

IrDA(TM) 标准定义了三种速度

高达 115.200bps (SIR),许多(可能所有)红外控制器都像串口一样工作,并使用 RZI(归零反转)调制。 并非每个红外控制器都支持 4Mps (FIR),高达 4Mbps 时,它们必须使用 4PPM(4 脉冲位置)调制技术。 支持的 FIR 芯片列表包含在/usr/src/linux/drivers/net/irda/Kconfig。 您可以通过加载相应的模块来启动 FIR 服务。 然后 Linux/IrDA 将探测您的硬件。 更多驱动程序正在开发中。

那么您可以期望获得什么速度? 使用 SIR,您应该能够获得大约 10 Kbytes/s。 使用 FIR (4Mbps),您可以获得超过 300 Kbytes/s(如果您幸运的话)。

3.1.3. Dongle 连接 - 用于串口的红外适配器

支持的 dongle 的调查包含在/usr/src/linux/drivers/net/irda/Kconfig.

Dag Brattli 写道(wh 修改):“要使用 dongle,您必须执行类似这样的操作

modprobe tekram         # or esi or actisys
irattach -d tekram      # or -d esi or -d actisys
如果 modprobe 不是必需的,则/etc/modules.conf是正确的。 如您所见,您仍然必须将 -d 选项与 irattach 一起使用,因为有可能同时有两个串口使用不同的 dongle(因此您绑定的 tty 必须知道它应该使用哪个 dongle)。 因此,如果您有两个 dongle 和两个串口,您可以执行类似这样的操作
modprobe tekram
modprobe esi
irattach /dev/ttyS0 -d esi &
irattach /dev/ttyS1 -d tekram &
PS:我不会尝试让两个 dongle 互相冲突,因为我真的不知道堆栈会如何反应 :-) ... 由于我没有任何这些新的 ACTiSYS 220L+ dongle,所以我无法对其进行测试。 由于新的 dongle 支持一种额外的速度 (38400bps),您必须使用 irattach 以不同的方式指定 dongle,以便内核知道您正在使用哪个 dongle(以及可以使用什么 QoS)
irattach /dev/ttyS0 -d actisys     # for the 220L dongle
irattach /dev/ttyS0 -d actisys+    # for the 220L+ dongle
当前 dongle 支持的实现没有任何与之关联的状态,因此目前无法同时使用两个 ACTiSYS dongle(220L 和 220L+)(连接到两个串口)。 如果有人需要能够这样做,请给我(Dag Brattli)发邮件,我会考虑一下!”

注意:当我尝试使用连接到我的笔记本电脑的红外调制解调器(Swissmod 56Ki,由 Telelink AG 制造)(由于非标准硬件,IrDA 仅适用于 Microsoft-Window$95)时,我必须删除 BIOS 中的红外支持才能使其工作!

Dag Brattli:“现在可以使用 irport 代替 irtty 了! 我已将所有 dongle 内容从 irtty 移至 irda_device,因此也可以将 dongle 连接到 irport。 但是,需要制作一个小型的用户空间实用程序 dongle_attach,该实用程序可用于将 dongle 连接到特定的驱动程序实例。 顺便说一句:irattach 仍然像以前一样工作,即使在将 dongle 连接到 irtty 时,您也不会注意到任何差异(我只是将 dongle ioctl 重定向到 irda_device)。 Irport 可能很有趣,因为您可以避免一个软件中断 (bh) 级别,并且它也被强制在半双工模式下工作,因此如果 irda 端口本身没有回声消除功能(Girbil dongle 和 HP-4000 等),您将不会收到任何回声 ... 要使用它,您必须像这样为 modprobe 提供参数:modprobe irport io=0x3f8 irq=4,或您使用的任何值。 您还可以将这些参数添加到/etc/modprobe.conf(内核 2.6)或/etc/modules.conf(内核 2.4),如下所示:options irport io=0x3f8 irq=4,但随后您必须记住执行 depmod -a 并使用 modprobe irport 而不是 modprobe。”

Alvin Loh:“任何拥有 ESI 9680C 的人都可以使用 parallax 和 ESI 的信令方案,这意味着他们可以使用 Parallax 的驱动程序与 ESI9680C 一起工作。”

3.1.4. Dongle 连接 - 用于 USB 端口的红外适配器

并非每个 USB dongle 都能工作。 有关详细信息,请参阅下面关于 IrDA 和 USB 的专门章节。

3.1.5. Dongle 连接 - 红外主板适配器

例如,ACTiSYS IR2000 dongle 的支持已实现。

我从 James 那里得到了关于设置硬件的描述:有两种配置,一种是五针直插式连接器,另一种是 6 针 DIL(在 18 针 DIL 接头的末端)。 基本上任何 IrDA 兼容的收发器都可以工作(我有一堆旧的 IRM3001,这些现在已经过时了),您需要在收发器附近的 5V 和 0V 之间连接一个电容器(使用约 ~1uF 的钽电容),然后连接其他所有东西(RX->RX、TX->TX、5V->5V 和 0V-0V)。 如果您不喜欢烙铁,那么很多公司都会销售用于 5 针连接器的 IR 模块,这些模块可以安装到您机箱上的孔中。