2.4. 配置

2.4.1. 设备号

mknod /dev/ircomm0 c 161 0
mknod /dev/ircomm1 c 161 1
mknod /dev/irlpt0 c 161 16
mknod /dev/irlpt1 c 161 17
mknod /dev/irnet c 10 187
chmod 666 /dev/ir*
如果你想使用 irkbd 功能,可能需要其他一些设备号。你可以在以下位置找到最新的设备号:../src/linux/Documentation/devices.txt.

2.4.2. 设备布置

首先,你应该将你的 IrDA 设备置于有效范围内。虽然 Linux/IrDA 服务可能自动检测到每个新设备,但我只有在配置过程中将设备置于有效范围内才有良好的经验。

将你的红外设备保持在一米以内和 30 度角范围内的范围内。它们之间必须有直接的视线。如果这不可能,你可以使用镜子(未使用的 M$ CD 应该效果不错)。

2.4.3. /etc/modules.conf

将以下行添加到你的/etc/modprobe.conf(对于内核 2.4/etc/modules.conf)文件(注意:实际文件名可能取决于你的 Linux 发行版)

# IrDA over a normal serial port, or a serial port compatible IrDA port (SIR)
alias tty-ldisc-11 irtty

# IrCOMM (for printing, PPP, Minicom etc)
alias char-major-161 ircomm-tty     # if you want IrCOMM support

# IRLAN
# But currently the IrLAN protocol is no longer maintained
# by the Linux/IrDA core team.
alias irlan0 irlan

# To be able to attach some serial dongles
# These values are hard-coded in irattach (not instance order)
alias irda-dongle-0  tekram             # Tekram IrMate IR-210B
alias irda-dongle-1  esi                # ESI JetEye
alias irda-dongle-2  actisys            # Actisys IR-220L
alias irda-dongle-3  actisys            # Actisys IR-220L+
alias irda-dongle-4  girbil             # Greenwich GIrBIL
alias irda-dongle-5  litelink           # Parallax LiteLink/ESI JetEye
alias irda-dongle-6  airport            # Adaptec Airport 1000 and 2000
alias irda-dongle-7  old_belkin         # Belkin (old) SmartBeam dongle
alias irda-dongle-8  ep7211_ir          # Cirrus Logic EP7211 Processor (ARM)
alias irda-dongle-9  mcp2120            # MCP2120 (Microchip) based
alias irda-dongle-10 act200l            # ACTiSYS Ir-200L
alias irda-dongle-11 ma600              # Mobile Action ma600

# To use the FIR driver. This applies only to the specific device!!!

#options nsc-ircc dongle_id=0x09	# NSC driver on a IBM Thinkpad laptop
#options nsc-ircc dongle_id=0x08	# HP Omnibook 6000
#alias irda0 nsc-ircc

# options smc-ircc ircc_irq= ircc_dma=
# alias irda0 smc-ircc

# options toshoboe max_baud=
# alias irda0 toshoboe

# options w83977af_ir io= io2= irq= qos_mtt_bits=
# alias irda0 w83977af_ir

# IrNET module...
alias char-major-10-187 irnet       # Official allocation of IrNET
然后执行 depmod -a 来更新,这样当你需要它们时,所有 IrDA 模块都应该被自动加载。注意:出于测试原因,你可以手动加载它们,但请确保不要加载两次。如果你想使用 irkbd 功能或 USB 加密狗,可能需要其他一些条目。irda-utils 包中包含一个模板文件。

注意:但是,对于 Debian GNU/Linux,你不应该编辑/etc/modules.conf直接编辑,而是将这些行放在/etc/modutils/irda-utils并在之后运行 update-modules。对于 2.6 内核,运行 update-modules 似乎已过时。

2.4.4. /etc/irda

查看以下目录中的文件/etc/irda。编辑它们以反映你的设置。

2.4.5. BIOS 配置

确保你的红外端口在 BIOS 中已启用,并检查它使用的中断和端口地址。对于某些笔记本电脑,似乎需要安装 Microsoft-Windows 才能设置 BIOS 参数。

我收到报告,在某些笔记本电脑上,当连接到扩展坞时,红外端口被禁用。

2.4.6. 串行端口

请先决定你是想在 SIR 还是 FIR 模式下设置 IrDA。建议从 SIR 开始。

2.4.6.1. SIR

根据你的 SIR 端口选择 ttySx。提示:dmesg | grep tty(详情请参阅下面的“启动 IrDA 堆栈”章节)。

要获取 SIR “串行”设备,请查看 BIOS。然后运行 dmesg | grep tty 以获取你的机器支持的 tty 设备概览。现在尝试选择一个,它很可能是 IrDA 设备。

2.4.6.2. FIR

如果你使用 SIR 没有成功(这似乎是罕见的情况),你可以尝试 FIR。首先查看 BIOS。为了避免与串行设备发生冲突,你应该执行 setserial /dev/ttySx uart none。注意:当在 SIR 模式下设置 IrDA 时,永远不要使用 setserial /dev/ttySx uart none

来自 Florian Lohoff 你还应该设置 “port 0x0 irq 0”,否则如果突然出现不同的 S1,例如插入调制解调器 PCMCIA 卡,你将会看到有趣的效果。串行驱动程序将接触旧端口,而没有获得这些端口,这将导致 irda 组件崩溃/挂起。这是一个我尚未在串行驱动程序中找到的错误,但它确实存在(将 printk 放入 serial_out serial_in 代码中)。

2.4.7. 资源冲突:IRQ、IO

在某些情况下,可能会发生 IRQ 冲突,特别是已报告与声音、PCMCIA 或热插拔系统的冲突。检查 cat /proc/interrupts 以获取有关你的机器上 IRQ 使用情况的一些信息。

2.4.8. 启动 IrDA

最重要的是,你必须同步你的磁盘!!!也许你必须重启你的机器。你读过免责声明了吗?

有三种类型的底层驱动程序:SIR、FIR 和用于没有内置红外端口的机器的适配器。要开始使用 Linux/IrDA,我建议使用 SIR 方法。

加载模块 modprobe irda irttyirattach /dev/ttyS1 -s 将 IrDA 设备连接到 IrDA 服务。检查 lsmoddmesg

irdadump 现在应该显示所有在范围内的可用 IrDA 设备。提示:如果你连接不同的 Linux 机器,你可以使用 hostname YOUR_HOSTNAME 为每台计算机设置唯一的主机名。

在“服务器”端执行 pppd /dev/ircomm0 LOCAL_IP:REMOTE_IP。在“客户端”端执行 pppd /dev/ircomm0 。

你现在可以使用 ping 测试连接。并使用各种网络连接(ssh、NFS 等)。