2.2. 内核

2.2.1. 前言

请阅读来自 TLDP 的 Kernel-HOWTO 以获取关于编译过程的更多信息。Thomas Hertweck 编写了另一个有用的 Linux-Kernel-HOWTO (但它仅提供德语和意大利语版本)。查看 Linux/IrDA 项目 或 Linux/IrDA 邮件列表存档以获取最新的补丁。

您将在以下位置找到 Linux/IrDA 内核代码:

/usr/src/linux/net/irda (协议相关)

/usr/src/linux/drivers/net/irda (设备驱动程序)

/usr/src/linux/include/net/irda (头文件)

2.2.2. 通用参数

确保您使用内核 2.6 源代码。我建议不要使用任何更早的内核版本,但本文档将在适当的地方描述与内核 2.4 系列的区别。如果不确定您的内核版本,请尝试 uname -r

对于当前的 2.6 内核,不需要任何补丁。如果 Linux/IrDA 项目或其他地方有内核补丁需要应用(例如,对于内核 2.4),请将其放入目录/usr/src或您的内核源代码所在的任何其他位置,并应用类似以下内容(替换patch-2_4.0-irdaXXX为实际文件名)

cd /usr/src
tar xvzf patch-2_4.0-irdaXXX.tar.gz
cd linux
patch -p1 -l < ../patch-2_4.0-irdaXXX
对于最新的驱动程序,必须启用实验性支持 CONFIG_EXPERIMENTAL,至少在内核 2.4 中是这样。

在“General Setup”中启用 sysctl CONFIG_SYSCTL

您应该具有 proc 文件系统支持 CONFIG_PROC_FS

还需要用于 SIR 功能的串行支持 CONFIG_SERIAL

我不确定是否必须要有打印机支持才能将打印机与 Linux/IrDA 一起使用 CONFIG_PRINTER。但我认为此功能不是必需的。

网络支持 _必须_ 启用 CONFIG_NET

确保您的内核具有模块支持 CONFIG_MODULES!例如,使用 lsmod 进行测试。

还需要 kerneld 支持 CONFIG_KERNELD。但是 kmod (CONFIG_KMOD) 也有效。单内核似乎也可以工作。但是强烈建议使用模块!

要使用 irdadump,您可能需要设置 CONFIG_PACKET

如果您仅应用 Linux/IrDA 补丁,则不应执行 make clean,这样可以节省一些时间。我建议您执行类似以下操作:

对于内核 2.4,请使用: make dep && make all && make modules && make install && make modules_install。对于内核 2.6,请使用: make all && make install && make modules_install。如果您遇到非常奇怪的错误,请尝试在 make clean 之后从头开始重建。

2.2.3. IrDA 特定参数

以下内容来自../linux-2.4.3/Documentation/Configure.help(内核 2.4) 或../linux-2.6.x/net/irda/Kconfig, ../linux-2.6.x/drivers/net/irda/Kconfig(内核 2.6),并经过我的一些修改。请查阅最新的可用内核文档以获取当前信息和新驱动程序。

2.2.3.1. IrDA 子系统支持

CONFIG_IRDA 如果您想要构建对 IrDA (TM) 协议的支持,请在此处选择 Y。红外数据协会 (tm) 规定了无线红外通信标准,并且受到大多数笔记本电脑和 PDA 的支持。

要使用 Linux 对 IrDA (tm) 协议的支持,您还需要一些用户空间实用程序,如 irattach。有关更多信息,请参阅文件 Documentation/networking/irda.txt。您还需要阅读 InfraRed-HOWTO,可在 TuxMobil 上获取。

此支持也可以作为名为 irda.o 的模块提供。如果您想将其编译为模块,请在此处选择 M 并阅读 Documentation/modules.txt。

IrDA 缓存上次 LSAP

CONFIG_IRDA_CACHE_LAST_LSAP 如果您希望 IrLMP 缓存上次使用的 LSAP,请在此处选择 Y。这很有意义,因为大多数帧将在同一连接上发送/接收。启用此选项将为每个帧节省一次哈希查找。

如果不确定,请选择 Y。

IrDA 快速 RR

CONFIG_IRDA_FAST_RR 如果您希望 IrLAP 在充当主站时发送快速 RR(接收就绪)帧,请在此处选择 Y。这将使 IrLAP 在接收到帧时立即发送 RR 帧,如果其自身的传输队列当前为空。当接收大量数据时,这将大大提高速度,因为从站不必等待最大周转时间才能被允许下次传输。如果从站的传输队列也为空,则主站将退避等待更长时间发送 RR 帧,直到超时达到正常值。启用此选项将使红外二极管消耗更多电量,从而缩短电池寿命。

如果不确定,请选择 N。

IrDA 调试

