3.8. 从 Linux 连接到 WinCE 2.11

由 Linuxcare Inc. 的 Arthur Tyde 和 Bryan Abshier 提交

本文将告诉您如何通过 IrDA 从 WinCE 设备到基于 Linux 的笔记本电脑设置伪装的 PPP 连接。一旦您建立了 IP 连接,剩下的就取决于您了。我们将此指南整理出来,主要面向使用 Casio E-100/105 PDA 的 Sony 笔记本电脑用户,但该程序应该适用于任何具有红外功能的 WinCE 2.11 设备与任何笔记本电脑进行通信的情况。以 root 用户身份登录进行所有 Linux 端测试,标准警告适用。

配置 WinCE 为您的 WinCE 设备配置网络连接。进入“连接”,创建一个“直接连接”,并为其命名一个有意义的名称。对于设备,选择“红外端口”。进入设置,将波特率更改为 115200,这是 WinCE 的最大值。转到 TCP/IP 设置,并选中“使用服务器分配的 IP 地址”、“使用软件压缩”和“使用 IP 标头压缩”。确保“使用 SLIP”未选中。对于域名服务器,确保选中“使用服务器分配的地址”。转到“开始”,“设置”,“通讯”,“标识”,然后为设备名称输入一些内容(我使用了“cetoy”)。如果您已使用 Activesync 与 Win9x 桌面同步,则很可能已经设置了这些值。

配置 Linux/IrDA 在您的笔记本电脑上设置 IrDA 支持(在其他地方描述),并使其达到笔记本电脑将发现符合 IrDA 标准的设备的程度。一个好的迹象是,当您执行 ifconfig 时,irda0 设备将显示出来。它将没有 IP 地址,这没关系。

设置连接 通过将 IrDA 设备置于 IR 端口的范围内来测试发现,等待 5 秒钟,然后;

cat /proc/net/irda/discovery

例如,启用 IR 端口的 Ericsson I888 World Phone 应该立即显示类似这样的内容;

"name:I 888 WORLD   ,hint:0x9104,saddr:0x838470e5,daddr:0x152dceaa"
除非 WinCE 机器正在主动寻找连接,否则不会被发现。因此,如果您想使用 WinCE 进行测试,请放置您的设备并双击您在步骤 2 中创建的网络图标,您应该会看到类似这样的内容

"name:mytoy,hint:0x8204,saddr:0x838470e5,daddr:0x00000b72"
显示的名称将是您在“开始”,“设置”,“通讯”,“标识”中输入的设备名称的值。至此,在基本的 IrDA 功能正常的情况下,我们可以继续建立 WinCE 的 PPP 连接。这些脚本也可以用于串口线连接。创建以下文件并将它们复制到指示的目录中。

/usr/sbin/cebox.sh - 使其可执行

#!/bin/sh
pppd call cebox
由于 Microsoft 喜欢打破标准,因此您需要以下 chat 脚本。这将为 WinCE 提供它想要的正确的 ASCII 关键字,然后才允许 PPP 连接。

/etc/ppp/cebox.chat

TIMEOUT 3600
"CLIENT"    "CLIENT\c"
""      "SERVER\c"
以下文件将允许您指定 IP 地址、IR(或使用电缆时的串口)设备、DNS 等等。我不建议您更改下面的 192.IP 地址。WinCE 确实对 192.168.55.100 有偏爱,因为所有 MS 同步工具似乎都将其硬编码了。DNS 可以是您通常使用的任何内容。

/etc/ppp/peers/cebox

/dev/ircomm0 115200 crtscts
connect '/usr/sbin/chat -v -f /etc/ppp/cebox.chat'
noauth
local
192.168.55.101:192.168.55.100
ms-dns 10.2.0.1

测试连接 好的,现在您可以测试连接以确保一切正常。重启您的机器,运行 irattach /dev/ttyS2 -s(/dev/ttyS2 是您的 BIOS 将 IR 设备识别为的串口,如果 irattach 未运行,则启动它)对齐 IR 端口,在 Linux 命令提示符下键入 /usr/sbin/cebox.sh,并同时按回车键以启动 cebox 并双击 WinCE 中的连接图标。您应该会从 WinCE 收到一条快乐的消息,报告“正在连接到主机”、“设备已连接”、“正在验证用户”、“用户已验证”和最终的“已连接”。连接后您应该会看到类似这样的内容

irda0     Link encap:IrLAP  HWaddr 06:89:d0:58
      UP RUNNING NOARP  MTU:2048  Metric:1
      RX packets:246 errors:0 dropped:0 overruns:0 frame:0
      TX packets:251 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:8

ppp0      Link encap:Point-to-Point Protocol
      inet addr:192.168.55.101 P-t-P:192.168.55.100 Mask:255.255.255.255
      UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
      RX packets:10 errors:0 dropped:0 overruns:0 frame:0
      TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:10
以下脚本设置 IrDA,建立与 WinCE 的 ppp 连接,然后设置 IP 伪装。它作为如何将所有这些结合在一起的示例提供。这或多或少是一种手动方法。您可以发挥创意,在启动时启动 irattach,并在 inittab 中添加一行以不断查找 IR 端口上的 WinCE 连接。但是,这将耗尽您的电池电量并限制您访问其他 IR 小工具的能力。我只是使用下面的脚本。放置设备,运行 wince 并在脚本告诉您时启动 PDA 上的通讯。

/usr/local/bin/wince- 使其可执行

#!/usr/bin/perl
use strict;
#
# Enable IrDA, start ppp0 and set up WinCE masquerading
# A. Tyde - Linuxcare Inc.
#
print "\n-> Setting up IR infrastructure...\n";
system("killall irattach 2>/dev/null");
sleep 1;
system("/usr/sbin/cebox.sh");
print "   Start WinCE Serial or IR networking now!\n";
open(ECHO,">/proc/sys/net/ipv4/ip_forward") or die "Can not open /proc/sys/net/
ipv4/ip_forward";
print ECHO "1";
close (ECHO);
print "   Serving 192.168.55.100 to WinCE device...\n\n";
system("ipchains -F");
sleep 5;
system("ipchains -P forward DENY");
system("ipchains -A forward -s 192.168.55.100/32 -j MASQ");
exit 0;