3.9. 从 Linux 连接到 WinCE 3.0 (又名 PocketPC)

本章由 Stanislav Sokolov 友情提供。

本节介绍如何将 PocketPC 设备连接到 Linux 计算机。 "从 Linux 连接到 WinCE" 部分(也可在 CEwindows 找到)中提供的信息不适用于 PocketPC,因为 Microsoft 在他们难得的明智时刻,从 WinCE 3.0 版本中移除了对直接 IrDA 连接的支持。 我使用了文档 "Linux to Windows CE Connection"(可在 The Gadgeteer 找到)作为起点,但不得不修改和简化了几个方面。 本节将介绍 PocketPC 和 Linux 之间 ping 命令的使用。 您应该可以在 PDAcentral, CAMWinCEcity 找到许多网络应用程序。

这是我使用的系统

在 PocketPC 端,转到“开始” -> “设置” -> “连接” -> “调制解调器”。 创建新连接,将其命名为有意义的名称(我使用 Linux-m),选择“通用 IrDA 调制解调器”,将波特率设置为 115200。 点击“高级”。 在“端口设置”中,选择 8-N-1-硬件 并选中“手动输入拨号命令”。 这样做是为了防止 PocketPC 尝试拨打电话号码,因为我们不需要它。 另外两个框应保持未选中状态。 在 TCP/IP 中,选择“使用服务器分配的 IP 地址”,取消选中“使用 Slip”,但选中“使用软件压缩”和“使用 IP 标头压缩”。 在“名称服务器”中,选择“使用服务器分配的地址”。 点击“确定”和“下一步”。 您不应该被要求输入电话号码(如果要求输入,只需输入 1 并仔细检查您是否在高级部分中实际选择了手动拨号命令框)。 确保“取消呼叫...”和“等待拨号音...”框未被选中。 现在我们完成了 PocketPC 部分的设置。

在 Linux 上,我们必须首先确保加载了所有必要的模块。 以下是在成功的通信会话期间加载和使用的模块

Module                  Size  Used by    Not tainted
ircomm-tty             31040   2
ircomm                 13448   0  [ircomm-tty]
irtty                   7616   2
ppp_async               6688   1
ppp_generic            15740   3  [ppp_async]
slhc                    4592   1  [ppp_generic]
确保 ls -la /dev/ircomm* 产生类似的输出
crw-------   1 root     root     161,   0 Nov 25 15:09 /dev/ircomm0
crw-r--r--   1 root     root     161,   1 Nov 22 19:30 /dev/ircomm1
启动 irattach irattach /dev/ttyS2 -s

现在我们必须在 IrDA 端口上启用登录终端。 我为此目的使用了 agetty (或您喜欢的 getty 变体)。 将以下行添加到您的/etc/inittab:

s3:2345:respawn:/sbin/agetty ircomm0 115200 vt100
保存文件并通过重启 init 激活它
init 2; sleep 3 ; init 3
还要准备以下 shell 脚本,它将执行连接的第二阶段
#!/bin/sh
/usr/sbin/pppd -detach noauth local lock 192.168.55.1:192.168.55.2 ircomm0 115200 &

现在是连接本身:对准红外端口,然后在 PocketPC 上转到“开始” -> “程序” -> “连接”,然后点击您创建的连接 (Linux-m)。 在出现的“连接到”对话框中,所有内容都保持未填写状态,只需点击“连接”。 将出现“手动拨号终端”。 在那里您应该看到 Linux 计算机的登录提示符(如果登录提示符没有立即出现,请调出虚拟键盘并点击“回车”)。 您无需登录(尽管这是一个额外的奖励 - 考虑到终极远程控制器 :)

在 Linux 计算机上,一旦 PocketPC 的终端中出现一些“乱码”,就执行 pppd 命令,点击“文件” -> “继续”。 pppd 应该出现以下消息

Using interface ppp0
Connect: ppp0 <--> /dev/ircomm0
Cannot determine ethernet address for proxy ARP
local  IP address 192.168.55.1
remote IP address 192.168.55.2
并且 PocketPC 应该显示一个对话框,其中包含“状态:已连接”。 您可以运行 ifconfig 来检查 ppp0 接口是否已启动并正在运行。 ping 192.168.55.2 应该产生类似的结果
PING 192.168.55.2 (192.168.55.2): 56 data bytes
64 bytes from 192.168.55.2: icmp_seq=0 ttl=32 time=62.5 ms
64 bytes from 192.168.55.2: icmp_seq=1 ttl=32 time=310.0 ms
64 bytes from 192.168.55.2: icmp_seq=2 ttl=32 time=59.9 ms
64 bytes from 192.168.55.2: icmp_seq=3 ttl=32 time=59.8 ms
64 bytes from 192.168.55.2: icmp_seq=4 ttl=32 time=60.0 ms

--- 192.168.55.2 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 59.8/110.4/310.0 ms
RTT 将取决于距离和照明条件。 当您点击“断开连接”时,将显示类似的内容
LCP terminated by peer
Modem hangup
Connection terminated.
Connect time 2.6 minutes.
Sent 1336 bytes, received 1274 bytes.

现在,如果一切进展不顺利,请检查以下内容