由 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" |
"name:mytoy,hint:0x8204,saddr:0x838470e5,daddr:0x00000b72" |
/usr/sbin/cebox.sh - 使其可执行
#!/bin/sh pppd call cebox |
/etc/ppp/cebox.chat
TIMEOUT 3600 "CLIENT" "CLIENT\c" "" "SERVER\c" |
/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 |
/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; |