目前最知名的 Linux 掌上电脑有 AgendaComputing 公司的 Agenda VR3(已停产)、COMPAQ 公司的 iPAQ、SHARP 公司的 Zaurus SL-5000/5500 以及 Samsung 公司的 Yopy。所有这些都带有红外端口。有多种适用于 Linux 掌上电脑的 Linux 发行版,例如:QT Embedded(预装在 SHARP Zaurus 上)、Opie、Familiar 等。您可以在 Zaurus 软件索引 - ZSI 或 ipkgfind 找到下面提到的软件 IPK 包。有关 Linux 在掌上电脑上的更多信息,请参阅 TuxMobil。
以下内容基于我在 SHARP Zaurus SL-5500G 上的经验,使用原始 SHARP romimage 2.38G 和 Kernel 2.4.6-rmk1-np2-embedix#1,但可能经过适当修改后也适用于其他 Linux 掌上电脑。Zaurus 附带书面手册,其中使用 GUI(例如文件管理器、设置)解释了文件传输和 PPP 连接。在这里,我将尝试介绍可以从命令行完成的操作以及官方 SHARP 手册和 Opie 用户手册 中均未包含的主题。红外功能似乎是 StrongARM SA1110 CPU 的一部分,IrDA 驱动程序模块名为 sa1110_ir(在库存 Zaurus 上,IrDA 支持似乎已内置到内核中)。从 irda-utils 中,只有 irattach 可用。IrDA 支持通过 irattach /dev/ttyS2 -s 1 连接(注意,在较新版本中,"-s 1" 将被 "-s" 替换)。因此,看起来使用了 SIR,我尚无关于 FIR 支持的信息。要获得 irdadump 的某些功能并检测范围内的其他 IrDA 设备或调试 IrDA,您可以使用 cat /proc/net/irda/discovery 和/proc文件系统中的其他文件,或者自行编译适用于 ARM 架构的 irda-utils,也可以使用预编译的二进制文件。从设备文件中,只有/dev/ircomm(注意不是/dev/ircomm0)默认创建。文件modules.conf似乎不存在。使用 irrecv,您可以启动红外 GUI 设置。IrOBEX 支持可用,但缺少 OpenOBEX 中的相应工具,但您可以从 GUI 将文件传输到 Palm 掌上电脑、手机或另一台 Linux 电脑或 Microsoft-Windows 机器。IrDA 启动脚本位于/home/etc/rc.d/init.d/irda。有关红外遥控支持,请参见下文。使用另一台 Linux 电脑上的 irdadump,Zaurus 标识为(查看第二行)
10:56:48.652982 xid:cmd b03cbbb9 > ffffffff S=6 s=5 (14) 10:56:48.652963 xid:rsp b03cbbb9 < b7960e8f S=6 s=4 localhost hint=8420 [ Computer IrOBEX ] (26) 10:56:48.742992 xid:cmd b03cbbb9 > ffffffff S=6 s=* japh hint=0400 [ Computer ] (20) 10:56:51.203002 xid:cmd b03cbbb9 > ffffffff S=6 s=0 (14) |
使用 PPP,您可以通过手机或另一台计算机获得网络连接。有关详细信息,请参阅 PPP-HOWTO。有关通过另一台 Linux 电脑通过 NAT 转发数据包的信息,请参阅 IPTABLES 教程。
您可以使用命令行选项启动 pppd,但对我来说,拥有配置文件/etc/ppp/peers/irda更方便。这是一个用于首次测试的示例
connect /bin/true noauth persist debug kdebug 7 nodetach 115200 local /dev/ircomm 192.168.0.2:192.168.0.3 |
如果另一个 IrDA 设备是 Linux 笔记本电脑,您可以使用相同的配置文件名和相同的 PPP 选项,但没有最后一行,该行设置了本地和远程 IP 地址。还要注意正确的设备名称,例如/dev/ircomm0。以下条目用于调试目的,在一切正常工作后可以注释掉
persist debug kdebug 7 nodetach |
现在在两台机器上都使用 pppd call irda 启动 PPP。为了诊断目的,让消息在此终端窗口中运行,并切换到另一个窗口进行后续步骤。您现在可以使用 ifconfig 和 ping 检查网络连接。有关连接到手机的信息,请参阅上面的“手机连接”章节。
OBEX 的优势通常在于集成。通过 OBEX 发送约会事件,Zaurus 很可能会像 Palm 一样自动将其集成到内置日历中。商务名片也是如此。IrOBEX 协议提供了一种通过红外线将文件轻松传输到另一台掌上电脑、手机或计算机的方式。Linux 工具由 OpenOBEX 提供。通过 GUI 在两台 Zaurus 掌上电脑之间或与 Palm 掌上电脑之间进行文件传输可能有效。但目前我无法从我的 Linux 笔记本电脑发送或接收文件。当尝试通过 ircp FILE 发送文件时,我收到此 irdadump 消息
11:11:03.943005 i:cmd > ca=8a pf=1 nr=0 ns=0 LM slsap=12 dlsap=00 CONN_CMD (6) 11:11:03.972964 i:rsp < ca=8a pf=1 nr=1 ns=0 LM slsap=00 dlsap=12 CONN_RSP (6) 11:11:03.973010 i:cmd > ca=8a pf=1 nr=1 ns=1 LM slsap=12 dlsap=00 GET_VALUE_BY_CLASS: "OBEX:IrXfer" "IrDA:TinyTP:LsapSel" (37) 11:11:04.002973 i:rsp < ca=8a pf=1 nr=2 ns=1 LM slsap=00 dlsap=12 GET_VALUE_BY_CLASS: No such class (11) 11:11:04.003015 i:cmd > ca=8a pf=1 nr=2 ns=2 LM slsap=12 dlsap=00 DISC (6) |
当尝试通过 ircp -r 接收文件时,我收到此 irdadump 消息
11:15:08.682979 i:cmd < ca=8a pf=1 nr=4 ns=5 LM slsap=53 dlsap=00 CONN_CMD (6) 11:15:08.683063 i:rsp > ca=8a pf=1 nr=6 ns=4 LM slsap=00 dlsap=53 CONN_RSP (6) 11:15:08.712970 i:cmd < ca=8a pf=1 nr=5 ns=6 LM slsap=53 dlsap=00 GET_VALUE_BY_CLASS: "OBEX" "IrDA:TinyTP:LsapSel" (30) 11:15:08.713035 i:rsp > ca=8a pf=1 nr=7 ns=5 LM slsap=00 dlsap=53 GET_VALUE_BY_CLASS: No such class (11) 11:15:08.732976 i:cmd < ca=8a pf=1 nr=6 ns=7 LM slsap=53 dlsap=00 DISC (6) |
Jean Tourrilhes 建议了以下解决方案:“Zaurus 不支持“OBEX:IrXfer”服务,它可能只支持“OBEX”服务,使用 cat /proc/net/irda/irias 验证。因此,您要么在 Zaurus 上启动“OBEX:IrXfer”上的服务器(为 Zaurus 交叉编译的 ircp_server),要么在笔记本电脑上使用使用“OBEX”的客户端(irobex_palm3)。”
Beamster 是一个小的 Gtk/python 实用程序,用于帮助进行 IrDA 传输,特别是从 Linux 掌上电脑传输到 Linux 掌上电脑(ftp://ftp.handhelds.org/pub/linux/dists/familiar/feeds/unstable/packages/armv4l/)。它可以与大多数使用 IrDA 对象交换协议 (OBEX) 的手持设备/笔记本电脑/打印机通信,事实上,任何已经与 openobex 包配合使用的设备都可以与此程序一起工作。它应该相当直观易用。确保 IrDA 处于“开启”状态,放置两个设备,等待状态栏显示已发现新对等设备,选择传输模式(PalmOS 对等设备使用“Palm3”,其他设备使用“Windows”),然后根据需要按“beam”或“receive”。请注意,“receive”会切换开启和关闭。已测试与以下 IrDA 设备之间的文件传输:旧的 Palm3、Psion 5MX、Windows 98 ThinkPad 和带有 Actisys L220+ 加密狗的 Linux 台式机。
ObexFTP 实现 flexmem 直接访问 Flex.Memory。我通过 sersniff 管道传输了一个 S45 数据浏览器(windows)会话。日志大致类似于电缆上的 OBEX。事实上,旧的 Open OBEX 与 Siemens S45 手机配合使用。已确认它与 Siemens S45/ME45 和类似的手机配合良好。您可以通过 IrDA 或串行连接访问 Siemens 移动设备上的 Flex Memory。
要直接打印到支持 IrDA 的打印机,您需要设备文件/dev/irlpt0。如果它不可用,请使用 mknod /dev/irlpt0 c 161 16 创建它。现在您可以执行第一个简单的测试。尝试将一个小文件写入/dev/irlpt0通过 cat FILE >/dev/irlpt0。使用 SHARP 提供的库存内核,这不起作用,但使用自定义内核则可以正常工作。不要对格式不佳感到奇怪(这些行形成某种阶梯),这只是第一次检查。要获得漂亮的打印格式,您可能需要编写一个过滤器,如 LinuxPrinting.org 的 Printing-HOWTO 中所述。有关从移动 Linux 设备打印的更多信息,您可以在 Linux 移动指南 中找到。
可以通过安装适用于相应内核版本的 lirc-modules-KERNEL 和 LIRC 在 Linux 掌上电脑上实现消费级红外线 - CIR,也称为红外遥控。有关更多详细信息,请参阅 HandHelds.org-WiKi 和 Opie-Remote 页面。Opie-Remote 是 Compaq iPAQ 和 SHARP Zaurus 的遥控模拟器。
在 SHARP Zaurus 开发者站点,您可以找到 Zaurus-IrDA-HOWTO,其中解释了如何在 Zaurus 上使用 IrDA 端口。Werner Schulte 的 iPAQ 帮助 - 使用 QPE 开发 iPAQ 和 Zaurus 介绍了如何通用地开发 Qtopia 应用程序。
对于 iPAQ,有模块h3600_microkbd,它支持 MicroInnovations IR 键盘。似乎有光学条形码阅读器可用,它们使用某种红光来读取数据。但我怀疑这与 IrDA 或消费级红外线 - CIR 有任何关系。
IRK 允许您将外部红外键盘与 Zaurus 一起使用。它将 LIRC 驱动程序连接到 Qtopia 环境。目前仅支持 Chicony KB-9820 键盘(德语版)。