有三种类型的底层驱动程序:SIR、FIR 和 dongle。
尝试找出红外设备使用的串口。 您可以通过查看 dmesg 的输出来做到这一点。 如果串行支持是模块化的,请首先执行 modprobe serial。 查找类似如下的条目
Serial driver version 4.25 with no serial options enabled ttyS00 at 0x03f8 (irq = 4) is a 16550A #first serial port /dev/ttyS0 ttyS01 at 0x3000 (irq = 10) is a 16550A #e.g. infrared port ttyS02 at 0x0300 (irq = 3) is a 16550A #e.g. PCMCIA modem port |
在某些情况下,您可能需要使用 setserial /dev/ttyS<0-2> port 0xNNNN irq M 来设置红外串口的值,尤其是在红外端口是独立的串行线路时。 通常您不需要更改这些值! 有关更多信息,请查看下面的 FAQ 部分。
如果您不使用 kerneld 或 kmod,请使用 modprobe irda 插入 irda 模块。
执行 lsmod。 它现在应该显示模块 irda 和 irtty。
查看 /var/log/messages 应该会显示条目 “Serial connection established”。
给 irattach 一些时间,例如七秒,来检测其他红外设备。 然后查看内核的输出,您应该可以在 /var/log/messages 中获得该输出。 它应该看起来像下面这样(我删除了一些与 Linux/IrDA 无关的行)
Jan 2 12:57:26 japh kernel: ttyS00 at 0x03f8 (irq = 4) is a 16550A Jan 2 12:57:26 japh kernel: ttyS02 at 0x03e8 (irq = 4) is a 16550A Jan 2 12:57:26 japh kernel: Linux Support for the IrDA (tm) protocols (Dag Bra ttli) Jan 2 12:59:09 japh syslog: executing: 'echo 1 > /proc/sys/net/irda/discovery' Jan 2 12:59:09 japh syslog: Setting discovery to 1 exited with status 1 Jan 2 12:59:09 japh syslog: + 0.1 Fri Jul 25 11:45:26 1997 Dag Brattli Jan 2 12:59:09 japh syslog: + 0.1 Fri Jul 25 11:45:26 1997 Dag Brattli Jan 2 12:59:09 japh syslog: Serial connection established. Jan 2 12:59:09 japh kernel: IrDA irda_device irda0 registered. Jan 2 13:01:22 japh syslog: executing: './drivers start ' Jan 2 13:01:22 japh syslog: Serial connection established. Jan 2 13:01:42 japh syslogd: Printing partial message Jan 2 13:01:42 japh 0.1 Fri Jul 25 11:45:26 1997 Dag Brattli Jan 2 13:02:49 japh kernel: IrDA Discovered: japh Jan 2 13:02:49 japh kernel: Services: Computer |
您可以使用 cat /proc/net/irda/discovery 获取更多信息。
IrDA(TM) 标准定义了三种速度
SIR = 标准 IrDA,高达 115kbps IrDA,
MIR = 中速 IrDA,
FIR = 快速 IrDA (4Mbps),
VFIR = 极速 IrDA(16Mbps),似乎将成为未来的标准
高达 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(如果您幸运的话)。
支持的 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 tekram modprobe esi irattach /dev/ttyS0 -d esi & irattach /dev/ttyS1 -d tekram & |
irattach /dev/ttyS0 -d actisys # for the 220L dongle irattach /dev/ttyS0 -d actisys+ # for the 220L+ dongle |
注意:当我尝试使用连接到我的笔记本电脑的红外调制解调器(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 一起工作。”
例如,ACTiSYS IR2000 dongle 的支持已实现。
我从 James 那里得到了关于设置硬件的描述:有两种配置,一种是五针直插式连接器,另一种是 6 针 DIL(在 18 针 DIL 接头的末端)。 基本上任何 IrDA 兼容的收发器都可以工作(我有一堆旧的 IRM3001,这些现在已经过时了),您需要在收发器附近的 5V 和 0V 之间连接一个电容器(使用约 ~1uF 的钽电容),然后连接其他所有东西(RX->RX、TX->TX、5V->5V 和 0V-0V)。 如果您不喜欢烙铁,那么很多公司都会销售用于 5 针连接器的 IR 模块,这些模块可以安装到您机箱上的孔中。