CONFIG_IRDA_DEBUG 如果您希望 IrDA 子系统将调试信息写入您的 syslog,请在此处选择 Y。您可以在以下位置更改调试级别:/proc/sys/net/irda/debug

如果不确定,请选择 Y(因为它更容易找到错误)。

IrLAP 压缩支持

CONFIG_IRDA_COMPRESSION 压缩 _不是_ IrDA(tm) 协议规范的一部分,但它工作良好!Linux 是第一个尝试在 IrLAP 层提供压缩支持的系统。这意味着只有在运行 Linux <-> Linux 配置时,您才能从压缩中受益。

如果您在此处选择 Y,您还需要在下面的压缩协议中选择 Y 或 M。

IrLAP Deflate 压缩协议 (实验性)

CONFIG_IRDA_DEFLATE 如果您想要构建对 Deflate 压缩协议的支持,请在此处选择 Y。deflate 压缩 (GZIP) 与 PPP 协议使用的压缩完全相同。

如果您想将此压缩支持编译为模块,请在此处选择 M 并阅读 Documentation/modules.txt。该模块将被称为 irda_deflate.o。

IrLAN 协议 但目前 IrLAN 协议不再由 Linux/IrDA 核心团队维护。

CONFIG_IRLAN 如果您想要构建对 IrLAN 协议的支持,请在此处选择 Y。如果您想将其编译为模块 (irlan.o),请在此处选择 M 并阅读 Documentation/modules.txt。IrLAN 模拟以太网,并使使用红外光束建立无线 LAN 成为可能。

IrLAN 协议可用于与红外接入点(如 HP NetbeamIR 或 ESI JetEye NET)通信。您还可以连接到另一台运行 IrLAN 协议的 Linux 机器以进行 ad-hoc 网络连接!

IrCOMM 协议

CONFIG_IRCOMM 如果您想要构建对 IrCOMM 协议的支持,请在此处选择 Y。如果您想将其编译为模块(您将获得 ircomm.oircomm-tty.o),请在此处选择 M 并阅读 Documentation/modules.txt。IrCOMM 实现了串行端口仿真,并使所有现有的理解 TTY 的应用程序都可以在红外链路中使用。因此,您应该能够使用诸如 PPP、minicom 等应用程序。启用此选项将创建两个模块,名为ircommircomm-tty.

2.2.3.2. 设备驱动程序

IrTTY IrDA 设备驱动程序

CONFIG_IRTTY_SIR 如果您想要构建对 IrTTY 行规程的支持,请在此处选择 Y。如果您想将其编译为模块 (irtty.o),请在此处选择 M 并阅读 Documentation/modules.txt。IrTTY 使 Linux 自己的串行驱动程序可以用于所有 16550 兼容的 IrDA 端口。大多数 IrDA 芯片都是 16550 兼容的,因此您可能应该对此选项选择 Y。但是,使用 IrTTY 会将连接速度限制为 115200 bps (IrDA SIR 模式)

如果不确定,请选择 Y。

IrPORT IrDA 设备驱动程序

CONFIG_IRPORT_SIR 如果您想要构建对 IrPORT IrDA 设备驱动程序的支持,请在此处选择 Y。如果您想将其编译为模块 (irport.o),请在此处选择 M 并阅读 Documentation/modules.txt。IrPORT 可以代替 IrTTY 使用,有时这样做会更好。一个例子是,如果您的 IrDA 端口没有回声消除功能,那么使用 IrPORT 可以正常工作,因为此驱动程序仅在半双工模式下工作。您不需要将 irattach 与 IrPORT 一起使用,但您可以像插入 FIR 驱动程序一样插入它 (insmod irport io=0x3e8 irq=11)。请注意,IrPORT 是 SIR 设备驱动程序,这意味着速度限制为 115200 bps。

如果不确定,请选择 Y。

Winbond W83977AF IrDA 设备驱动程序

CONFIG_WINBOND_FIR 如果您想要为 Winbond W83977AF 超级 I/O 芯片组构建 IrDA 支持,请在此处选择 Y。此驱动程序应用于 Corel NetWinder 中的 IrDA 芯片组。该驱动程序支持 SIR、MIR 和 FIR (4Mbps) 速度。

如果您想将其编译为模块,请在此处选择 M 并阅读 Documentation/modules.txt。该模块将被称为 w83977af_ir.o。

NSC PC87108 IrDA 设备驱动程序

CONFIG_NSC_FIR 如果您想要为 NSC PC87108 和 PC87338 IrDA 芯片组构建支持,请在此处选择 Y。此驱动程序支持 SIR、MIR 和 FIR (4Mbps) 速度。

如果您想将其编译为模块,请在此处选择 M 并阅读 Documentation/modules.txt。该模块将被称为 nsc-ircc.o。

Toshiba Type-O IR 端口设备驱动程序

