3.1. IrDA スタックを使ってみる

低レベルドライバには、SIR、ドングルと FIR の三つのカテゴリがあります。 正しいドライバが選択されているなら、以降の各節で記載されているメッセージが出力されます。

3.1.1. SIR

3.1.2. ドングル接続 - シリアルポート用の赤外線アダプタ

現在サポートされているドングルは、Extended Systems 社の ESI-9680 JetEye、Tekram 社の IRmate 210B、ACTiSYS 社の IR220L and 220L+、 Greenwich 社の GIrBIL ドングルです。

Dag Brattli さんによると (原注: 私が多少修正していますが)

「ドングルを使うには以下のようにしてください。
modprobe tekram         # or esi or actisys
irattach -d tekram      # or -d esi or -d actisys

modprobe/etc/modules.conf が正しければ必要ありません。ご覧のとおり、irattach には -d オプションを付けなければいけません。 これは同時に2つのシリアルポートに別々のドングルがついている場合があり、そのような場合には tty でバインドしたいドングルがどちらなのかを知らせなければならないためです。 もし2つのシリアルポートで2つのドングルを使っているなら、以下のようにしてみて下さい。

modprobe tekram
modprobe esi
irattach /dev/ttyS0 -d esi &
irattach /dev/ttyS1 -d tekram &

追記: 以下の二つのドングルを切り変えて使おうとしたことがないので、 その場合スタックがどういう風に振る舞うか実のところは分かりません :-) …… また、現在のところ ACTiSYS 社の新ドングル 220L+ を持っていないので、テストもできないのです。 新ドングルは、通信速度として 38400bps を追加でサポートしていますので、 irattach を使ってカーネルに使っているドングルの違い (と使用できる QoS) を指定してやる必要があります。

irattach /dev/ttyS0 -d actisys     # for the 220L dongle
irattach /dev/ttyS0 -d actisys+    # for the 220L+ dongle

現在のドングルサポートの実装では、内部に個々のドングルに対応した状態を持ってはいないので、ACTiSYS のいずれのドングル (220L と 220L+) も二個を同時に (2つのシリアルポートに接続して) 使うことはできません。そうする必要がある方がおられるなら私 (Dag Brattli) まで連絡下さい。この件を再考してみますので」

注記: 赤外線モデム (Swissmod 56Ki。Telelink AG 製) をラップトップ (Window$ 95 でしか動作しないような、標準でない IrDA ハードウェア付きのもの) に接続して使う際には、動作させるために BIOS から赤外線サポートを削除する必要がありました。

Dag Brattli さんによると「現在 irtty に代えて irport が使えます。また、irtty コマンドからドングル関係の処理を全部 irda_device へ移しましたので、irport にドングルを接続できるようになっています。 但し、小さなユーザ空間ユーティリティ dongle_attach を使って特定のドライバのハードウェアとして指定する必要があります。 また、irattach は以前と同じように動作しますので、 irtty にドングルを接続する際に新旧の違いに気がつくことはないでしょう (ドングルへの ioctl は irda_device に転送するようにしました)。irport はソフトウェア割り込みレベルを一段省略できること、それと強制的に半二重動作になるため、エコーキャンセレーション機能のないドングル (HP-4000 の girbil ドングルなど) でエコーに煩わされることがないこと、の2つの利点があるため役に立つかもしれません。 irport を使うためには modprobemodprobe irport io=0x3f8 irq=4 (値はあなたの環境に合わせてください) 等としてパラメータを与えてやる必要があります。 このパラメータは /etc/conf.modulesoptions irport io=0x3f8 irq=4 のように書くことで明示的に与えることもできますが、その場合 depmod -a を忘れずに実行して、単に modprobe ではなく modprobe irport を実行してください」

Alvin Loh さんによると「ESI 9680C のユーザは parallax と ESI の各信号処理方式のどちらも使うことができます。 つまり ESI 9680C を動かすのに Parallax のドライバを使うことができます」

3.1.3. ドングル接続 - 赤外線マザーボードアダプタ

ACTiSYS IR2000 ドングルのサポートは pc87108 サポート中に組み込まれていますので、カーネルに組み込むか modprobe pc87108 としてモジュールを組み込むか、/etc/irda/driversmodprobe pc87108 を追加して組み込むかです (だと思います)。

James さんからハードウェア設定に関する説明を受け取りました。 「二種類のハードウェアがあります。5pin の一列のヘッダを使ったものと、18pin 二列ヘッダの端を使った 6pin 二列のヘッダで IrDA に接続するものです。 基本的にはどの IrDA 互換なトランシーバも動作します (製造中止になった古い IRM3001 を一山持っています) が、5V と 0V 間にコンデンサ (1uF 位のタンタルを使ってください [1]) を接続して、その他の信号 (RX->RX、TX->TX、5V->5V および 0V-0V) を接続してください。 ハンダ付けをしたくないということなら、ケースの穴にあう 5pin の コネクタつきの IR モジュールを売っているメーカはたくさんあります」

3.1.4. 高速赤外線通信 (FIR)

IrDA 標準では、三種類の転送速度が定義されています。

115,200bps (SIR) までは、多くの (多分すべての) 赤外線コントローラは、シリアルポートとして (カーネルからは) 動作し、RZI (Return to zero になるよう反転する) 変調を用いています。 すべての赤外線コントローラが 4Mbps(FIR) をサポートしているわけではありませんが、4Mbps までは 4PPM (4 パルス符号化) 変調方式を用いています。 現在二種類の FIR チップがサポートされています。ナショナルセミコンダクター社の NS PC87108 チップ (IBM Thinkpad 560X で使用) と、Winbond 社の W83977AF (IR) FIR チップ (Corel の Netwinder PC で使用) です。 対応するモジュールを読み込むことで FIR サービスをスタートすることができます。 Linux/IrDA はモジュール読み込みの時点でハードウェアを調べます。 他にもドライバの開発が行われています。

というわけで、どの速度で使いたいのかはっきりさせる必要があります。 SIR を使った場合、大体 10 kByte/s 程度の速度が得られます。FIR (4Mbps) なら、運が良ければ 300 Kbyte/s 以上まで出せます。

Notes

[1]

訳注: 2002 年現在ではむしろ 1uF 程度の積層セラミックのほうが、大きさ、入手、安全性のどれをとっても断然お勧めです。