irda-utils パッケージで提供されているコマンドは IrDA の接続を行うための基本となるツール群です。その他のツール (e-Squirt、IrNET など) はオプションです。 バージョン 0.9.15 からマニュアルページが収録されるようになっていますが、 TuxMobil - Software に置かれた私の man ページが最新版です。
Linux/IrDA プロジェクトの最新の irda-utils のソースを使ってください。 また、glibc ライブラリの使用をすすめます。現在のバージョンは ldd --version で知ることができます。 古い libc5 の使用はコンパイルエラーを引き起こしがちです。
tar xvzf irda-utils<VERSION> としてパッケージを展開してください。/usr/src ディレクトリ内でやることをすすめます。
make clean を実行してください (最初のコンパイルの際には必要ありません)。
make all を実行してバイナリを作成します。
make install を行います。 これで全コマンドが所定の位置に置かれ、/etc/irda に設定ファイルがインストールされます。
時として IrDA スタックや各種 IrDA パッケージをコンパイルする際に、コンパイラが IRLMP_HINT_MASK_SET や IRDAPROTO_ULTRA が定義されていないと言うエラーを吐く場合があります。 これはディストリビューションでのカーネルヘッダの扱いの不整合によるもので、もし 2.4.x カーネルソースがあるならば修正は簡単です。単に以下のようにしてカーネルの irda.h を include ディレクトリにコピーしてください。
cp /usr/src/linux/include/linux/irda.h /usr/include/linux
野首 貴嗣さんにより irda-utils の Debian パッケージが提供されています。 これは Debian 2.2 (potato) リリースに収録されています。Mandrake では 6.1 以降、RedHat では 6.1 以降、SuSE では 6.1 以降に irda-utils の RPM パッケージが収録されています。 コンパイル済みパッケージは、カーネルバージョンと使っているパッケージバージョンとの間の非互換性のための問題を起こす危険性が多少あります。
irattach はパラメータにモジュール群を指定します。 これは特定の FIR ドライバ (例えば irattach toshoboe) であることも、ircomm である (このあと "irda0" のエイリアスから /etc/modules.conf 中に記載されたモジュールをロードします) こともあります。
もしあなたがツイていて、使っている FIR チップセットがサポートされている場合、irattach を使う必要はなくなりました。単にドライバを modprobe するだけです。
赤外線通信で送受された全フレームを表示するためのプログラムです。
IrDA デバイスドライバをネットワークデバイスドライバとして実装することの利点の一つには、デバイス (あるいはパケットタイプ) に対してプロトコル解析ツール (sniffer) を接続できることがあげられます。 このおかげで、 tcpdump 相当の irdadump のような実に手軽なユーティリティが使えるようになり、 デバッグが断然容易になります。 Linux-2.2 では BPF (Berkeley Packet Filter) が実装されているので、見たいフレームだけをフィルタすることができます。
注意: irdadump コマンドを使う際には、通常 root になっている必要があります。CONFIG_PACKET をカーネルで有効にしておく必要もあります。 モジュールとしてコンパイルしている場合、モジュールを手動でロードする必要があるかもしれません。 irdadump はライブラリ化もされており、 GUI アプリケーションから使うこともできます。
以下に Linux と Palm III との間の短いセッションの出力例を示します。 このログではローカルの irobex レイヤが応答しないため、Palm III が disc フレームを送っています。
dagbnb /home/dagb/linux/irda-utils/irdadump/ # ./irdadump 20:18:15.305711 xid:cmd:saddr=0x05c589 > daddr=0xffffffff,S=6,s=0 20:18:15.385597 xid:cmd:saddr=0x05c589 > daddr=0xffffffff,S=6,s=1 20:18:15.465568 xid:cmd:saddr=0x05c589 > daddr=0xffffffff,S=6,s=2 20:18:15.545953 xid:cmd:saddr=0x05c589 > daddr=0xffffffff,S=6,s=3 20:18:15.625574 xid:cmd:saddr=0x05c589 > daddr=0xffffffff,S=6,s=4 20:18:15.705575 xid:cmd:saddr=0x05c589 > daddr=0xffffffff,S=6,s=5 20:18:15.785601 xid:cmd:saddr=0x05c589 > daddr=0xffffffff,S=6,s=255,info=Linux 20:18:18.075526 xid:cmd:saddr=0xb50c14b > daddr=0xffffffff,S=6,s=0 20:18:18.225498 xid:cmd:saddr=0xb50c14b > daddr=0xffffffff,S=6,s=1 20:18:18.375495 xid:cmd:saddr=0xb50c14b > daddr=0xffffffff,S=6,s=2 20:18:18.526355 xid:cmd:saddr=0xb50c14b > daddr=0xffffffff,S=6,s=3 20:18:18.675614 xid:cmd:saddr=0xb50c14b > daddr=0xffffffff,S=6,s=4 20:18:18.676364 xid:rsp:saddr=0x05c589 > daddr=0xb50c14b,S=6,s=4 20:18:18.765506 xid:cmd:saddr=0xb50c14b > daddr=0xffffffff,S=6,s=5 20:18:18.927221 xid:cmd:saddr=0xb50c14b > daddr=0xffffffff,S=6,s=255,info=Palm III 20:18:18.975796 snrm:cmd,ca=0xfe,pf=1 20:18:18.976534 ua:rsp,ca=0x58,pf=1 20:18:18.977145 ua:rsp,ca=0x58,pf=1 20:18:19.585627 rr:rsp,ca=0x58,nr=0,pf=1 20:18:19.585810 rr:rsp,ca=0x58,nr=0,pf=1 20:18:19.606413 i:cmd,ca=0x58,nr=0,ns=0,pf=1 20:18:19.606582 rr:rsp,ca=0x58,nr=1,pf=1 20:18:19.627708 rr:cmd,ca=0x58,nr=0,pf=1 20:18:19.627871 i:rsp,ca=0x58,nr=1,ns=0,pf=1 20:18:19.650571 disc:cmd,ca=0x58,pf=1 20:18:19.650736 ua:rsp,ca=0x58,pf=1 20:18:21.165524 xid:cmd:saddr=0xb50c14b > daddr=0xffffffff,S=6,s=0 20:18:21.315608 xid:cmd:saddr=0xb50c14b > daddr=0xffffffff,S=6,s=1 20:18:21.315793 xid:rsp:saddr=0x05c589 > daddr=0xb50c14b,S=6,s=1 20:18:21.395499 xid:cmd:saddr=0xb50c14b > daddr=0xffffffff,S=6,s=2 20:18:21.545516 xid:cmd:saddr=0xb50c14b > daddr=0xffffffff,S=6,s=3 20:18:21.695500 xid:cmd:saddr=0xb50c14b > daddr=0xffffffff,S=6,s=4 20:18:21.845840 xid:cmd:saddr=0xb50c14b > daddr=0xffffffff,S=6,s=5 20:18:22.007222 xid:cmd:saddr=0xb50c14b > daddr=0xffffffff,S=6,s=255,info=Palm III 20:18:22.056143 snrm:cmd,ca=0xfe,pf=1 20:18:22.056310 ua:rsp,ca=0xc8,pf=1 20:18:22.056381 ua:rsp,ca=0xc8,pf=1 37 pacckets received by filter |
IrDA テストフレームを用いてリモートデバイスに ping を試みることができます。 すべてのデバイスがテストフレームをサポートしているわけではありません。 これは ping (8) と同様のプログラムです。 このプログラムは、IrDA テストフレーム (およびフレーム番号とフレームを送った時間を含むユーザデータを加えています) を送ります。 -s オプションを用いてフレームのサイズを変更することもできます。 引数として IP アドレスではなく、IrDA デバイスアドレスを指定する必要があります。 このアドレスを得るには、irdadump を使う必要があります。
以下に出力例を示します (ACTiSYS IR-100M へ ping しています)。
dagbnb /home/dagb/linux/irda-utils/irdaping/ # ./irdaping 0xf7be8388 IrDA ping (0xf7be8388): 32 bytes 32 bytes from 0xf7be8388: irda_seq=0 time=102.466003 ms. 32 bytes from 0xf7be8388: irda_seq=1 time=102.202003 ms. 32 bytes from 0xf7be8388: irda_seq=2 time=102.170998 ms. 32 bytes from 0xf7be8388: irda_seq=3 time=101.633003 ms. 4 packets received by filter |
Christian Gennerat さんのメールから: 私は、パラメータを使っていない以下の alias を $HOME/.bashrc 中に定義して使っています。 alias irping="irdaping \`grep daddr /proc/net/irda/discovery|sed s/.*daddr://\`" これはクライアントが一つだけ見つかる場合には良好に動作します。
Tekram IR-660 赤外線ドッキングステーションで使用されているマウスとキーボードプロトコルをサポートした実装です。
あなたのマシンで使っている FIR IrDA チップセットが何であるか調べます。 findchip -v として調べてください。 これ以外のチップセットを検出する方法については以下を参照下さい。
IrDA ソケットを使うプログラムを集めたものです。
Psion PDA との間でファイルを遣り取りするファイル転送プログラムです。
設定ファイルで、SIR ドライバのシリアルポート情報を含みます。 最初の試行の際に SIR IrDA ドライバを設定する必要があるでしょう。
OpenOBEX プロジェクトで最終的に実現しようとしているのは、Object Exchange (OBEX) プロトコルのオープンソースの実装です。OBEX はセッションプロトコルで、バイナリの HTTP プロトコルとでも言うべきものです。 典型的なアプリケーションとして、PalmOS の Beam 機能が挙げられます。
e-Squirt は IrDA メディア上で URL を送るための単純なプロトコルです。 これにより CoolTown が有効なデバイスとの間でやりとりができます。
IrNET は 2 つの IrDA ピア間での TCP/IP 通信を効率よく行なえるようにするプロトコルです。 これは IrTTP ソケットで PPP パケットを受け渡しする軽いレイヤです。 効率を上げるため PPP を同期モードで利用しており、柔軟性に富み様々な機能を提供しています。 IrNET の主部はカーネル 2.4.x に含まれており、これと組み合わせて通信を行うユーザスペースデーモンは web ページから提供されています。
この Java Infrared Socket API は Java を使って Linux マシンと赤外線デバイスとの通信を行う手段を提供します。 これを用いることで Java のアプリケーション開発者は、赤外線通信を用いたアプリケーションをより容易に開発できます。 API は java.net.Socket API によく似たもので、Linux IrDA スタックを用いて実装されています。 コネクション指向ストリーム (IrSocket と IrServerSocket) と、 コネクションレスストリーム (UltraSocket と UltraPacket) の両方がサポートされています。