Linuxcare 社の Arthur Tyde、Bryan Abshier 両名の投稿です。
これは WinCE 機の IrDA ポートを使ってマスカレードされた PPP 接続を Linux ベースのノート PC との間で行う方法について書いたものです。 一旦 IP 接続ができてしまえば、あとはどうとでもなるでしょう。 私たちはこれを Sony のノートブックと Casio の E-100/105 PDA を使うユーザのためのガイドとしてまとめましたが、この手順はノートブックとの間で赤外線通信可能な WinCE 2.11 デバイスならどれでも有効なはずです。Linux 側のテストはすべて root 権限で行ってください。また標準の警告、つまり無保証が適用されます。
WinCE デバイスでネットワーク接続の設定を行ってください。"Connection" のメニューに行って "Direct Connection" を作り、何か意味のある名前を付けます。 デバイスには "Infrared Port" を選びます。 設定のメニューに行ってボーレートを 115200 に設定します。これは WinCE での最大値です。TCP/IP 設定に行って、"サーバから与えられた IP アドレスを使う"、"ソフトウェア圧縮を使う" および "IP ヘッダ圧縮を使う" にチェックを入れてください。 "SLIP を使う" にチェックが入っていないことを確認してください。 Name サーバの設定では、"サーバから与えられた IP アドレスを使う" にチェックを入れてください。 Start、Setting、Communications、Identification でデバイス名として名前を入力します (私は "cetoy" と入れました)。 Activesynch を使って Win9x デスクトップとの間でファイル同期を行っていたなら、ここは既に設定されていると思います。
ノートブック PC 側の IrDA サポートを設定し (この文書の他の項を見てください) ノートブックが IrDA 互換なデバイスを見つけられるところまで持ってきます。 ifconfig を実行した際に irda0 デバイスが表示される、というのがよい目安です。 IP アドレスはありませんが、それで OK です。
IR ポートの通信可能範囲内に IrDA デバイスをおいてディスカバリ機能をテストします。五秒待ち、
cat /proc/net/irda/discovery とします。
例えば、Ericsson I888 World Phone で IR ポートが有効としている場合、直ぐに以下のようなメッセージが現れるはずです。
"name:I 888 WORLD ,hint:0x9104,saddr:0x838470e5,daddr:0x152dceaa" |
"name:mytoy,hint:0x8204,saddr:0x838470e5,daddr:0x00000b72" |
#!/bin/sh pppd call cebox |
TIMEOUT 3600 "CLIENT" "CLIENT\c" "" "SERVER\c" |
/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 1" (ここで /dev/ttyS2 はあなたのマシンの BIOS が赤外線ポートだと認識しているシリアルポートです。 もし、この時点で irattach が走っていなければ、ここで開始します) を実行します。赤外線ポートが対向になるよう位置を調整し、Linux 側でコマンドプロンプトから /usr/sbin/cebox.sh と打ち、同時に CE マシンをスタートして WinCE のコネクションアイコンをダブルタップします。 WinCE マシン上で幸福のメッセージが、ホストと接続された→ デバイスが接続された→ユーザの認証が行われている→ ユーザが認証された→接続された、の順に現れるはずです。 また、接続がうまくいっているなら、Linux 側では以下のようなメッセージが見られるはずです。
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/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; |