4.7. PDA (Agenda, iPAQ, Yopy, Zaurus) での Linux/IrDA

現在もっともよく知られた Linux PDA は以下のものでしょう。

これらはすべて IrDA ポートを備えています。Linux PDA 向けの Linux ディストリビューションは幾つかあります。以下に例を示します。

以下で説明するソフトウェア IPK パッケージは Zaurus Software Index - ZSIipkgfind にあります。また TuxMobil は Linux と PDA を組み合わせて使う関連情報全般を扱っています。

以下は、私の SHARP の Zaurus SL-5500G (元の SHARP ROM イメージ 2.38G と kernel 2.4.6-rmk1-np2-embedix#1 での経験に基づくものですが、必要に応じて読み替えれば他の Linux PDA でも使えるかもしれません。Zaurus には、GUI (FileManager や、設定で) を用いてファイルを光で送ったり、PPP コネクションのやり方などを記載した、 印刷されたマニュアルが付属しています。 この文書で記載しているのは、コマンドラインから出来ることについてと、公式の SHARP のマニュアルにも、 Opie User Manual ででも触れられていない話題についてです。

赤外線機能は StrongARM SA1110 CPU 機能の一部のようで、IrDA ドライバモジュールは sa1110_ir という名前です (手元の Zaurus では IrDA サポートはカーネル組み込みになっているようです)。 irda-utils のうち、irattach のみ付属しています。IrDA サポートは irattach /dev/ttyS2 -s 1 を実行して組み込みます (注意: irattach の新版では "-s 1" は "-s" に置き換えられています)。 従って、どうやら SIR を使っているように見えます。FIR サポートに関する情報はまだありません。 irdadump 機能のサブセット機能、及び範囲内の他の IrDA デバイスを検出したり、IrDA をデバッグするには、 cat /proc/net/irda/discovery や、他の /proc ファイルシステム中のファイルが利用できます。 また、irda-utils を自分で ARM アーキテクチャ向けにコンパイルするのもいいですし、コンパイル済みのバイナリも提供されています。

デバイスファイルでは、/dev/ircomm のみ (/dev/ircomm0 でないことに注意してください) が、予め作成されています。modules.conf はありません。 irrecv で赤外線設定が開始できます。IrOBEX サポートはありますが、 OpenOBEX からの所定のツールはありません。それでも Palm PDA や携帯電話、他の Linux マシンや Microsoft-Windows マシンに GUI からファイルを送ることが出来ます。 IrDA 立ち上げスクリプトは /home/etc/rc.d/init.d/irda にあります。赤外線リモートコントロールサポートについては以下をご覧下さい。

他の Linux マシンで irdadump を実行した場合、Zaurus は以下のように認識されます (二行目を見てください)。

10:56:48.652982 xid:cmd b03cbbb9 > ffffffff S=6 s=5 (14)
10:56:48.652963 xid:rsp b03cbbb9 < b7960e8f S=6 s=4 localhost hint=8420 [ Computer IrOBEX ] (26)
10:56:48.742992 xid:cmd b03cbbb9 > ffffffff S=6 s=* japh hint=0400 [ Computer ] (20)
10:56:51.203002 xid:cmd b03cbbb9 > ffffffff S=6 s=0 (14)

4.7.1. PPP

PPP を使って、携帯電話や他のコンピュータとの間のネットワーク接続を行えます。 詳しいことは、 LINUX DOCUMENTATION PROJECT - LDP の PPP-HOWTO [1] を参考にしてください。NAT を用いた他の Linux マシン経由のフォワーディング関連は IPTABLES-Tutorial を参考にしてください。

pppd を、コマンドライン引数付きで実行して起動することも出来ますが、 設定ファイル /etc/ppp/peers/irda を作成する方がずっと便利だと思います。以下は最初のテストの例です。

connect /bin/true
noauth
persist
debug
kdebug 7
nodetach
115200
local
/dev/ircomm
192.168.0.2:192.168.0.3

Linux ラップトップにこれ以外の IrDA デバイスがあった場合、同じ PPP オプションで、最後のローカルとリモート IP アドレスを設定している部分だけ削除した同じ設定ファイルが使えます。 またデバイス名、つまり /dev/ircomm0 を正しく設定するよう注意してください。 以下のエントリはデバッグ目的で、全部うまく動くようになったら削除可能です。

persist
debug
kdebug 7
nodetach

両方のマシンで pppd call irda として、PPP を開始してください。 これを実行したターミナルウィンドウを開いたままにしておき、 以降の作業を別ウィンドウで行うと、デバッグに便利でしょう。ネットワーク接続を ifconfigping でチェックしましょう。 携帯電話との接続については、この文書の前の方にある関連の章を見てください。

4.7.2. ファイルを光で送る - OpenOBEX

OBEX の利点は統合化でしょう。OBEX 経由で予定を送れば、Zaurus はおそらく Palm 同様にそれを組み込みのカレンダに統合します。名刺も同様です。 IrOBEX プロトコルは、他の PDA、携帯電話やコンピュータに赤外線でファイルを送る簡単な手段を提供しています。 Linux 向けのツールは OpenOBEX から提供されています。二台の Zaurus PDA 間、および Palm PDA への GUI を使った転送はたぶん上手くいくと思います。但し、現在の所 Linux ラップトップとの間のファイルの送受信は出来ていません。 ircp FILE で一つのファイルを送ろうとするたびに、以下の irdadump メッセージが出ます。

11:11:03.943005 i:cmd  > ca=8a pf=1 nr=0 ns=0 LM slsap=12 dlsap=00 CONN_CMD (6)
11:11:03.972964 i:rsp  < ca=8a pf=1 nr=1 ns=0 LM slsap=00 dlsap=12 CONN_RSP (6)
11:11:03.973010 i:cmd  > ca=8a pf=1 nr=1 ns=1 LM slsap=12 dlsap=00 GET_VALUE_BY_CLASS: "OBEX:IrXfer" "IrDA:TinyTP:LsapSel" (37)
11:11:04.002973 i:rsp  < ca=8a pf=1 nr=2 ns=1 LM slsap=00 dlsap=12 GET_VALUE_BY_CLASS: No such class (11)
11:11:04.003015 i:cmd  > ca=8a pf=1 nr=2 ns=2 LM slsap=12 dlsap=00 DISC (6)

また、ircp -r として一つのファイルを受信しようとするたびに以下の irdadump メッセージが出ます。

11:15:08.682979 i:cmd  < ca=8a pf=1 nr=4 ns=5 LM slsap=53 dlsap=00 CONN_CMD (6)
11:15:08.683063 i:rsp  > ca=8a pf=1 nr=6 ns=4 LM slsap=00 dlsap=53 CONN_RSP (6)
11:15:08.712970 i:cmd  < ca=8a pf=1 nr=5 ns=6 LM slsap=53 dlsap=00 GET_VALUE_BY_CLASS: "OBEX" "IrDA:TinyTP:LsapSel" (30)
11:15:08.713035 i:rsp  > ca=8a pf=1 nr=7 ns=5 LM slsap=00 dlsap=53 GET_VALUE_BY_CLASS: No such class (11)
11:15:08.732976 i:cmd  < ca=8a pf=1 nr=6 ns=7 LM slsap=53 dlsap=00 DISC (6)

Jean Tourrilhes さんの解決案は「Zaurus は "OBEX:IrXfer" サービスをサポートしておらず、"OBEX" サービスのみのサポートなのでしょう。 cat /proc/net/irda/irias で検証できます。とすると、Zaurus で "OBEX:IrXfer" サービスを立ち上げる (ircp_server - を Zaurus 向けにクロスコンパイルする) か、ラップトップ側で "OBEX" を使ったクライアント (irobex_palm3) を使うかのどちらかでしょう。」

4.7.2.1. ツール

Beamster は特に Linux PDA との相互の IrDA 転送を助けるための小さな Gtk/python ユーティリティです (ftp://ftp.handhelds.org/pub/linux/dists/familiar/feeds/unstable/packages/armv4l/beamster-0.1.ipk). 。これは IrDA オブジェクト交換プロトコル (OBEX) をサポートした殆どのハンドヘルド/ラップトップ/プリンタとの間の通信が行えます。 実際、すでに OpenOBEX パッケージで動作しているデバイスはこのユーティリティで動作します。

また、これはかなり直感的にすぐ使えます。IrDA が 'On' になっていることを確認し、二つのデバイスを向き合わせ、 新しい通信路が確立されたことがステータスバーで表示されるまで待ち、 転送モード (PalmOS との間では 'Palm3'、それ以外では 'Windows') を指定し、 'beam' か 'receive' を押します。'receive' は押すたびにオンオフが切り替わります。

以下の IrDA デバイスでの送受を確認しています。

Flex,Memory を直接アクセスする ObexFTP の実装 flexmem があります。sersniff を使って S45 data explorer (Windows) セッションをパイプしてみたところ、ログは OBEX をケーブルを用いて使った場合と同様のものでした。実際、古い Open OBEX は Siemens S45 携帯電話との組み合わせで動作していましたし、Siemens S45/ME45 およびその派生の携帯電話で動作することの確認がとれています。Siemens 携帯機器の Flex Memory へのアクセスが IrDA またはシリアル接続経由でできます。

4.7.3. 印刷

IrDA をサポートしたプリンタに直接印刷するには、デバイスファイル /dev/irlpt0 が必要になります。これが無い場合、 mknod /dev/irlpt0 c 161 16 として作成してください。 cat FILE >/dev/irlpt0 として /dev/irlpt0 に小さなファイルを送ってみて下さい。 手元の、SHARP が作成したカーネルではこれは動きませんでしたが、 カーネルをカスタマイズした後は問題なく動くようになりました。 ここでの手順で、ファイルの形式がどうこうということは気にする必要はありません。 これは単に最初のチェックですから。 きれいな印刷結果を得るには、 LinuxPrinting.org の Printing-HOWTO の記述を参考にしてください。 Linux PDA からの印刷については、 Linux-Mobile-Guide の次の話題として、詳しい説明を近く公開する予定です。

4.7.4. リモートコントロール - LIRC

家電用 IR (以下 CIR) を赤外線ポートからリモートコントロールするには、 Linux PDA でカーネルに対応した lirc-modules-KERNEL と LIRC をインストールすれば可能です。 更に詳しくは、 HandHelds.org-WiKi と、Opie-Remote の各 Web ページをご覧下さい。Opie-Remote は Compaq iPAQ と SHARP Zaurus 向けのリモートコントロールエミュレータです。

4.7.5. QT Embedded での IrDA 向けプログラミング

SHARP Zaurus 開発者サイトには、 IrDA-HOWTO という、Zaurus の IrDA ポートの使い方を説明した文書が提供されています。 Werner Schulte さんのサイト、 iPAQ Help - iPAQ and Zaurus development using QPE には、Qtopia アプリケーション開発についての全般的なことがらが記載されています。

4.7.6. キーボードとスキャナ

iPAQ 向けには、MicroInnovations 社の赤外線キーボードに対応した h3600_microkbd モジュールがあります。 ある種の赤外線でデータを読む光学式バーコードリーダもあるようですが、これは IrDA や CIR とは無関係だと思います。

Zaurus の外部赤外線キーボードは IRK で利用できます。 これは、Qtopia 環境で LIRC とのインターフェースを行う物です。 現在、Chicony KB-9820 (独語バージョン) のみサポートされています。

Notes

[1]

訳注: JF に訳があります