本章由 Stanislav Sokolov 友情提供。
本节介绍如何将 PocketPC 设备连接到 Linux 计算机。 "从 Linux 连接到 WinCE" 部分(也可在 CEwindows 找到)中提供的信息不适用于 PocketPC,因为 Microsoft 在他们难得的明智时刻,从 WinCE 3.0 版本中移除了对直接 IrDA 连接的支持。 我使用了文档 "Linux to Windows CE Connection"(可在 The Gadgeteer 找到)作为起点,但不得不修改和简化了几个方面。 本节将介绍 PocketPC 和 Linux 之间 ping 命令的使用。 您应该可以在 PDAcentral, CAM 或 WinCEcity 找到许多网络应用程序。
这是我使用的系统
配备 PocketPC 版本 3.0.9348 的 Compaq iPAQ(我不知道这是否适用于 PocketPC 2002,因为 Microsoft 喜欢在版本之间更改标准)。
在 Linux 端,是一台运行 Slackware Linux 7.1 的 Compaq LTE5250 笔记本电脑。
内核 2.4.19
PPP 2.4.1(当与内核 2.4.x 一起使用时,PPP 版本不得低于 2.4.0)
在 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] |
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 |
现在我们必须在 IrDA 端口上启用登录终端。 我为此目的使用了 agetty (或您喜欢的 getty 变体)。 将以下行添加到您的/etc/inittab:
s3:2345:respawn:/sbin/agetty ircomm0 115200 vt100 |
init 2; sleep 3 ; init 3 |
#!/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 |
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 |
LCP terminated by peer Modem hangup Connection terminated. Connect time 2.6 minutes. Sent 1336 bytes, received 1274 bytes. |
现在,如果一切进展不顺利,请检查以下内容
getty 已启动。 如果以下情况,它将不会启动/dev/ircomm0未配置。 也就是说,应该在调用 getty 之前出现 modprobe ircomm-tty。
“手动输入拨号命令”已选中。 PocketPC 不应尝试拨打任何号码!
您的内核中具有异步 PPP 支持。 modprobe ppp_async 加载成功,或者您的内核中没有编译 PPP 异步支持。 否则,您将收到“无法将 tty 设置为 PPP 规程:无效的参数”错误消息。
pppd 应该是 setuid root:chmod u+s /usr/sbin/pppd。