2.2. カーネル

2.2.1. はじめに

まず、Kernel-HOWTO を読んでコンパイル手順についての情報を得ておいてください。 また、Linux/IrDA Project、 および Linux/IrDA メーリングリストアーカイブを調べて最新のパッチを入手してください。

IrDA のカーネルコードは

/usr/src/linux/net/irda (protocol 関連)

/usr/src/linux/drivers/net/irda (デバイスドライバ)

/usr/src/linux/include/net/irda (ヘッダファイル)

の各場所にあります。

2.2.2. 一般的なパラメータ

カーネル 2.4.x ソースを使っているか確認してください。 カーネルのバージョンがはっきりしないなら uname -r コマンドを使ってください。

Linux/IrDA プロジェクトから最新のカーネルパッチを入手してください。 または Alan Cox 氏のカーネルシリーズを使ってください。これを /usr/src か、カーネルソースの普段の場所に置きます。 このとき、以下の patch-2_2.0-irdaXXX を実際のファイル名に読み替えてください。

cd /usr/src
tar xvzf patch-2_2.0-irdaXXX.tar.gz
cd linux
patch -p1 -l < ../patch-2_2.0-irdaXXX

最新のドライバでは、カーネルの実験的機能のサポート (CONFIG_EXPERIMENTAL) を有効にする必要があるでしょう [1]

"General Setup" の項で、sysctl を CONFIG_SYSCTL で有効にします。

CONFIG_PROC_FS で proc ファイルシステムサポートを有効にしましょう。

CONFIG_SERIAL で SIR 機能のシリアルサポートを有効にします。

Linux/IrDA でプリンタを使う際に CONFIG_PRINTER を有効にする必要があるかどうかについては、私はよく知りません。多分不要ではないかと思います。

CONFIG_NET によるネットワークサポートは必須です。

モジュールサポートの CONFIG_MODULES をカーネルに含めるよう確認してください。 lsmodを用いるなどしてテストしておいてください。

CONFIG_KERNELD で kerneld のサポートを含めてください。但し、これについては kmod (CONFIG_KMOD) でも動作します。モジュールではなく全部組み込むようにしても動くようですが、モジュールを使うことを強く強くお勧めします。

irdadump を使うには、おそらく CONFIG_PACKET を有効にする必要があるでしょう。

Linux/IrDA パッチを当てただけの修正ですむなら、多分 make clean を行う必要はなく、多少時間の節約になります。以下のようにすることがお勧めです。

make dep && make all && make modules && make install && make modules_install

これで変なエラーが出るようなら、make clean を行って最初から作成し直してください。

2.2.3. IrDA 固有のパラメータ

以下は ../linux-2.4.3/Documentation/Configure.help から少々手を加えて引いてきたものです。 現状と新しいドライバについては最新のカーネル文書に当たってください [2]

2.2.3.1. IrDA subsystem support (IrDA サブシステムサポート)

IrDA Cache last LSAP (IrDA で最終 LSAP をキャッシュする)

CONFIG_IRDA_CACHE_LAST_LSAP

IrLMP で最後に使った LSAP をキャッシュしておきたいなら、 ここで Y と答えてください。これは、ほとんどのフレーム が同じ接続で送信/受信されるようになるので、意味があります。 このオプションを有効にすると一フレーム当り一回の ハッシュ検索の実行を節約できます。

よくわからなければ Y と答えてください。

IrDA Fast RR's (IrDA 高速 RR)

CONFIG_IRDA_FAST_RR

第一ステーションとして稼働させるとき、IrLAP に高速 RR (受信準備) フレームを送るようにさせたいならここで Y と答えてください。 このオプションを有効にすると、フレームの受信後送信キューが空なら ただちに IrLAP が RR フレームを送信するようになります。 こうすることで第二ステーションは、大量のデータを受信するとき、 次回の送信を許可する前に、最大の turn around time まで待つ必要がなくなり、 速度が大きく向上します。 第二ステーションの送信キューも空なら、第一ステーションは、タイムアウトが 通常値に達するまで RR フレームを送信するために長時間待つ 処理をやめます。このオプションを有効にすると、IR ダイオードの電力消費が増え、その結果バッテリの寿命が縮まります。

よくわからなければ N と答えてください。

IrDA デバッグ

CONFIG_IRDA_DEBUG

IrDA サブシステムが syslog にデバッグ情報を書き込むようにしたいなら、 ここで Y と答えてください。デバッグ・レベルは /proc/sys/net/irda/debug で変更できます。

よくわからなければ (バグをみつけるのが容易になるので) Y と答えてください。

IrLAP 圧縮サポート

CONFIG_IRDA_COMPRESSION

圧縮は IrDA (tm) プロトコルの仕様の一部では*ありません* が、でもすばらしくうまく動いています。 Linux が初めて IrLAP 層での圧縮のサポートを試みました。したがって Linux <-> Linux 間で通信する場合に限り、圧縮による利益を受ける ことができます。

ここで Y とした場合は、以下の圧縮プロトコルのところでも Y または M とする必要があります。

IrLAP Deflate 圧縮プロトコル (試験的)

CONFIG_IRDA_DEFLATE

Deflate 圧縮プロトコルを有効にしたければ、ここで Y と答え てください。 deflate 圧縮 (GZIP) は PPP プロトコルで使われ ている方法と全く同じものです。

モジュールとしてコンパイルしたければ、ここでは M と答え、 Documentation/modules.txt を読んでください。モジュールの 名前は irda_deflate.o になります。

IrLAN プロトコル

CONFIG_IRLAN

現在、Linux/IrDA コアチームは IrLAN プロトコルサポートのメンテナンスをもう行っていません。

IrLAN プロトコルを有効にしたいなら、ここで Y と答えてください。 モジュール (irlan.o) としてコンパイルしたいなら、ここで M と答え、Documentation/modules.txt をお読みください。 IrLAN は Ethernet をエミュレートし、赤外線を用いた無線 LAN を提供できるようになります。

IrLAN プロトコルは HP 製 NetbeamIR や ESI 製 JetEye NET の 赤外線アクセスポイントと通信できます。LrLAN を使用した他の Linux マシンと接続してお手軽なネットワーキングもできます。

IrCOMM プロトコル

CONFIG_IRCOMM

IrCOMM プロトコルを有効にしたいなら、ここで Y と答えてください。 モジュールとしてコンパイルしたいなら、ここで M と答え、 Documentation/modules.txt をお読みください (ircomm.o と ircomm-tty.o がモジュールです)。IrCOMM はシリアルポート ・エミュレーションを実装しており、TTY を認識する既存の 全アプリケーションを赤外線リンク経由で使用可能になります。従って PPP、minicom などの TTY を用いるアプリケーションを利用できるようになります。 このオプションを有効にするとircomm と ircomm_tty と呼ばれるふたつのモジュールが生成されます。

2.2.3.2. デバイスドライバ

2.2.4. 現在のカーネルパッチ

注記: donauboetoshoboe の新版で、FIR サポートが改良され、Donauoboe チップ (lib-irda 参照) との互換性が向上しています。

USB ドングルパッチについては Linux/IrDA メーリングリストアーカイブを調べてください。

Notes

[1]

訳注: 2.4.17 あたりではほぼ統合が済んでいるそうです。

[2]

訳注: 混乱を避けるため、2001/12/13 付けのカーネルの Configure.help 日本語訳の訳文を元に用いました。 ただし、他と口調をあわせるためかなり手を入れています。

[3]

訳注: Berkin ドングルには新旧有り、旧のみサポートと以前のカーネル Configure.help にはある。外見で見分けはつかず、ばらしてみる必要ある由。