CONFIG_TOSHIBA_FIR 如果您想要为 Toshiba Type-O IR 芯片组构建支持,请在此处选择 Y。东芝 Libretto 100CT 和许多其他笔记本电脑都使用此芯片组。如果您想将其编译为模块,请在此处选择 M 并阅读 Documentation/modules.txt。该模块将被称为 toshoboe.o。

SMC IrCC (实验性)

CONFIG_SMC_IRCC_FIR 如果您想要为 SMC 红外通信控制器构建支持,请在此处选择 Y。它用于 Fujitsu Lifebook 635t 和 Sony PCG-505TX。如果您想将其编译为模块,请在此处选择 M 并阅读 Documentation/modules.txt。该模块将被称为 smc-ircc.o。

ALi M5123 FIR 控制器驱动程序 (实验性)

CONFIG_ALI_FIR 如果您想要为 ALi M5123 FIR 控制器构建支持,请在此处选择 Y。ALi M5123 FIR 控制器嵌入在 ALi M1543C、M1535、M1535D、M1535+、M1535D 南桥中。此驱动程序支持 SIR、MIR 和 FIR (4Mbps) 速度。

如果您想将其编译为模块,请在此处选择 M 并阅读 Documentation/modules.txt。该模块将被称为 ali-ircc.o。

串行 dongle 支持

CONFIG_DONGLE 如果您拥有连接到计算机串行端口的红外设备(这些设备称为 dongle),请在此处选择 Y。然后在下面为您的特定 dongle 选择 Y 或 M 驱动程序。

请注意,此问题的答案不会直接影响内核:选择 N 只会导致此配置脚本跳过所有

ESI JetEye PC Dongle

CONFIG_ESI_DONGLE 如果您想要为 Extended Systems JetEye PC dongle 构建支持,请在此处选择 Y。如果您想将其编译为模块,请在此处选择 M 并阅读 Documentation/modules.txt。ESI dongle 连接到普通的 9 针串行端口连接器,目前只能由 IrTTY 使用。要激活对 ESI dongle 的支持,您必须像这样启动 irattach: irattach -d esi

ACTiSYS IR-220L 和 IR220L+ dongle

CONFIG_ACTISYS_DONGLE 如果您想要为 ACTiSYS IR-220L 和 IR220L+ dongle 构建支持,请在此处选择 Y。如果您想将其编译为模块,请在此处选择 M 并阅读 Documentation/modules.txt。ACTiSYS dongle 连接到普通的 9 针串行端口连接器,目前只能由 IrTTY 使用。要激活对 ACTiSYS dongle 的支持,您必须像这样启动 irattach: irattach -d actisysirattach -d actisys+

Tekram IrMate 210B dongle

CONFIG_TEKRAM_DONGLE 如果您想要为 Tekram IrMate 210B dongle 构建支持,请在此处选择 Y。如果您想将其编译为模块,请在此处选择 M 并阅读 Documentation/modules.txt。Tekram dongle 连接到普通的 9 针串行端口连接器,目前只能由 IrTTY 使用。要激活对 Tekram dongle 的支持,您必须像这样启动 irattachirattach -d tekram

Greenwich GIrBIL dongle

CONFIG_GIRBIL_DONGLE 如果您想要为 Greenwich GIrBIL dongle 构建支持,请在此处选择 Y。如果您想将其编译为模块,请在此处选择 M 并阅读 Documentation/modules.txt。Greenwich dongle 连接到普通的 9 针串行端口连接器,目前只能由 IrTTY 使用。要激活对 Greenwich dongle 的支持,您必须在 /etc/irda/drivers 脚本中插入 irattach -d girbil

Parallax Litelink dongle

CONFIG_LITELINK_DONGLE 如果您想要为 Parallax Litelink dongle 构建支持,请在此处选择 Y。如果您想将其编译为模块,请在此处选择 M 并阅读 Documentation/modules.txt。Parallax dongle 连接到普通的 9 针串行端口连接器,目前只能由 IrTTY 使用。要激活对 Parallax dongle 的支持,您必须像这样启动 irattach irattach -d litelink

旧款 Belkin dongle

CONFIG_OLD_BELKIN_DONGLE 如果您想要为 Adaptec Airport 1000 和 2000 dongle 构建支持,请在此处选择 Y。如果您想将其编译为模块,请在此处选择 M 并阅读 Documentation/modules.txt。该模块将被称为 old_belkin.o。一些信息包含在 drivers/net/irda/old_belkin.c 顶部的注释中。

2.2.4. 当前内核补丁

注意:donauboetoshoboe 的新版本,具有更好的 FIR 支持和与来自 lib-irda 的 Donauoboe 芯片的兼容性。注意:toshoboe 驱动程序已从 2.6 内核系列中删除。