Linux Infrared HOWTO

Werner Heuser

JF Project - 日本語訳

JF@linux.or.jp

Linux Mobile Edition Edition

Version 3.4b

TuxMobil

Berlin

Copyright (C) 2000, 2001, 2002 by Werner Heuser

v3.4b, 2002-09-04(2004-12-12-jp)

この Infrared-HOWTO (旧 IR-HOWTO) では Linux での赤外線通信デバイスにつ
いて紹介し、あわせて Linux/IrDA プロジェクトで開発されているソフトウェ
アの使い方を説明します。このプロジェクトのパッケージは IrDA(TM) 準拠の
標準を用いています。 IrDA(TM) は赤外線を用いたワイアレス通信の工業標準
であり、1996 年 1 月以降に出荷の殆どのラップトップ PC には IrDA(TM) 準
拠のトランシーバが搭載されています。この赤外線ポートを用いてプリンタ、
モデム、ファックス、LAN や他のラップトップ PC と通信することができます
。 IrDA(TM)が対応する通信速度は 2400bps から 4Mbps までです。

Linux/IrDA スタックは IrLAP、IrLMP、IrIAS、IrIAP、IrLPT、IrCOMM、IrOBEX
および IrLAN をサポートしています。幾つかのプロトコルは、クライアントと
サーバ両方をサポートするよう実装されています。また複数 IrDA(TM) デバイ
スを用いた同時に複数の IrLAP コネクションを張る機能もサポートされていま
す。 Linux/IrDA プロジェクトは 1997 年末に開始され、現時点ではまだ試験
的実装ですので、すべての機能があっさり動くとは期待しないでください。私
の知る限り Linux/IrDA は現時点で存在する唯一の IrDA のオープンソースな
実装です。

赤外線によるリモートコントロールは、Linux Infrared Remote Control -
LIRC プロジェクトで扱われていますが、それについてもこのHOWTOで解説して
います。

Copyright (c) 2000-2002 Werner Heuser.

For all chapters permission is granted to copy, distribute and/or
modify this document under the terms of the GNU Free Documentation
License, Version 1.1 or any later version published by the Free
Software Foundation; with the Invariant Sections being "Preface" and
"Credits", with the Front-Cover Texts being "Linux Infrared HOWTO", and
with the Back-Cover Texts being the section "About the Document and the
Author". A copy of the license is included in the section entitled "GNU
Free Documentation License". 

本文書のどの章も複製、配布および変更が GNU Free Documentation License
バージョン 1.1 以降の規定に従う範囲で許諾されます。GNU GNU Free
Documentation License は Free Software Foundation により発行されていま
す。本文書の不変部は「Preface」と「Credits」であり、表紙テキストは “
Linux Infrared HOWTO” で、裏表紙テキストは “About the Document and
the Author” です。ライセンスの写しが “GNU Free Documentation License
” に収録されています。

TRANSLATION Copyright (c) 2002, Seiji Kaneko

翻訳配布条件は、原著作物の配布条件と同じとします。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Table of Contents
Preface
   
    1. この文書と著者について
    2. この文書の現在の状態
   
I. IrDA
   
    1. Linux/IrDA プロジェクトについて
    2. ここからはじめよう
    3. IrDA 接続の詳細 - プロトコル
    4. Linux/IrDA でサポートされているハードウェア
    5. より高度な話題
   
II. 赤外線リモートコントロール
   
    6. はじめに
    7. Linux Infrared Remote Control (Linux 赤外線リモートコントロール)
        - LIRC
    8. Lego マインドストーム
    9. シリアル赤外線コントローラ
    10. COREL Netwinder PC 用の赤外線ツール
    11. ir
    12. irmctl
    13. IRManager
    14. irXxD
    15. XR3
    16. IR File Chooser (赤外線ファイル選択機)
    17. IControl
    18. jlirc
    19. lircemu
    20. tonto
    21. 赤外線リモートコントローラと IrDA
   
III. 付録
   
    A. Credits (謝辞)
    B. 版の履歴
    C. シリアル赤外線ポートスニファ
    D. 赤外光源と目の安全について
    E. 著作権、免責、商標
   
List of Figures
5-1. IrDA スタック

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Preface

1. この文書と著者について

この節は Invariant なので、原文、訳の順に示します。

                                    Better red, than dead. 【訳注: 共産
                                    主義者であるよりは死んだ方がまし、 
                                    の混ぜっ返し。red は赤外線に通じる 
                                    ので、dead は外と全く通信不能、の洒
                                    落。】                             
                                                                       
                                      Unknown AuthorEss (作者不詳 (Karl
                                                          Jasper?)) [1]

This document is based on the How to use part of the Linux/IrDA project
homepage <http://irda.sourceforge.net> and the Linux/IrDA Tutorial
<http://www.hpl.hp.com/personal/Jean_Tourrilhes/IrDA/index.html> by
Jean Tourillhes. I have also included material provided by the Linux/
IrDA core team, the Linux/IrDA mailing lists and other sources.

The document is included in the LINUX DOCUMENTATION PROJECT - LDP
<http://www.tlpd.org> .

The latest version of this document is available at TuxMobil-HOWTOs
<http://tuxmobil.org/howtos.html>. You may find my Linux-Mobile-Guide
(the former Laptop-HOWTO), the Linux-Ecology-HOWTO and the
Linux-Medicine-HOWTO there also.

Mathieu Arnold provides an earlier version of the IR-HOWTO in French
<http://www.mat.cc/>. A Japanese translation of issue v3.3 is provided
by the Linux Japanese FAQ Project <http://www.linux.or.jp/JF> .

Please feel free to contact me for comments or questions about the
HOWTO. I know this material is not finished or perfect, but I hope you
find it useful anyway. For other questions and current information
about Linux/IrDA please ask in the Linux/IrDA mailing list as explained
below.

【訳】

この文書は How to use part of the Linux/IrDA project homepage <http://
irda.sourceforge.net> および Jean Tourillhes さんの Linux/IrDA Tutorial
<http://www.hpl.hp.com/personal/Jean_Tourrilhes/IrDA/index.html> を元に
しています。これに加えて Linux/IrDA コアチーム、Linux/IrDA メーリングリ
スト他からの材料も取り入れています。

この文書は LINUX DOCUMENTATION PROJECT - LDP <http://www.tlpd.org> に収
録されています。

この文書の最新版は TuxMobil-HOWTOs <http://tuxmobil.org/howtos.html> に
あります。ここには同著者の Linux-Mobile-Guide (旧 Laptop-HOWTO)、
Linux-Ecology-HOWTO と the Linux-Medicine-HOWTO もあります。

Mathieu Arnold さんが以前の版の仏語訳を IR-HOWTO in French <http://
www.mat.cc/> で公開しています。 v3.4 の日本語版が Linux Japanese FAQ
Project <http://www.linux.or.jp/JF> で提供されています。

この HOWTO に関して意見や質問があれば、気軽に私に連絡してください。この
文書は完成したものでも完全なものでもないことは分かっていますが、それで
もさらに役に立つ物にしていきたいと思っているからです。 Linux/IrDA につ
いてその他の質問や、現時点での情報については以下で説明する Linux/IrDA
メーリングリストにお願いします。

<Werner Heuser> <mailto:wehe_at_tuxmobil.org>

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2. この文書の現在の状態

ここで用いている最新のカーネルは 2.4.19 で、irda の最新版は 0.9.15 です
。すべての情報をチェックするよう努力していますが、必要なすべての赤外線
ハードウェアを持っているわけではないので、動かないものを見つけたとして
もご寛恕下さい。

┌──────────────────────────────────┐
│                              Warning                               │
├──────────────────────────────────┤
│古いバージョンのカーネルと irda-utils の組み合わせでは全く別のセット│
│アップが必要です。以前のバージョンを使うことは推奨しませんし、そのよ│
│うなセットアップに関する言及はこの文書から削除されています。コード履│
│歴の章に多少のヒントが見つけられるでしょう。                        │
└──────────────────────────────────┘

この文書には 2.4.x カーネルシリーズと、最新の Linux/IrDA 開発に同期した
修正が足し込まれました。このため多少のテストや、一部の査読はまだなされ
ていません。以下の記載のとおりにすればすんなり動く、とは期待しないでく
ださい。

I. IrDA

Table of Contents
1. Linux/IrDA プロジェクトについて
   
    1.1. プロジェクトの歴史
    1.2. コード履歴
   
2. ここからはじめよう
   
    2.1. ソフトウェア
    2.2. カーネル
    2.3. カーネルモジュールオプション
    2.4. 設定について
   
3. IrDA 接続の詳細 - プロトコル
   
    3.1. IrDA スタックを使ってみる
    3.2. プリンタ接続
    3.3. LAN 接続 - IrLAN
    3.4. HP NetBeamer との接続
    3.5. Palm III コネクション - IrCOMM
    3.6. Palm (Handspring Visor) 用 IR 経由 Linux ターミナル
    3.7. Psion 5 との接続
    3.8. Linux と WinCE を接続する
    3.9. Linux と WinCE 3.0 (PocketPC) をつなぐ
    3.10. 携帯電話接続
    3.11. デジタルカメラ接続
    3.12. Microsoft-Windows と Linux/IrDA
    3.13. Linux と Linux の接続
    3.14. 複数デバイスの同時使用
    3.15. ドッキングステーションとの接続
    3.16. キーボード接続
    3.17. シリアルケーブルを使った接続
    3.18. ヌルモデムケーブル接続
    3.19. ピアツーピア接続 / 直接モード
    3.20. 東芝のノートブックでの Linux/IrDA
    3.21. デスクトップコンピュータでの IrDA カード
   
4. Linux/IrDA でサポートされているハードウェア
   
    4.1. ラップトップ機の IR ポートの情報を得るには
    4.2. ハードウェアサーベィ
    4.3. ビッグエンディアン
    4.4. SMP
    4.5. IrDA ハードウェア
    4.6. IrDA と USB
    4.7. PDA (Agenda, iPAQ, Yopy, Zaurus) での Linux/IrDA
   
5. より高度な話題
   
    5.1. トラブルシューティング
    5.2. メーリングリスト
    5.3. GUI (グラフィカルユーザインターフェース): Gnome, KDE
    5.4. 赤外線光源を見えるようにする
    5.5. 節電について
    5.6. IrDA 仕様を超えて
    5.7. IrDA ネットワークの隣人たち
    5.8. Linux/IrDA と APM
    5.9. 性能テスト
    5.10. IrDA プロトコル
    5.11. 知られているバグ
    5.12. FAQ
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 1. Linux/IrDA プロジェクトについて

1.1. プロジェクトの歴史

このプロジェクトは Linux/IrDA の名で 1997 年末に開始されました。IrDA と
いう名称は Infrared Data Association (IrDA) の商標であるため問題となり
、名称が Linux/IR に変更されました。 1998 年末にプロジェクトと Infrared
Data Association の関係は改善され、再度名称が Linux/IrDA に変更されまし
た。1999 年 2 月より、プロジェクトは IrDA の正式メンバになっています。

この開発への参加に興味がある会社または開発者は、Linux/IrDA プロジェクト
か私 <wehe_at_tuxmobil.org> まで連絡してください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

1.2. コード履歴

Linux/IrDA ではプログラムコードに変更を加えていましたので、古い文書を用
いた場合の混乱を避けるため、以下のことを知っておく必要があります。いず
れにせよ古い文書は使うべきではないのですが。

2.0.x カーネルでは Linux/IrDA サポートは全く別の方式 (ユーザ側だけのプ
ログラム) を採用していましたが、これはもう Linux/IrDA プロジェクトでは
サポートされていません。2.1.131 以降、及び 2.2.0 以降では Linux/IrDA サ
ポートは標準カーネルの一部になっています。

┌──────────────────────────────────┐
│                              Warning                               │
├──────────────────────────────────┤
│本文書での警告の一部は、以下のパラメータに関連した変更が原因になって│
│います。現時点では正しく直せていると思ってはいますが、私もこれらに時│
│々悩まされました。この新形式のものは 2.2.15/2.4.0 以降で動作します。│
│いつも最新のカーネルと、irda-util とドキュメントを使うべきです。    │
└──────────────────────────────────┘

 

 ・ irda デバイスのメジャー番号が 61 から 161 に変更されています (記憶
    によると、60 付近も使われていたことがありました)。これ以外の、既に
    使わなくなっているマイナーデバイス番号も存在していましたので、以降
    の章で記載の現在のデバイス番号表を参照するようにしてください。
   
 ・ irmanager は廃止になりました。この機能は irattach で実現するように
    なっています。
   
 ・ モジュール名 /dev/ircomm_tty は /dev/ircomm-tty に変更になっていま
    す。但し、他のモジュールでは名前に "-" と "_" が使われているものが
    混在していますので、これは混乱しやすい変更です。
   
 ・ デバイス名 /dev/irnine と /dev/ircomm_new は廃止になりました。
   
 ・ IrLPT は現在は IrCOMM で処理されます。このため、 irlpt_server を参
    照する処理は廃止になりました。
   
 ・ irda-utils 0.9.15 以降では、irattach の -s の挙動が変更になりました
    。このオプションは、パラメータ 1 と共には使えなくなりました。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 2. ここからはじめよう

2.1. ソフトウェア

irda-utils パッケージで提供されているコマンドは IrDA の接続を行うための
基本となるツール群です。その他のツール (e-Squirt、IrNET など) はオプシ
ョンです。バージョン 0.9.15 からマニュアルページが収録されるようになっ
ていますが、 TuxMobil - Software <http://tuxmobil.org/software/irda/>
に置かれた私の man ページが最新版です。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.1.1. IrDA ユーティリティ (irda-utils)

2.1.1.1. コンパイル

 

 ・ 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
   
 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.1.1.2. コンパイル済みパッケージ

野首貴嗣さんにより irda-utils の Debian パッケージが提供されています。
これは Debian 2.2 (potato) リリースに収録されています。Mandrake では
6.1 以降、RedHat では 6.1 以降、SuSE では 6.1 以降に irda-utils の RPM
パッケージが収録されています。コンパイル済みパッケージは、カーネルバー
ジョンと使っているパッケージバージョンとの間の非互換性のための問題を起
こす危険性が多少あります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.1.1.3. Linux/IrDA-Utils の各プログラム

2.1.1.3.1. irattach

irattach はパラメータにモジュール群を指定します。これは特定の FIR ドラ
イバ (例えば irattach toshoboe) であることも、ircomm である (このあと
"irda0" のエイリアスから /etc/modules.conf 中に記載されたモジュールをロ
ードします) こともあります。

もしあなたがツイていて、使っている FIR チップセットがサポートされている
場合、irattach を使う必要はなくなりました。単にドライバを modprobe する
だけです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.1.1.3.2. irdadump

赤外線通信で送受された全フレームを表示するためのプログラムです。

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                                                     

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.1.1.3.3. irdaping

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://\`" こ
れはクライアントが一つだけ見つかる場合には良好に動作します。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.1.1.3.4. irkbd

Tekram IR-660 赤外線ドッキングステーションで使用されているマウスとキー
ボードプロトコルをサポートした実装です。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.1.1.3.5. findchip

あなたのマシンで使っている FIR IrDA チップセットが何であるか調べます。 
findchip -v として調べてください。これ以外のチップセットを検出する方法
については以下を参照下さい。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.1.1.3.6. irsockets

IrDA ソケットを使うプログラムを集めたものです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.1.1.3.7. irpsion5

Psion PDA との間でファイルを遣り取りするファイル転送プログラムです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.1.1.3.8. /etc/irda

設定ファイルで、SIR ドライバのシリアルポート情報を含みます。最初の試行
の際に SIR IrDA ドライバを設定する必要があるでしょう。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.1.2. openobex

OpenOBEX <http://sourceforge.net/projects/openobex/> プロジェクトで最終
的に実現しようとしているのは、Object Exchange (OBEX) プロトコルのオープ
ンソースの実装です。OBEX はセッションプロトコルで、バイナリの HTTP プロ
トコルとでも言うべきものです。典型的なアプリケーションとして、PalmOS の
Beam 機能が挙げられます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.1.3. e-squirt

e-Squirt <http://www.hpl.hp.com/personal/Jean_Tourrilhes/IrDA/
index.html> は IrDA メディア上で URL を送るための単純なプロトコルです。
これにより CoolTown が有効なデバイスとの間でやりとりができます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.1.4. Linux-IrDA 用 IrNET

IrNET <http://www.hpl.hp.com/personal/Jean_Tourrilhes/IrDA/index.html>
は 2 つの IrDA ピア間での TCP/IP 通信を効率よく行なえるようにするプロト
コルです。これは IrTTP ソケットで PPP パケットを受け渡しする軽いレイヤ
です。効率を上げるため PPP を同期モードで利用しており、柔軟性に富み様々
な機能を提供しています。 IrNET の主部はカーネル 2.4.x に含まれており、
これと組み合わせて通信を行うユーザスペースデーモンは web ページから提供
されています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.1.5. Java - IrDA インターフェース

この Java Infrared Socket API <http://www.hpl.hp.com/personal/
Jean_Tourrilhes/IrDA/index.html> は Java を使って Linux マシンと赤外線
デバイスとの通信を行う手段を提供します。これを用いることで Java のアプ
リケーション開発者は、赤外線通信を用いたアプリケーションをより容易に開
発できます。 API は java.net.Socket API によく似たもので、Linux IrDA ス
タックを用いて実装されています。コネクション指向ストリーム (IrSocket と
IrServerSocket) と、コネクションレスストリーム (UltraSocket と
UltraPacket) の両方がサポートされています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.2. カーネル

2.2.1. はじめに

まず、Kernel-HOWTO を読んでコンパイル手順についての情報を得ておいてくだ
さい。また、Linux/IrDA Project <http://irda.sourceforge.net>、および
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) を有効にする必要があるでしょう [2]。

"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 から少々手を加えて引
いてきたものです。現状と新しいドライバについては最新のカーネル文書に当
たってください [3]。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

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

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

CONFIG_IRDA
   
    IrDA (TM) プロトコルを有効にしたいなら、ここで Y と答えてください。
    The Infrared Data Associations (tm) は無線赤外線通信の規格を策定す
    る団体で、その規格はほとんどのラップトップと PDA でサポートされてい
    ます。
   
    IrDA (tm) プロトコルを有効とした Linux を使用するには、irmanager と
    、それに加えて恐らく irattach のようないくつかのユーザ側のユーティ
    リティも必要になるでしょう。詳しくは Documentation/networking/
    irda.txt をご覧ください。InfraRed-HOWTO も参照したい場合は、 
    TuxMobil <http://tuxmobil.org/howtos.html> から入手できます。
   
    この機能はモジュールとしても利用できます。モジュール名は irda.o で
    す。モジュールとしてコンパイルしたいなら、ここで M と答え、
    Documentation/modules.txt をお読みください。
   
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. デバイスドライバ

IrTTY IrDA デバイス・ドライバ

CONFIG_IRTTY_SIR
   
    IrTTY ライン・ディシプリンを有効にしたいなら、ここで Y と答えてくだ
    さい。モジュール (irtty.o) としてコンパイルしたいなら、ここで M と
    答え、Documentation/modules.txt をお読みください。 IrTTY により
    Linux のシリアル・ドライバーを 16550 互換な IrDA の全ポートで使用で
    きるようになります。ほとんどの IrDA チップは 16550 互換なので、この
    オプションには恐らく Y と答えることになるでしょう。しかしながら
    IrTTY を用いた場合にはこのドライバでは接続速度が 115200 bps (IrDA
    SIR モード) に制限されます。
   
    よくわからなければ Y と答えてください。
   
IrPORT IrDA デバイスドライバ

CONFIG_IRPORT_SIR
   
    IrPORT IrDA のデバイスドライバを有効にするには、ここで Y と答えてく
    ださい。モジュール (irport.o) としてコンパイルしたいなら M と答え、
    Documentation/modules.txt を読んでください。 IrPORT は IrTTY の代わ
    りに使用することができますが、場合によっては IrPORT の方が都合がい
    いこともあります。一例をあげると、あなたのコンピュータの IrDA ポー
    トにエコー・キャンセルの機能がない場合で、この種のポートでは IrPORT
    を使うとうまく動きます。というのは、このドライバは半二重モードでの
    み動作するからです。IrPORT では irattach を使わなくても、"insmod
    irport io=0x3e8 irq=11" のように FIR ドライバと同じ方法で組み込むこ
    とができます。
   
    よくわからなければ、Y と答えてください。
   
Winbond W83977AF IrDA デバイス・ドライバ

CONFIG_WINBOND_FIR
   
    Winbond W83977AF super-io チップセット用に IrDA を有効にしたいなら
    、ここで Y と答えてください。Corel NetWinder の IrDA チップセット用
    にはこのドライバを使うべきです。ドライバがサポートしている速度は
    SIR、MIR、FIR (4Mbps) です。
   
    モジュールとしてコンパイルしたいなら、ここで M と答え、
    Documentation/modules.txt をお読みください。モジュール名は
    w83977af_ir.o になります。
   
NS PC87108 IrDA デバイス・ドライバ

CONFIG_NSC_FIR
   
    NS 社 PC87108 と PC87338 IrDA チップセットのサポートを有効にしたい
    なら、ここで Y と答えてください。このドライバは SIR、MIR、FIR
    (4Mbps) をサポートしています。
   
    モジュールとしてコンパイルしたいなら、ここで M と答え、
    Documentation/modules.txt をお読みください。モジュール名は
    nsc-ircc.o になります。
   
Toshiba Type-O IR ポートのデバイスドライバ

CONFIG_TOSHIBA_FIR
   
    Toshiba Type-O IR チップセットを有効にするには、ここで Y と答えてく
    ださい。このチップセットは、Toshiba Libretto 100CT や多くのラップト
    ップ・コンピュータで使用されています。モジュールとしてコンパイルし
    たいなら M と答え、 Documentation/modules.txt を読んでください。モ
    ジュール名は toshoboe.o になります。
   
SMC IrCC (試験的)

CONFIG_SMC_IRCC_FIR
   
    SMC 社の赤外線通信コントローラのサポートを有効にしたいならここで Y
    と答えてください。これは富士通 Lifebook 635t と Sony VAIO PCG-505TX
    で使われています。モジュールとしてコンパイルしたいなら M と答え、
    Documentation/modules.txt を読んでください。モジュール名は
    smc-ircc.o になります。
   
ALi M5123 FIR コントローラ向けドライバ (試験的)

CONFIG_ALI_FIR
   
    ALi 社の M5123 赤外線通信コントローラのサポートを有効にしたいならこ
    こで Y と答えてください。この ALi M5123 FIR コントローラは ALi の
    M1543C、 M1535、M1535D、M1535+、M1535D の各サウスブリッジの内蔵コン
    トローラでもあります。このドライバは SIR、 MIR、FIR (4Mbps) をサポ
    ートしています。
   
    モジュールとしてコンパイルしたいなら M と答え、 Documentation/
    modules.txt を読んでください。モジュール名は ali-ircc.o になります
    。
   
シリアルドングルサポート

CONFIG_DONGLE
   
    あなたのコンピュータのシリアルポートに接続する赤外線デバイスを使っ
    ている場合 Y と答えてください。これらのデバイスを総称してドングルと
    呼びます。次に、使っているドングルの機種にあわせて以下で Y または M
    と答えてドライバを選択してください。
   
    この質問に対する答えは、直接にはカーネルには影響しません。 N と答え
    ることによって以下のシリアルドングルについての質問がすべてスキップ
    されるだけです。
   
ESI JetEye PC ドングル

CONFIG_ESI_DONGLE
   
    Extended Systems 社の JetEye PC dongle のサポートを有効にしたいなら
    、ここで Y と答えてください。モジュールとしてコンパイルしたいなら、
    ここで M と答え、Documentation/modules.txt をお読みください。 ESI
    dongle は通常の 9 ピン・シリアル・ポート・コネクターに接続され、現
    在 IrTTY で使われるだけです。ESI ドングルを有効にするには、
    "irattach -d esi" として irattach をスタートさせる必要があります。
   
ACTiSYS 社 IR-220L 及び IR220L+ ドングル

CONFIG_ACTISYS_DONGLE
   
    ACTiSYS IR-220L, IR220L+ ドングルのサポートを有効にしたいなら、ここ
    で Y と答えてください。モジュールとしてコンパイルしたいなら、ここで
    M と答え、Documentation/modules.txt をお読みください。 ACTiSYS
    dongle は通常の 9 ピン・シリアル・ポート・コネクターに接続され、現
    在 IrTTY で使われるだけです。 ACTiSYS ドングルを有効にするには、
    "irattach -d actisys" または "irattach -d actisys+" として irattach
    をスタートする必要があります。
   
Tekram IrMate 210B ドングル

CONFIG_TEKRAM_DONGLE
   
    Tekram IrMate 210B ドングルのサポートを有効にしたいなら、ここで Y
    と答えてください。モジュールとしてコンパイルしたいなら、ここで M と
    答え、Documentation/modules.txt をお読みください。 Tekram ドングル
    は通常の 9 ピン・シリアル・ポート・コネクターに接続され、現在 IrTTY
    で使われるだけです。Tekram ドングルを有効にするには、"irattach -d
    tekram" として irattach をスタートする必要があります。
   
Greenwich 社の GIrBIL ドングル

CONFIG_GIRBIL_DONGLE
   
    Greenwich 社の GIrBIL ドングルのサポートを有効にするには、ここで Y
    と答えてください。モジュールとしてコンパイルしたいなら M と答え、
    Documentation/modules.txt を読んでください。 Greenwich ドングルは通
    常の 9 ピンシリアル・ポート・コネクタに接続し、現時点では IrTTY の
    みで使用できます。 /etc/irda/drivers スクリプトに "irattach -d
    girbil" と記述することで、Greenwich ドングルを利用可能にすることが
    できます。
   
Parallax Litelink ドングル

CONFIG_LITELINK_DONGLE
   
    Parallax Litelink ドングルのサポートを有効にするには、ここで Y と答
    えてください。モジュールとしてコンパイルしたいなら M と答え、
    Documentation/modules.txt を読んでください。 Parallax ドングルは通
    常の 9 ピンシリアル・ポート・コネクタに接続し、現時点では IrTTY の
    みで使用できます。Parallax ドングルを使うためには、 "irattach -d
    litelink" として irattach をスタートさせる必要があります。
   
旧 Belkin ドングル

CONFIG_OLD_BELKIN_DONGLE
   
    Adaptec 社の Airport 1000 と 2000 ドングルのサポートを有効にしたい
    なら Y と答えてください。モジュールとしてコンパイルしたいなら M と
    答え、Documentation/modules.txt を読んでください。このモジュールは
    old_belkin.o という名前になります。多少の情報がドライバ drivers/net
    /irda/old_belkin.c の頭の部分のコメントに書かれています [4]。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

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

注記: donauboe は toshoboe の新版で、FIR サポートが改良され、Donauoboe
チップ (lib-irda <http://libxg.free.fr/lib-irda.html> 参照) との互換性
が向上しています。

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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.3. カーネルモジュールオプション

以下のモジュールオプションのサーベィは modinfo コマンドで作成したもので
す。

actisys.o                                                              
Dag Brattli <dagb_at_cs.uit.no> - Jean Tourrilhes <jt_at_hpl.hp.com>   
ACTiSYS IR-220L and IR-220L+ ドングルドライバ                          
                                                                       
ali-ircc.o                                                             
Benjamin Kong <benjamin_kong_at_ali.com.tw>                            
ALi FIR コントローラドライバ                                           
io int array (min = 1, max = 4), "Base I/O addresses" を指定します     
irq int array (min = 1, max = 4), "IRQ 番号" を指定します              
dma int array (min = 1, max = 4), "DMA チャネル" を指定します          
                                                                       
esi.o                                                                  
Dag Brattli <dagb_at_cs.uit.no>                                        
Extended Systems 社の JetEye PC ドングルドライバ                       
                                                                       
girbil.o                                                               
Dag Brattli <dagb_at_cs.uit.no>                                        
Greenwich 社の GIrBIL ドングルドライバ                                 
                                                                       
irport.o                                                               
Dag Brattli <dagb_at_cs.uit.no>                                        
IrDA SIR モードの半二重シリアルドライバ                                
io int array (min = 1, max = 4), "Base I/O addresses" を指定します     
irq int array (min = 1, max = 4), "IRQ 番号" を指定します              
                                                                       
irtty.o                                                                
Dag Brattli <dagb_at_cs.uit.no>                                        
IrDA TTY デバイスドライバ                                              
qos_mtt_bits int, "最小切り変え時間" を指定します。                    
                                                                       
litelink.o                                                             
Dag Brattli <dagb_at_cs.uit.no>                                        
Parallax 社 Litelink ドングルドライバ                                  
                                                                       
nsc-ircc.o                                                             
Dag Brattli <dagb_at_cs.uit.no>                                        
NS 社の IrDA デバイスドライバ                                          
qos_mtt_bits int, "最小切り変え時間" を指定します。                    
io int array (min = 1, max = 4), "Base I/O addresses" を指定します     
irq int array (min = 1, max = 4), "IRQ 番号" を指定します              
dma int array (min = 1, max = 4), "DMA チャネル" を指定します          
dongle_id int, "使っているドングルのデバイス番号" を指定します         
                                                                       
old_belkin.o                                                           
Jean Tourrilhes <jt_at_hpl.hp.com>                                     
Belkin (旧) SmartBeam ドングルドライバ                                 
                                                                       
smc-ircc.o                                                             
Thomas Davis <tadavis_at_jps.net>                                      
SMC IrCC コントローラのドライバ                                        
ircc_dma int, "DMA チャネル" を指定します                              
ircc_irq int, "IRQ 番号" を指定します                                  
                                                                       
tekram.o                                                               
Dag Brattli <dagb_at_cs.uit.no>                                        
Tekram IrMate IR-210B ドングルドライバ                                 
                                                                       
toshoboe.o                                                             
James McKenzie <james_at_fishsoup.dhs.org>                             
Toshiba OBOE IrDA デバイスドライバ                                     
max_baud int, 最大ボーレート                                           
                                                                       
w83977af_ir.o                                                          
Dag Brattli <dagb_at_cs.uit.no>                                        
Winbond W83977AF IrDA デバイスドライバ                                 
qos_mtt_bits int, "最小切り変え時間" を指定します。                    
io int array (min = 1, max = 4), "Base I/O addresses" を指定します     
irq int array (min = 1, max = 4), "IRQ 番号" を指定します              
                                                                       
irda.o                                                                 
Dag Brattli <dagb_at_cs.uit.no>                                        
The Linux IrDA プロトコルサブシステム                                  
irda_debug_R07c03e02 long                                              
                                                                       
irlan.o                                                                
Dag Brattli <dagb_at_cs.uit.no>                                        
Linux IrDA LAN プロトコル                                              
eth int, "デバイス名 ethX (0) 及び irlanX (1)" を指定します            
access int, "アクセス種別 DIRECT=1, PEER=2, HOSTED=3" を指定します     
                                                                       
ircomm-tty.o                                                           
Dag Brattli <dagb_at_cs.uit.no>                                        
IrCOMM シリアル TTY ドライバ                                           
                                                                       
ircomm.o                                                               
Dag Brattli <dag_at_brattli.net>                                       
IrCOMM プロトコル                                                      
                                                                       
irnet.o                                                                
<none>                                                                 
<none>                                                                 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.4. 設定について

2.4.1. Device 番号

mknod /dev/ircomm0 c 161 0                                             
mknod /dev/ircomm1 c 161 1                                             
mknod /dev/irlpt0 c 161 16                                             
mknod /dev/irlpt1 c 161 17                                             
mknod /dev/irnet c 10 187                                              
chmod 666 /dev/ir*                                                     

irkbd を使う場合、必要になるデバイス番号がこれ以外にもあるでしょう。最
新のデバイス番号は ../src/linux/Documentation/devices.txt にあります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.4.2. 赤外線デバイスの配置

まず、IrDA デバイスを通信可能な距離に置いてください。運が良ければ Linux
/IrDA サービスがすべての新しいデバイスを自動的に検出できることもあるか
もしれませんが、私の経験では、良好な結果が得られるのは設定時に所定の距
離にある場合だけです。

赤外線デバイスは 1m 以内の距離に置き、角度の傾きは 30 度以内にしてくだ
さい。二つのデバイスが真っ直ぐ見通せる状態にある必要があります。こうで
きない場合には鏡を使ってください (未使用の M$ の CD-ROM が良い鏡として
使えます)。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.4.3. /etc/modules.conf

/etc/conf.modules に以下の行を加えてください。

# IrDA over a normal serial port, or a serial port compatible IrDA port       
alias tty-ldisc-11 irtty                                                      
# IrCOMM (for printing, PPP, Minicom etc)                                     
alias char-major-161 ircomm-tty     # if you want IrCOMM support              
# IRLAN                                                                       
alias irlan0 irlan                                                            
# To be able to attach some serial dongles                                    
# These values are hard-coded in irattach (not instance order)                
alias irda-dongle-0 tekram          # Tekram IrMate IR-210B                   
alias irda-dongle-1 esi             # ESI JetEye                              
alias irda-dongle-2 actisys         # Actisys IR-220L                         
alias irda-dongle-3 actisys         # Actisys IR-220L+                        
alias irda-dongle-4 girbil          # Greenwich GIrBIL                        
alias irda-dongle-5 litelink        # Parallax LiteLink                       
alias irda-dongle-6 airport         # Adaptec Airport 1000 and 2000           
alias irda-dongle-7  old_belkin         # Belkin (old) SmartBeam dongle       
alias irda-dongle-8  ep7211_ir          # Cirrus Logic EP7211 Processor (ARM) 
alias irda-dongle-9  mcp2120            # MCP2120 (Microchip) based           
alias irda-dongle-10 act200l            # ACTiSYS Ir-200L                     
alias irda-dongle-11 ma600              # Mobile Action ma600                 
# To use the FIR driver. This applies only to the specific device!!!          
#options nsc-ircc dongle_id=0x09        # NSC driver on a IBM Thinkpad laptop 
#options nsc-ircc dongle_id=0x08        # HP Omnibook 6000                    
#alias irda0 nsc-ircc                                                         
#alias irda0 smc-ircc                                                         
# options toshoboe max_baud=                                                  
# alias irda0 toshoboe                                                        
# options w83977af_ir io= io2= irq= qos_mtt_bits=                             
# alias irda0 w83977af_ir                                                     
# IrNET module...                                                             
alias char-major-10-187 irnet       # Official allocation of IrNET            

このあと depmod -a を行って更新を反映してください。これで全 IrDA デバイ
スが必要に応じて自動的にロードされるはずです。テスト時にこれらのモジュ
ールを手動でロードすることはできますが、二回ロードされることがないよう
によく注意してください。 irkbd や USB ドングルを使う場合には、これ以外
にも必要なエントリがあるかもしれません。設定の元となる例は irda-utils
パッケージに含まれています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.4.4. /etc/irda

/etc/irda に目を通してください。あなたの設定を反映するよう適宜編集して
ください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.4.5. BIOS 設定

BIOS で赤外線ポートが有効になっていることを確認し、その際に赤外線ポート
が使用している割り込みとポートアドレスをチェックしてください。一部のラ
ップトップでは BIOS のパラメータを設定するのに Window$ をインストールし
ておく必要がある場合があるようです。

一部の機種では、ドッキングステーションに接続した場合に赤外線ポートが無
効にされた、という報告を受けています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.4.6. シリアルポート (setserial)

まず IrDA を SIR モードと FIR モードのどちらでセットアップするか決めま
しょう。SIR モードがおすすめです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.4.6.1. SIR

あなたの SIR ポートにあわせて ttySx を選びます。ヒント: dmesg | grep
tty としてみます。詳細は、以下の「IrDA スタックを使ってみる」の節を見て
ください。

SIR シリアルデバイスを決めるには、BIOS を調べてください。それがだめなら
、 dmesg | grep tty を実行して、マシンでサポートされている tty デバイス
の概略情報を得てください。そこから IrDA デバイスとおぼしき一デバイスを
選び出します。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.4.6.2. FIR

SIR では動作しない場合 (まれなようです)、FIR を試してください。まず
BIOS を調べます。シリアルデバイスとどこかで競合することを避けるため、 
setserial /dev/ttyS1 uart none としておく必要があります。

注意：setserial /dev/ttySx uart none は、IrDA が SIR モードの場合に使っ
てはいけません。

Florian Lohoff さんから: 多分 "port 0x0 irq 0" もやっておく必要がありま
す。こうしておかないと突然別の S1 がシステムで使えるようになったとき
(例えばモデム PCMCIA カードを挿入したとき) 妙なことになります。その際に
シリアルドライバは、自分の支配下にないのにも関わらず旧ポートをアクセス
するため、IrDA 関係が死んだりハングしたりしてしまいます。まだ、シリアル
ドライバでどこが悪いのか見つけていませんが、はっきり存在するバグです
(serial_out と serial_in 関係の前後で printk してみた限り)。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.4.7. リソースコンフリクト: IRQ, IO

システムにサウンド機能、PCMCIA やホットプラグシステムがある場合は特に起
きがちですが、IRQ がコンフリクトする場合があります。マシンの IRQ の利用
状況を cat /proc/interrupts でチェックしてください。 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

2.4.8. IrDA を動かしてみる

まず、とにかく Disk を sync してください。リブートする羽目になるかもし
れません。最初の免責の項参照。

ローレベルドライバには、SIR、ドングルと FIR の三つのカテゴリがあります
。 Linux/IrDA を始めるにはまず SIR から使ってみることを薦めます。

modprobe irda irtty でモジュールをロードします。 irattach /dev/ttyS1 -s
で IrDA サービスに IrDA デバイスを接続します。lsmod の出力と dmesg をチ
ェックしてください。

irdadump は届く範囲の全 IrDA デバイスを列挙します。ヒント: 別の Linux
マシンとの間で接続している場合、hostname YOUR_HOSTNAME として各コンピュ
ータに固有の名前を与えることができます。

サーバ側になるマシンで、"pppd /dev/ircomm0 LOCAL_IP:REMOTE_IP" をクライ
アント側で "pppd /dev/ircomm0" を実行してください。

これで接続を ping でテストできるようになります。また、各種のネットワー
ク接続 (ssh, NFS など) を、この時点で使ってみてください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 3. IrDA 接続の詳細 - プロトコル

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

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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.1.1. SIR

 

 ・ どのシリアルポートを IR デバイスで使っているかを調べてください。こ
    れには dmesg の出力を見てみるのも一案です。シリアルサポートがモジュ
    ール化されている場合、まず modprobe serial を実行してください。そし
    て以下のようなエントリを探します。
   
    Serial driver version 4.25 with no serial options enabled                
    ttyS00 at 0x03f8 (irq = 4) is a 16550A     #first serial port /dev/ttyS0 
    ttyS01 at 0x3000 (irq = 10) is a 16550A    #e.g. infrared port           
    ttyS02 at 0x0300 (irq = 3) is a 16550A     #e.g. PCMCIA modem port       
   
    こうならないようならば、BIOS で赤外線サポートが有効になっていないか
    、カーネルがあなたの赤外線デバイスの SIR モードを検出できていません
    。現時点で二機種のラップトップでこの現象が起きるのが分かっています
    。 HP の OmniBook 800 と東芝の Libretto モデルです。私は PnP サポー
    トが IR ポートの検出に影響するかどうかは知りません。上手くいかない
    のはこのあたりが怪しいという場合は、試してみて結果を私まで連絡お願
    いします。また SIR が動かなくとも FIR が使えるかもしれません。
   
 ・ 場合によっては、 setserial /dev/ttyS<0-2> port 0xNNNN irq M として
    赤外線シリアルポートの値を設定する必要があるかもしれません。特に、
    赤外線ポートが独立したシリアルポートの場合、これが必要になるケース
    が多いようです。通常この値を変更する必要はないでしょう。これ以上の
    情報は、以下の FAQ の項を参考にしてください。
   
 ・ kerneld や kmod を使っていない場合、modprobe irda を使って irda モ
    ジュールを読み込んでください。
   
 ・ lsmod を実行してください。irda と irtty モジュールが表示されるはず
    です。
   
 ・ /var/log/messages にはこの時点で "Serial connection established" の
    メッセージが出力されているはずです。
   
 ・ irattach を実行して、他の IR デバイスを検出するため少々 (例えば７秒
    ほど) 待ってください。その後、/var/log/messages に書き出されたメッ
    セージを見てみてください。以下のような出力が得られているはずです
    (Linux/IrDA に無関係な行を多少削除しています)。
   
    Jan  2 12:57:26 japh kernel: ttyS00 at 0x03f8 (irq = 4) is a 16550A             
    Jan  2 12:57:26 japh kernel: ttyS02 at 0x03e8 (irq = 4) is a 16550A             
    Jan  2 12:57:26 japh kernel: Linux Support for the IrDA (tm) protocols (Dag Bra 
    ttli)                                                                           
    Jan  2 12:59:09 japh syslog: executing: 'echo 1 > /proc/sys/net/irda/discovery' 
    Jan  2 12:59:09 japh syslog: Setting discovery to 1 exited with status 1        
    Jan  2 12:59:09 japh syslog: + 0.1 Fri Jul 25 11:45:26 1997 Dag Brattli         
    Jan  2 12:59:09 japh syslog: + 0.1 Fri Jul 25 11:45:26 1997 Dag Brattli         
    Jan  2 12:59:09 japh syslog: Serial connection established.                     
    Jan  2 12:59:09 japh kernel: IrDA irda_device irda0 registered.                 
    Jan  2 13:01:22 japh syslog: executing: './drivers start '                      
    Jan  2 13:01:22 japh syslog: Serial connection established.                     
    Jan  2 13:01:42 japh syslogd: Printing partial message                          
    Jan  2 13:01:42 japh 0.1 Fri Jul 25 11:45:26 1997 Dag Brattli                   
    Jan  2 13:02:49 japh kernel: IrDA Discovered: japh                              
    Jan  2 13:02:49 japh kernel:     Services: Computer                             
   
     
   
 ・ 更に詳しい情報は cat /proc/net/irda/discovery で得られます。
   
 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

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 オプションを付けなければいけません。これは同時に２つ
のシリアルポートに別々のドングルがついている場合があり、そのような場合
には tty でバインドしたいドングルがどちらなのかを知らせなければならない
ためです。もし２つのシリアルポートで２つのドングルを使っているなら、以
下のようにしてみて下さい。

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+) も二個を
同時に (２つのシリアルポートに接続して) 使うことはできません。そうする
必要がある方がおられるなら私 (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 ドングルなど) でエコーに煩わされることがないこと、の２つの利点が
あるため役に立つかもしれません。 irport を使うためには modprobe で 
modprobe irport io=0x3f8 irq=4 (値はあなたの環境に合わせてください) 等
としてパラメータを与えてやる必要があります。このパラメータは /etc/
conf.modules に options 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/drivers に modprobe pc87108 を追加して組み込むかです
(だと思います)。

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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

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

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

 ・ SIR = 標準 IrDA, 115kbps までの速度の IrDA です
   
 ・ MIR = 中速 IrDA,
   
 ・ FIR = 高速 IrDA (4Mbps),
   
 ・ VFIR = 超高速 IrDA(16Mbps) 次の標準になると思います
   
 

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 以上まで出せます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.2. プリンタ接続

 ・ 上記に従って Linux/IrDA を準備してください。特に、 /dev/irlpt* があ
    るかを確認してください (これがない場合、root から mknod /dev/irlpt0
    c 161 16 を実行してください)。そのあと、まず手始めの簡単なテストを
    行います。小さなファイルを cat FILE >/dev/irlpt0 として /dev/irlpt0
    に書き込んでみてください。フォーマットのことを気にする (手順に従っ
    た行構成など) 必要はありません。これは最初のチェックに過ぎませんの
    で。これが上手くいかない場合、 /dev/irlpt0 のパーミッションを調べて
    ください。プリンタの通信状態を示すランプで、通信が行われているかを
    見ていてください。例えば、HP の 6P/MP では赤外線ポート (左下の隅で
    、ペーパトレイの近く) の緑のランプが通信状態を示します。
   
 ・ cat コマンドでは整形された出力は得られませんが、テストには便利です
    。 cat によるテストが動くなら、次はあなたのプリンティングシステムに
    従って IrDA をサポートしたプリンタを設定する番です。詳しい手順は説
    明文書、例えば LinuxPrinting.org <http://www.linuxprinting.org> の
    Printing-HOWTO などを参照下さい。
   
 ・ 次は、HP LaserJet 2100 を例に取り Common Unix Printing System -
    CUPS <http://www.cups.org> を用いた例です。
   
    lpadmin -p IRDA_PRINTER_NAME -v parallel:/dev/irlpt0 -E -m de/hp2100_6.ppd.gz
   
    ppd ファイルのパスのリストを得るには、lpinfo -m としてください。
   
 ・ もちろん他のプリンティングシステムも同様に使えます。この場合には、
    /etc/printcap を編集して irlpt0 をプリンタデバイスとして指定してく
    ださい。
   
 ・ もっと良い方法は、/etc/printcap を変更して /dev/lp1 に加えて (ある
    いは /dev/lp1 の代わりに) /dev/irlpt0 を使うようにすることです。
   
 ・ 簡単にプリンタを設定するには、印刷用のソフトウェア (例えば
    APSFILTER や MagicFilter の EZ-Magic [6] などをつかうのも手です。使
    う前にまず /etc/printcap のコピーを作っておきましょう。
   
 ・ APSFILTER で HP LaserJet 6P (非 PostScript プリンタ。HP 6MP は
    PostScript プリンタです) を使う場合の例です。当面問題となる質問は以
    下の二つです。
   
    "Do you have a (s)serial or a (p)arallel printer interface?" 「プリ
    ンタインターフェースはパラレル (p) シリアル (s) のどちら?」この質問
    の答えは p です。
   
    "What's the device name for your parallel printer interface?" 「プ
    リンタインターフェース名はなんですか」。答えは /dev/irlpt0 です。
   
 ・ プリントデーモンを kill -HUP <PID of lpd> として再スタートします[7]
    。これ以外のプリントデーモンを使っている場合には、所定のコマンドを
    実行してください。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.3. LAN 接続 - IrLAN

 

 ・ 現在、Linux/IrDA コアチームは IrLAN プロトコルサポートのメンテナン
    スをもう行っていません。
   
    IrLAN を使って、他のネットワーク機器に接続することができます。機器
    の具体例としては、同じく IrLAN を使った Linux マシン、HP NetBeamer
    、赤外線サポートのある Window$ 95 マシンなどです。
   
 ・ Dag Brattli さんによると「IrLAN を使う場合には、ifup eth0 を行う前
    に modprobe irlan_client が必要です。カーネル中にないプロセスコンテ
    クストを要求するので、 request_module() も外さなければなりませんで
    した」場合によると、アクセスモードの選択を行う必要もあるかもしれま
    せん。ダイレクトモードにするには、modprobe access=1 とすれば OK で
    す。 IrLAN の規定では、送信側はダイレクトモードかピアモードのどちら
    かでなければならならず、現時点では IrLAN を開始するときに選択してや
    る必要があります。
   
 ・ IP アドレスとそれに付随するパラメータを設定するには、
   
    ifconfig eth0 up <ip_address> netmask <ip_netmask>
   
    と実行してください。プロトコルが動作中なら、通信を始めることができ
    ます。 RedHat の netcfg を使ってこれを行うこともでき、そちらの方が
    ずっと簡単です。その後は、/sbin/ifup eth0 とするだけで良いようにな
    ります。 ifconfig は IrLAP アドレスをどう扱うか知らないため、表示さ
    れるアドレスは実際には最初の４バイト (リトルエンディアンフォーマッ
    トで) だけです。
   
 ・ ping を使ってネットワークデバイスをテストしてください。詳しい設定に
    ついては NET3-HOWTO を参照下さい。
   
 ・ 経路情報を与えるのを忘れないように。 route add default gw
    <ip_gateway> か route add -host <target host> dev eth0 とします。
   
 ・ ここで接続をテストするため他のマシンに ping してみましょう。
   
 ・ テストのためには、同じ部屋に置いたラップトップと一つの赤外線
    ethernet デバイスだけを使うことを薦めます。何か問題があるなら、IR
    ethernet デバイスで使用できる別モードがないかを見て、それを試してみ
    てください。
   
 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.4. HP NetBeamer との接続

 

 ・ /etc/irda/drivers を編集して、 irattach /dev/ttyS0 を含めるようにし
    てください。ここで /dev/ttyS0 の部分は使っているシリアルインターフ
    ェースにあわせて修正してください。また、/etc/modules.conf を編集し
    て alias tty-ldisc-11 irtty を含めてください。
   
 ・ irattach 実行の後、 echo 3 > /proc/sys/net/irda/debug として様子を
    見てください。
   
 ・ 次に modprobe irlan としてください。
   
 ・ さらに、私の場合 NetbeamIR を認識させるためには、 echo 9 > /proc/
    sys/net/irda/slot_timeout としてやる必要がありました。これを実行し
    なければ、"media busy" のメッセージだけどっさり出て、NetbeamIR を見
    つける方はうまくいきません。この数字の 9 は私の環境で動作する最小の
    値でしたが、新しいカーネルの場合 90 としてください。
   
 ・ /etc/irda/network.orig を /etc/irda/network にリネームし、使う IP
    構成にあわせて /etc/irda/network.opts を編集します。また、 /etc/
    pcmcia/shared を /etc/irda にコピーしておきます。このファイルはディ
    ストリビューションに含まれていないためです。
   
 ・ さらに私の場合、/etc/irda/shared の 131 行目 grep_stab $1 < /var/
    run/stab をコメントで無効にする必要がありました。何かの理由でここが
    こけると "usage" メッセージが吐かれます。
   
 ・ ラップトップを光の届く範囲に持ってくれば、NetbeamIR は検出され、
    irlan0 が作成され設定されます。
   
 ・ 双方向で、7 kb/s の速度が得られ、ping/ftp/telnet できます。一丁あが
    り！
   
 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.5. Palm III コネクション - IrCOMM

 

PPP
   
    Rui Oliveira さんによると「最新の樋口隆英さんの IrCOMM パッチ
    (050998) を当てた後、HotSync を使って Palm III と Linux マシンとの
    PPP コネクションを張ることができたことをお知らせします。いま IRLink
    (IsComplete からの) を使っていて、これでシリアルポートを IR に変換
    しています。pilot-xfer (確か kpilot <http://www.slac.com/pilone/
    kpilot_home/mainpage.html> から) との通信も問題なしです。PPP 接続は
    うまくいってはいますが、まだメール取得と Web ブラウジングには成功し
    ていません。これは多分コネクションタイムアウトのせいだと睨んでまし
    て、チェック中です。 PPP に関するより深い説明は PPP-HOWTO <http://
    www.tlpd.org> をご覧下さい。(中略) 現在はっきりと確実な接続が Linux
    マシンと Palm III との間で張れるようになりました。pppd の起動は、私
    の所では以下のようにしています。
   
       /usr/sbin/pppd /dev/ircomm0 57600 192.168.2.10:192.168.2.11 
       proxyarp passive silent persist noauth local nodetach       
   
    PPP コネクション上で ping、ssh と http が使えています。但し、確か廃
    止になったはずの discovery を有効にしなければならないのは変ですが。
    これを有効にしなければ IrCOMM コネクションは生きているのにも関わら
    ず、IrLAP 層のリンクが切断されてしまうのです。 pilot-link ツール
    (Linux/Palm のファイル同期に用いる) は IrCOMM 上で /dev/ircomm0 を
    使って問題なく動いています」また、kpilot についての報告も受けていま
    す。こちらは pilot-xfer ほどすいすい動く、とはいかないようです。
   
IrCOMM
   
    Jon Howell さんによると、「私は IrCOMM を試してみようと思いました。
    というのは Palm III はシリアル情報を IR ポートへ転送可能にできるか
    らです。これには PalmCentral <http://www.palmcentral.com> から入手
    できる IS/Complete の IrLink を使います。そこから IrCOMM を使って
    IrDA でターミナルプログラム (シリアルモードの PalmTelnet など) を動
    かすことができるはずです。そこで二台の Palm Pilot 間でこの構成を試
    してみましたが、当然 IR 上でどんなプロトコルが使われているかは分か
    りません」
   
     1. Palm で HotSync を開始します。これには Palm に IrCOMM サポート
        があることが必要です。このサポートを組み込むには、IrDA upgrade
        <http://www.palm.com/custsupp/downloads/irenhanc.html> が必要に
        なります。
       
     2. Palm をドングルの前に置きます。
       
     3. pilot-xfer -p /dev/ircomm0 -s <sync-dir> として IrCOMM を開始し
        ます。運良くこれだけでうまくいっているなら、ファイルの同期がは
        じまるでしょう。 HotSync を Pilot 上で開始する前に pilot-xfer
        を実行していたなら、不幸になっていると思います :-) PalmTerm の
        ようなターミナルプログラムも役に立つでしょう。
       
Wessel de Roode さんによると「Palmpilot は標準では 57k の速度に決めうち
しています。但し自分で Pilot 用のソフトウェアを書けば 115k の速度の設定
を行うことができます。以下 irlib.h から引いておきます」

---------- irlib.h from the SDK 3.0 from palmpilot -----                        
// Options values for IrOpen                                                    
#define irOpenOptBackground     0x80000000   // Unsupported background task use 
#define irOpenOptSpeed115200    0x0000003F   // sets max negotiated baud rate   
#define irOpenOptSpeed57600     0x0000001F   // default is 57600                
#define irOpenOptSpeed9600      0x00000003                                      

Peter Pregler さんによると「Palm が irda デバイスと通信可能な位置に入っ
たとき、"Transmission: waiting for sender" というポップアップウィンドウ
が出ます」

これに対する Ron Choy さんの返信は「煩わしいポップアップの問題に対処す
るという ShutupIR <http://hp.vector.co.jp/authors/VA005810/irda/
shutup10.zip> というプログラムが Vector にあります。試していませんが、
多分この件はこれで解決できるんじゃないですか」

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.6. Palm (Handspring Visor) 用 IR 経由 Linux ターミナル

IrDA メーリングリストの Chris Morris さんによると「IrDA を使って
Handspring Visor との間で hotsync を行う以外に、IR 経由で Linux テキス
トターミナルとしても動かすことに昨夜成功しました。私のコンピュータは
Dell Inspiron 3800 です (ちなみに、このマシンと 2.4.0 カーネルで IR を
動かすのに何週間も悩んでいました。問題は結局 Linux が ttyS3 に対して間
違った IRQ を見ていたためでした。IR HOWTO にもこの件に関する言及をお願
いします)。使っているのは Hacker Dude-san 作の Beam Sync for Visor
V1.0b2 Hacker Dude-san's Page <http://www.tt.rim.or.jp/~tatsushi> と
Shigeyuki Seko さん (seko_at_pamupamu.com) 作の Mini Term <http://
pamupamu.tripod.co.jp/soft/mterm/mterm_E.htm> です。ラップトップ側では
IR は SIR モードで、COM3 に BIOS で割り当てています。 /dev/ttyS3 を
IRQ3 に、 setserial /dev/ttyS3 irq 3 で割り当ててやる必要があります。ブ
ート後、以下のようにしています。

/sbin/modprobe irda                                                    
/sbin/modprobe irtty                                                   
/sbin/modprobe ircomm                                                  
/sbin/ircomm-tty                                                       
/usr/sbin/irattach /dev/ttyS3 -s                                       

cat /proc/net/irda/discovery で Visor が IrCOMM で見えるようになってい
ます。 /etc/mgetty+fax/mgetty.conf は以降の３つのオプションが必要です。
"port ttyS3 direct y speed 9600": もっと高速でも良いのかもしれませんが
、私の所ではここまでしか動きませんでした。次に toggle-dtr n を行い、最
後に /etc/inittab に "palm:235:respawn:/sbin/mgetty ircomm0" を。これ全
部を行った後 Mini Term を開始でき、'/sbin/init q' を入力して Visor から
数回 <CR> を送ればテキストターミナルログインプロンプトが出ます。このメ
ールを書いている最中に、以前は気がつかなかったけどとても役に立ちそうな
サイトに気がつきました。 palm-ppp-mini <http://abgruen.de/palm/
palm-ppp-mini.txt> です。」

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.7. Psion 5 との接続

Andrew Chadwick さんによると「(Psion シリーズ 5 を持っているなら) SIR
の転送レートが正しく設定されていることを確認するうまいやり方は、S5 を
Linux マシンの赤外線ポートの窓に向けて、ファイルを光で送ってみることで
す。光送信のダイアログが画面に出ている間、S5 は IrDA 接続を行おうとしま
す (他の赤外線をつかったマシンが見つからないというメッセージが出ている
ときでも)。この間、cat > /dev/ttyS3 として通信内容を見ることができ、シ
リアルパラメータが両方のマシンで正しいならゴミに混じって "Symbian EPOC"
(マシンの識別子) の単語が見られるはずです」

Fons Botman さんによると「誰か Psion 5 を持っている人で、添付のプログラ
ムを試してみてもらえるひとはいませんか。これは、linux で Psion 5 IR が
ファイルを送受するプロトコルをエミュレートするものです。これを使えば単
純なコマンドでファイルの交換ができるようになります。転送レートは 115kB
SIR を使って 9.7kB/sec で、なかなか悪くないといったところです。これはβ
版ですので、まず Psion をバックアップしておいてください。一度ソフトウェ
アリセットを食いました (データは失われませんでしたけど) ;-)」ソースは付
録に載せています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.8. Linux と WinCE を接続する

Linuxcare 社の Arthur Tyde、Bryan Abshier 両名の投稿です。

これは WinCE 機の IrDA ポートを使ってマスカレードされた PPP 接続を
Linux ベースのノート PC との間で行う方法について書いたものです。一旦 IP
接続ができてしまえば、あとはどうとでもなるでしょう。私たちはこれを Sony
のノートブックと Casio の E-100/105 PDA を使うユーザのためのガイドとし
てまとめましたが、この手順はノートブックとの間で赤外線通信可能な WinCE
2.11 デバイスならどれでも有効なはずです。Linux 側のテストはすべて root
権限で行ってください。また標準の警告、つまり無保証が適用されます。

WinCE 機の設定
   
    WinCE デバイスでネットワーク接続の設定を行ってください。
    "Connection" のメニューに行って "Direct Connection" を作り、何か意
    味のある名前を付けます。デバイスには "Infrared Port" を選びます。設
    定のメニューに行ってボーレートを 115200 に設定します。これは WinCE
    での最大値です。TCP/IP 設定に行って、"サーバから与えられた IP アド
    レスを使う"、"ソフトウェア圧縮を使う" および "IP ヘッダ圧縮を使う"
    にチェックを入れてください。 "SLIP を使う" にチェックが入っていない
    ことを確認してください。 Name サーバの設定では、"サーバから与えられ
    た IP アドレスを使う" にチェックを入れてください。 Start、Setting、
    Communications、Identification でデバイス名として名前を入力します
    (私は "cetoy" と入れました)。 Activesynch を使って Win9x デスクトッ
    プとの間でファイル同期を行っていたなら、ここは既に設定されていると
    思います。
   
Linux/IrDA を設定する
   
    ノートブック 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"
   
    あなたの WinCE マシンは、WinCE マシンの側から積極的に接続を確立しよ
    うとしない限り、発見されません。というわけで、WinCE の状態をあなた
    のデバイスでテストしたい場合、手順 2 で作成したネットワークアイコン
    をダブルタップしてください。以下のようなものが表示されるはずです。
   
     
   
    "name:mytoy,hint:0x8204,saddr:0x838470e5,daddr:0x00000b72"  
   
    表示される名前は Start、Setting、Communications、Identification で
    デバイス名として入力したものです。この時点で基本的な IrDA 機能は動
    作しており、次に WinCE 機との間の PPP 接続を動かす件に進みます。以
    降のスクリプトはシリアルケーブル接続でも使えます。以下記載のファイ
    ルを作成して、所定のディレクトリにコピーしてください。
   
/usr/sbin/cebox.sh - これ (以下のスクリプト) を実行可能にしておきます。
   
    #!/bin/sh                                                   
    pppd call cebox                                             
   
    マイクロソフトは規格を破るのが大好きなので、次のスクリプトが必要に
    なります。これは WinCE に PPP 接続を許す前に WinCE 機が要求する適切
    な ASCII キーワードを与えるためのものです。
   
/etc/ppp/cebox.chat
   
    TIMEOUT 3600                                                
    "CLIENT"    "CLIENT\c"                                      
    ""      "SERVER\c"                                          
   
    次のファイルは IP アドレスの指定、IR デバイス (またはケーブル使用の
    場合シリアルポート) の指定、DNS 等々の設定のためのものです。以下で
    使っている 192.IP アドレスを変更することはお勧めしません。 WinCE は
    実際のところ 192.168.55.100 が好きで、これはどの MS 社製のファイル
    同期ツールも WinCE 機はこのアドレスであると決め打っているためです。
    DNS については、普段あなたが使っている設定どおりとしてかまいません
    。
   
/etc/ppp/peers/cebox
   
    /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" (ここで /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                                         
   
    次のスクリプトは IrDA を設定し、WinCE 機との間で PPP 接続を確立し、
    IP マスカレーディングを設定します。これは、上記の設定をまとめて扱う
    例として収録したものです。但し、これは多かれ少なかれ全手動、のやり
    方です。もう少し生産的なやり方として、ブート時に irattach を立ち上
    げて、 inittab でラインを見て常時 IR ポートで WinCE の接続を見張る
    ようにもできますが、これはノートブックのバッテリをよけいに消費し、
    ほかの IR 機器との接続の妨げになります。このトレードオフを判断して
    、私は単に以下のスクリプトを使っています。デバイスを所定の位置に置
    いて、WinCE を走らせ、スクリプトの指示に従い PDA 側から通信を開始し
    ます。
   
/usr/local/bin/wince - これ (以下のスクリプト) を実行可能にしておきます
    。
   
    #!/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;                                                                         
   
     
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.9. Linux と WinCE 3.0 (PocketPC) をつなぐ

この章は Stanislav Sokolov さんの提供によります。

この章では、Linux マシンと PocketPC デバイスを接続する方法について扱い
ます。前の章「Linux と WinCE を接続する」(これは CEwindows <http://
www.cewindows.net/wce/linux-serial.htm> にも置かれています) は、
Microsoft が WinCE 3.0 から直接 IrDA と接続するためのサポートを削除する
挙にでているため、使えません。私はまず "Linux to Windows CE Connection"
(これは The Gadgeteer <http://www.the-gadgeteer.com/linux_ce.html> にあ
ります) を出発点にしましたが、さまざまな場所で変更と簡素化を行う必要が
ありました。この説では、PocketPC と Linux 間で ping ができるところまで
を扱います。ネットワーク用アプリケーションは、以下のサイトでいろいろ見
つかるはずです。 PDAcentral <http://www.pdacentral.com/wince/ftp.htm>、
CAM <http://www.cam.com>、 WinCEcity <http://www.wincecity.com>

私が試したシステムは、

 ・ Compaq iPAQ に PocketPC Version 3.0.9348 を搭載したもの (これが
    PocketPC 2002 で動作するかどうかはわかりません。なんと言っても、
    Microsoft はバージョン間で標準を変更するのが大好きなので)。
   
 ・ Linux 側は、Slackware Linux 7.1 を載せた Compaq LTE5250 ラップトッ
    プ。
   
 ・ Kernel 2.4.19
   
 ・ PPP 2.4.1 (PPP は kernel 2.4.x と組み合わせる場合、2.4.0 以前のもの
    は不可です)
   
 

PocketPC 側では、 Start -> Settings -> Connection -> Modem (英語版は。
日本語版は不詳ですが、これを参考にしてください) を開き、新しい接続 (new
connection) を作成し、適当な名前を付け (私は Linux-m としました)、汎用
のモデム (Generic IrDA modem) を選択し、ボーレートを 115200 に設定しま
す。ポート設定 (Port Settings) では、8-N-1-Hardware を選択し、手動でダ
イアルする (Enter dialing commands manually) にチェックを入れます。これ
は、必要もないのに PocketPC に電話のダイアルをさせないようにするためで
す。ほかの二つのチェックボックスはチェックしないままとしてください。
TCP/IP 設定では、サーバからの IP アドレスを使用する (Use
server-assigned IP address) を選択し、Slip を使用する (Use Slip) はチェ
ックせず、ソフトウェア圧縮を行う (Use software compression) と、IP ヘッ
ダ圧縮を行う (Use IP header compression) をチェックします。ネームサーバ
(name Servers) の項では、サーバの指定したアドレスを用いる (Use
server-assigned addresses) を選択します。"OK"、"次へ" の順に叩きます。
ここで電話番号を聞かれることがないはずです (聞かれた場合には、最初に戻
って高度な設定 (Advanced) セクションの "手動でダイアル" コマンドが選択
されているか再チェックしてください。呼び出しをキャンセルする (Cancel
call...) と、ダイアルトーンを待つ (Wait for dial tone...) がチェックさ
れていてはいけません。これで、PocketPC 側の設定は完了です。

Linux 側では、まず必要なモジュールがすべてロードされていることを確認し
てください。以下が、通信が成功するためにロードされ、使われるモジュール
の一覧です。

Module                  Size  Used by    Not tainted                   
ircomm-tty             31040   2                                       
ircomm                 13448   0  [ircomm-tty]                         
irtty                   7616   2                                       
ppp_async               6688   1                                       
ppp_generic            15740   3  [ppp_async]                          
slhc                    4592   1  [ppp_generic]                        

ls -la /dev/ircomm* の出力が以下のようになっていることを確認してくださ
い。

crw-------   1 root     root     161,   0 Nov 25 15:09 /dev/ircomm0    
crw-r--r--   1 root     root     161,   1 Nov 22 19:30 /dev/ircomm1    

irattach /dev/ttyS2 -sと入力して irattach を開始してください。

これで IrDA ポートがログインターミナル有効となったはずです。私はログイ
ン用に agetty を使っていますが、お好みの getty 相当プログラムが利用でき
ます。/etc/inittab に以下の行を追加します。

s3:2345:respawn:/sbin/agetty ircomm0 115200 vt100                      

ファイルをセーブして、init を再起動して有効にしましょう。

init 2; sleep 3 ; init 3                                               

接続の第二段階を行うため、以下のシェルスクリプトを用意しておきます。

#!/bin/sh                                                                          
/usr/sbin/pppd -detach noauth local lock 192.168.55.1:192.168.55.2 ircomm0 115200 &

 

さて接続を行いましょう。まず赤外線ポートの位置あわせを行い、PocketPC 側
で "開始 (Start)" -> "プログラム" -> "接続 (Connections)" から、作成し
た接続 (Linux-m) を叩きます。現れる "接続先 (Connect To)" ダイアログで
は、何も入力せずただ "接続 (Connect)" を叩きます。 "手動ダイアルターミ
ナル (Manual Dialing Terminal)" が現れて、Linux マシンのログインプロン
プトがでるはずです (すぐにログインプロンプトがでない場合には、仮想キー
ボードを立ち上げて "Enter" を押してください)。ログインする必要はありま
せん (これはおまけです。究極のリモートコントローラという訳です :)

Linux マシン側では、PocketPC ターミナルにゴミが出たらすぐに pppd コマン
ドを実行し、PocketPC 側で "ファイル(File)" -> "続行 (Continue)" を行い
ます。 pppd では以下のメッセージがでるはずです。

Using interface ppp0                                                   
Connect: ppp0 <--> /dev/ircomm0                                        
Cannot determine ethernet address for proxy ARP                        
local  IP address 192.168.55.1                                         
remote IP address 192.168.55.2                                         

PocketPC 側で "ステータス：接続中 (Status: Connected)" のダイアログボッ
クスが表示されるはずです。 ifconfig を実行して ppp0 インターフェースが
揚がって動作していることの確認ができます。 ping 192.168.55.2 では以下の
ような出力がされるはずです。

PING 192.168.55.2 (192.168.55.2): 56 data bytes                        
64 bytes from 192.168.55.2: icmp_seq=0 ttl=32 time=62.5 ms             
64 bytes from 192.168.55.2: icmp_seq=1 ttl=32 time=310.0 ms            
64 bytes from 192.168.55.2: icmp_seq=2 ttl=32 time=59.9 ms             
64 bytes from 192.168.55.2: icmp_seq=3 ttl=32 time=59.8 ms             
64 bytes from 192.168.55.2: icmp_seq=4 ttl=32 time=60.0 ms             
                                                                       
--- 192.168.55.2 ping statistics ---                                   
5 packets transmitted, 5 packets received, 0% packet loss              
round-trip min/avg/max = 59.8/110.4/310.0 ms                           

RTT は距離と光の状況で変わります。切断 (Disconnect) か、相当のボタンに
より、以下が出力されます。

LCP terminated by peer                                                 
Modem hangup                                                           
Connection terminated.                                                 
Connect time 2.6 minutes.                                              
Sent 1336 bytes, received 1274 bytes.                                  

 

ここまでの手順がうまくいかないなら、以下をチェックしてください。

 ・ getty が開始している。/dev/ircomm0 が設定されていない場合には、開始
    できません。これは getty 起動の前に modprobe ircomm-tty を行う必要
    があるということです。
   
 ・ 手動でダイアルする (Enter dialing commands manually) がチェックされ
    ている。 PocketPC に電話番号をダイアルさせてはいけません!
   
 ・ 非同期 PPP サポートがカーネルに組み込まれているかを確認します。 
    modprobe ppp_async が正しくロードされない場合、非同期 PPP サポート
    がカーネルに組み込まれていません。組み込まれていない場合、
    "Couldn't set tty to PPP discipline: Invalid argument" というエラー
    メッセージが出力されます。
   
 ・ pppd は setuid root でなければいけません。 chmod u+s /usr/sbin/pppd
    .
   
 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.10. 携帯電話接続

私の知る限り、一部の携帯電話は IrCOMM 標準を採用しています。Ericsson
SH888 と NOKIA 6110 がそうです (NOKIA 8110 については分かりません)。恐
らく、他の携帯電話は IrOBEX 標準 (これに対して接続を確立するやり方は
Palm III の章を参照してください) か IrMC を採用していると思われます。
Linux と携帯電話の接続に関する全般的な情報が知りたければ、 TuxMobil
<http://tuxmobil.org/phones_linux.html> をご覧下さい。IrCOMM を使って
PPP モデム接続を立ち上げることも、OpenOBEX を用いてファイル (アドレス帳
エントリ、絵文字、着信音など) の送受を行うこともできます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.10.1. 概説

この章では、IrDA を用いた Linux マシンと携帯電話間の接続の方法を説明し
ます。これは Matthias Schmidt さんからの報告が主体となっています。また
、以下の携帯電話でテストされています。

 

 ・ Ericsson T39m
   
 ・ Siemens S25
   
 ・ Siemens S35i
   
 ・ Siemens ME45
   
 ・ Nokia 6110
   
 ・ Nokia 6210
   
 

IrDA の基本部 (カーネル設定、/etc/modules.conf, irattach, PPP) を、これ
までの節で記載したとおり設定します。PPP に関しての詳細は、 PPP-HOWTO
<http://tldp.org> も参照ください。次に、携帯電話が認識されているかどう
かをチェックします。

# irdadump                                                                                     
xid:rsp be1eb736 > 08666644 S=6 s=4 SIEMENS S35 hint=9024 [ Modem IrCOMM IrOBEX ] (28)         
# irdadump                                                                                     
xid:rsp be1eb736 > 35450000 S=6 s=4 Nokia 6100 hint=8101 [ PnP Telephony ] (28)                
# irdadump                                                                                     
xid:rsp be1eb736 > 04489982 S=6 s=5 SIEMENS ME45 hint=b124 [ PnP Modem Fax IrCOMM IrOBEX ] (29)

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.10.1.1. PPP ダイアルアップソフトウェア

3.10.1.1.1. minicom

ISP と接続する方法はいくつかあります。もっとも基本的な (そしてしばしば
唯一の) 方法は、minicom のようなターミナルプログラムを使うことです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.10.1.1.2. wvdial

もう少し楽がしたい場合には、 wvdial <http://www.worldvisions.ca/wvdial
/>. が使えます。これは設定が容易で、多数のローミングプロバイダとドイツ
の Tante T gh0st で動作します。私も昨日多少テストしましたが、wvdial で
は HRZ のダイアルインサーバに接続することはできませんでした。wvdial は
毎回 "Bad password" と答えますが、これはサーバが携帯電話用のソフトモデ
ムが login とパスワードの文字列を送るより早く反応するためです。標準の
ppp 設定は以下です。 /etc/wvdial.conf:

[Dialer Defaults]                                                      
Modem = /dev/ircomm0                                                   
Baud = 9600                                                            
Init1 = ATZ                                                            
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0                              
Password = internet                                                    
Username = internet                                                    
Phone = 00393492002800                                                 
ISDN = 0                                                               
Modem Type = Analog Modem                                              
                                                                       
[Dialer shh]                                                           
Init3 = ATM0                                                           

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.10.1.1.3. PPP Tools

wvdial での問題 (上記参照？) のため、個人的には最良の方法は標準の PPP
tools <ftp://ftp.linuxcare.com.au/pub/ppp/> を使うことだと思います。こ
れは pppconfig コマンドで設定し、pon で開始、poff で切断します。

以下は irda という接続名で PPP 接続を行う場合の例です。 /etc/ppp/
pap-secrets

# username      connection-name password                               
test    irda            test                                           

/etc/ppp/peers/irda

hide-password                                                          
noauth                                                                 
connect "/usr/sbin/chat -v -f /etc/chatscripts/irda"                   
debug                                                                  
/dev/ircomm0                                                           
9600                                                                   
defaultroute                                                           
noipdefault                                                            
user test                                                              
remotename irda                                                        
ipparam irda                                                           
usepeerdns                                                             

/etc/chatscripts/irda

ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE'          
ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT DELAYED                   
'' ATZ                                                                 
# dial-in number of the ISP                                            
OK-AT-OK ATDT<YOUR_ISP_PHONE_NUMBER>                                   
CONNECT \d\c                                                           

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.10.1.2. 絵文字や着信音や SMS などなど

携帯電話と IrDA 接続ができるようになったならば、それを使って楽しめます
。情報を取得したり、SMS にアドレス帳を格納したり、SMS を送信したり、絵
文字を追加 (BMP 形式です) したり、ハードディスクに古い絵文字を待避した
り、同様の処理を着信音 (MIDI 形式です) に対して行えます。これらの楽しみ
をおこなうには、以下のものが必要です。

 

 ・ OBEX 通信可能な携帯電話。たとえば Siemens 社のもの
   
 ・ 動作する IrDA 接続
   
 ・ scmxx <http://www.hendrik-sattler.de/scmxx/> ツール
   
 ・ gscmxx (オプション)
   
 

まず、携帯電話を IrDA サービスにバインドします。

                                                                       
# irattach /dev/ttyS1 -s                                               
IrDA: Registered device irda0                                          

 

接続を確認します。

# irdadump                                                                            
xid:cmd 9d5dcefa < ffffffff S=6 s=3 (14)                                              
xid:cmd 9d5dcefa < ffffffff S=6 s=4 (14)                                              
xid:rsp 9d5dcefa > 08666644 S=6 s=3 SIEMENS S35 hint=9024 [ Modem IrCOMM IrOBEX ] (28)

 

携帯電話の情報を表示します。

# scmxx -i                                                             
Accessing device /dev/ircomm0                                          
OK, a modem device is present.                                         
Vendor:         SIEMENS                                                
Model:          S35i                                                   
Revision:       20                                                     
Serial (Phone): xxxxxxxxxxxxxxx                                        
Serial (SIM):   xxxxxxxxxxxxxxx                                        
SIM-ID:         xxxxxxxxxxxxxxxxxxxxx                                  
Operator:       D2                                                     
SMS Server:     +491722270333                                          
Charset:        GSM                                                    
Battery:        40%                                                    
Signal/BER:     -79 dBm/?                                              
Time:           02/10/07,11:48:49                                      
Readable Slots: bmp: 0-1, mid: 0, vcs: 1-30                            
Phonebooks:     FD, SM, ON, ME, LD, MC, RC, OW, MS, CD, BL, RD, CS     
SMS storages:   SM                                                     

 

アドレス帳をディスクにセーブします。

# scmxx -g -PSM -f phonebook                                           
Accessing device /dev/ircomm0                                          
OK, a modem device is present.                                         
Detected SIEMENS S35i                                                  
phonebook created.                                                     
Receiving: 1 2 3 4 5 6 7 8 9 [...]                                     
Received all gettable entries                                          

 

SMS を表示します (ここではスロット 3 です)

# scmxx -g -S3 -f -                                                    
Accessing device /dev/ircomm0                                          
OK, a modem device is present.                                         
Detected SIEMENS S35i                                                  
Looking for SMS of specified type...                                   
Receiving incoming, read SMS from slot 3.                              
Slot: 3                                                                
From: xxxxxxxxxxxxxx                                                   
Date: 2002-10-03 23:11:47 (GMT+0)                                      
SMSC number: xxxxxxxxxxxxxxxx                                          
PDU type: SMS-DELIVER MMS                                              
Data Coding Scheme: 7bit-GSM                                           
Message length: 160                                                    
Message:                                                               
        xxxxxxxxxxxxxxxxxxxxxxxxxx                                     

 

現在の絵文字をディスクにセーブします。

# scmxx -g -B0 -f logo.bmp                                             
Accessing device /dev/ircomm0                                          
OK, a modem device is present.                                         
Detected SIEMENS S35i                                                  
Slot 0...                                                              
Receiving packet 1 of 5...                                             
logo.bmp created.                                                      
Receiving packet 2 of 5...                                             
Receiving packet 3 of 5...                                             
Receiving packet 4 of 5...                                             
Receiving packet 5 of 5...                                             
File transfer complete.                                                

 

現在の着信音をディスクにセーブします。

# scmxx -g -M0 -f sound.mid                                            
Accessing device /dev/ircomm0                                          
OK, a modem device is present.                                         
Detected SIEMENS S35i                                                  
Slot 0...                                                              
Receiving packet 1 of 1...                                             
sound.mid created.                                                     
File transfer complete.                                                

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.10.2. OBEX 接続

以下の OpenOBEX の節を参照ください。携帯電話での OBEX 接続の詳しい情報
も近く追加予定です。また、接続設定に関しては Palm III の節の情報を参考
にしてください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.10.3. 特定の携帯電話関連の情報

3.10.3.1. Motorola

Michael McConnell さんから Motorola Timeport GSM と Linux-IrDA とが話せ
るようにするためのガイドを彼のウェブサイト < http://www.eridani.co.uk/
docs/linux-timeport/> に掲示したとの投稿がありました。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.10.3.2. Ericsson

T39 ユーザ (たぶん T300 も) への注記: Jean Tourrilhes さんのサイト
<http://www.hpl.hp.com/personal/Jean_Tourrilhes/IrDA/index.html> をチェ
ックしてください。カーネルパッチを行い、 /proc/sys/net/irda/
max_tx_window をいじる必要があります。

1. 設定
   
    /dev/ircomm0 を用いて通信セッションを開始するには、たとえば以下のよ
    うにします。
   
     
   
    dip -t                                                      
    > port ircomm0                                              
    > term                                                      
   
    多分 dip の代わりに cu や xc を使うこともできるでしょう。そのときは
    cu -l /dev/ircomm0 または xc -l /dev/ircomm0 とします。 Ericsson
    GF768 と IR Modem DI 27 の組み合わせを試行中との報告もありました。
   
    Benny Amorsen さんによると「SH888 はシリアルケーブル接続の際に IrDA
    ポートをエミュレートします。設計者がなぜこんな妙なことを考えたのか
    はちょっと想像もつきませんが、Windows との組み合わせで動かすにはこ
    のやりかたを使います。私は Windows で動かそうとしたことはありません
    けど」
   
    Ales Dryak さんから以下のサーベィを貰いました (Debian/GNU Linux デ
    ィストリビューションのようなので、設定を適宜書き替えてください)。
    Mobile Ericsson SH888 は ati1 = 980408 1035 PRGCXC125101 で、
   
     
   
    mknod /dev/ircomm0 c 161 0                                  
    mknod /dev/ircomm1 c 161 1                                  
   
    とします。
   
2. /etc/conf.modules
   
    /etc/conf.modules は次のとおり
   
    alias tty-ldisc-11 irtty                                    
    alias char-major-161 ircomm-tty                             
   
3. /etc/irda/drivers は次のとおり
   
    irattach /dev/ttyS0 -s # (IrDA ポートは SIR モード)         
   
4. /etc/chatscripts/sh888 は次のとおり
   
    <ABORT stuff>                                               
    "" \d\d\d\d\d\dATZE0                                        
    OK ATD<phone number to call)                                
    CONNECT \d\c                                                
   
5. /etc/ppp/peers/sh888 は次のとおり
   
    noauth                                                                                 
    connect "/usr/sbin/chat -v -f /etc/chatscripts/sh888"                                  
    /dev/ircomm                                                                            
    115200                                                                                 
    defaultroute                                                                           
    noipdefault                                                                            
    user <your username> # don't forget to add your password to chap secrets or chat script
   
     
   
SH888 に対して pppd 呼び出し (pppd call sh888) を行い、少し待った (だい
たい 30 秒) 後は、私たちのイントラネットとインターネットに対して自由に
アクセス (telnet、ftp、www、icmp はテストしました) できるようになってい
ます。さらには /dev/ircomm で minicom を使って AT コマンドを打ち込める
ようになります。ばっちりです。また安定に動作するようです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.10.3.2.1. ツール

Gerhard Gonter さんの報告です「メーリングリストの数名のメンバが
Ericsson 社の携帯電話 SH888 を Linux-IrDA ソフトウェアで使うことに成功
しています。このソフトウェアは AT コマンドを使って電話の各部にアクセス
でき、とても役に立ちます。内蔵の電話帳は興味深い操作対象でしょう。 

インターネットで少々検索した (FreshMeat、Deja、Yahoo など) 範囲では、
Linux またはその他の Unix 向けの、電話帳のツールを見つけることはできま
せんでした。というわけで、小さな Perl スクリプトと関連モジュールを書い
てみました。現在個人的には使える処まで来ましたので、整理して開発の初期
段階としてのリリースを行います。tarball は次のところ <http://
falbala.wu-wien.ac.at:8684/pub/english.cgi/0/172903> にあります。」

メーリングリストでは gsmlib の同時使用が推奨されていましたが、これを赤
外線ポートで使うことも、私の SH888 と接続することもできていません。
Florian Lohoff さんの報告では「S25 の種の携帯電話では動くようです。ただ
、S25 が CR LF に反応しないようなので ifdef を変更する必要はありました
。その変更後、/dev/mobilephone -> /dev/ircomm で張ったリンクで S25 経由
での SMS 送信は問題なく行えています。電話帳のバックアップはまったく動い
ていません。これは電話帳が空の場合に S25 がわけのわからない応答を返すた
めです」

SMS メッセージと電話帳の詳細仕様は、無料 (FSF の意味でのフリー、ではな
く ;-) で ETSI からダウンロードできます。GSM 07.07 (それと、多分 GSM
07.05 も必要になるでしょう) を探してみてください。ダウンロードする前に
登録が必要です。この標準は Acrobat PDF 形式です。S25 がサポートするコマ
ンドは無料で Siemens のウェブサイトに PDF 形式であります。

SH888 の AT コマンドをまとめて解説した文書が Ericsson のサイトの
888_R1D.pdf <http://mobileinternet.ericsson.se/emi_download/sh888/
888_R1D.pdf> にあります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.10.3.3. NOKIA

Carlos Vidal さんによると「私の勘違いなら教えてほしいんですが、どうやら
Nokia の携帯電話には純粋なハードウェアモデムは搭載されておらず、PC の
WinModem と同じ類のものが載っているようです。Nokia がモデム接続のことに
ついて書いている個所には毎回 "Windows ソフトウェアモデム" とか、それに
類する語が使われています。これに加えて傍証として、この携帯電話には
Nokia 専用のウィンドウズ向けソフトウェア (Nokia Cellular Data Suite と
いう名称です) が必要ですし」

Joonas Lehtinen さんによると「61xx シリーズの機種では、確かにそうです。
8810、9000(i) と 9110 の各機種は問題なく動作します (つまり、本物のモデ
ムを内蔵しています)。私の Nokia 9000 は linux との組み合わせでは IrCOMM
と答えます」

Carlos Vidal さんからの試行と修正案は「私の Nokia 6110 で Linux を使っ
てどこまでできるか試してみています。ちょうど gnokii-0.2.4 [8] をコンパ
イルしたところですが、これは動きませんでした [9]。手元に Nokia Data
Suite ソフトウェアがあるので、これまでに以下の接続を試しています。

Nokia 6110 <-- Nokia Cable --> PC/Linux <-- Null-modem cable --> PC/W95

PC/Linux では program snooper (Itoh Jun-ichiro (いとじゅん) さん作) を
シリアルポートを正しく設定できるよう小変更を加えて使っています。これ以
外の同様の動作を行えそうな sniffer ソフトウェア (たとえば sniffit) の
URL は見つけられませんでした(原注: シリアルスニファについては付録参照)
。

通常は snooper が正しいボーレートに設定されているなら、電話と PC/W95 は
snooper が間にない場合と同じように通信できるはずです。これはミノルタの
ディジタルカメラのプロトコルを解読した際にはうまく動いたのですが、Nokia
の携帯電話の場合、電話のほうが応答しないか、しばらくだんまりになってし
まいます。

どうやら、通信の最初の段階ではタイミングがきわめて重要なようです。これ
までで得られたログは次のものです。

0>1: UUUUUUUUUUUUUUUUUUUUUUUU                                                   
line 0: LE *DTR *RTS ST SR CTS CD RI *DSR                                       
line 1: LE *DTR *RTS ST SR CTS CD RI *DSR                                       
0>1: UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 
UUUUUUUUUUUUUUU\x1e\x00\x0c\x02\x00\x09\x00\x01\x00\x0d\x00\x00\x02\x01@\x00P\x 
06                                                                              
1>0: \x18\x00\x00\x00\xfc\x18\x00\x00\x00\x00\x00\x00\xc0\xf0                   
0>1: \x1e\x00\x0c\x02\x00\x09\x00\x01\x00\x0d\x00\x00\x02\x01@\x00P\x06         
1>0: \x18\x00\x00\x00\x18\x00\x00\xc0\xf0\x18\x00\x00\x00\x00\x00\x00\xc0\xf0   
0>1: \x1e\x00\x0cd\x00\x06\x00\x01\x00\x10\x01`\x13\x13                         
1>0: \x18\x00\x00\xf0\x00\x00\xfc                                               
0>1: \x1e\x00\x0cd\x00\x06\x00\x01\x00\x10\x01`\x13\x13                         

0 は PC/95 で、1 は電話です。通信は一連の 'U' (0x55) で、DSR/DTR が on
の状態で始まります。電話は '0x18 0x00 ...' と答えます。この一連の会話は
しばらくの間、両方ともだんまりになるまで続き、最後には電話がクラッシュ
してリセットする唯一の方法は電池を抜くだけ、という状態になります。

私の推定では、電話が正しいボーレートを見つけようとし、それが snooper を
入れたことに伴う遅れのため失敗している、という現象ではないかと思います
。恐らく赤外線接続で用いている IrDA プロトコルで何かしないといけないの
ではないかと思っています」

Wessel de Roode さんによると「私は (Palm Pilot では) Discovery IR hint
ビットを使うようにしています。

Discover:                                                              
0:xxxxxxxx:81.01                                                       
    01  IR_HINT_PNP     01  IR_HINT_TELEPHONY (IrMC ?)                 
    80  IR_HINT_EXT                                                    
                                                                       
Device info query:                                                     
\006Device\012DeviceName                                               
    4e 6f 6b 69 61 20 36 31 30 30       Nokia 6100                     

Nokia の PNP デバイスクエリができるようにもしました。Nokia は一台の PNP
デバイスを持っています。このデバイスは具体的には 9600 ボーのモデムに相
当する PNPC100 です。このクエリの設定を消してしまったので、回復するため
のヒントを持っている人は教えてください。確か IrDA:<dunno>:PNP:Comp#01
のようなものだったはずです。同じ IrDA のクエリの IrDA:<dunno>:PNP:
CompCnt は Nokia で使える PNP デバイス数を返します。ここではこれはひと
つだけです。

ほかにも SMS メッセージを送受したり、アドレス帳を更新するのに gsmlib を
使うことに関する報告を受けています。これらの機能は、細かい文字集合の問
題を除いて動作しています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.10.3.3.1. おすすめのツール

gnokii <http://www.gnokii.org> は Linux/Unix 向けツール群で、もうすぐ
Nokia (GSM) 携帯電話用の modem/Fax ドライバとして使えるようになります。
サポートされている端末は 3110、3810、8110、5110、6110 と、その後継機種
です。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.10.3.4. Siemens S25

設定
   
    これは Florian Lohoff さんによるものです。「一歩一歩すすめましょう
    。まず irttach /dev/ttySx 等で irda が動くようにしておいてください
    。次に /proc/net/irda/discovery を実行してみて次のようになっている
    か見てください。
   
     
   
    (flo@paradigm)~# cat /proc/net/irda/discovery                            
    IrLMP: Discovery log:                                                    
    nickname: SIEMENS S25, hint: 0x9024, saddr: 0x4286ce23, daddr: 0x04295741
   
    次に ircomm と ircomm-tty をロードします。普通は /dev/ircomm* の正
    しいものを使って minicom などでダイヤルや、電話帳のロードやバックア
    ップが容易に行えるはずです」
   
Timo Felbinger さんが東芝のラップトップと Siemens S25 の接続について説
明してくれています。

 

 ・ 「kernel 2.2.12 と patch-2.2.12-irda3、カーネル組み込みの IrDA サポ
    ートと ircomm と ircomm-tty をモジュールで用意します。
   
 ・ mknod /dev/ircomm0 c 161 0 とします。
   
 ・ modprobe ircomm と modprobe ircomm-tty をおこないます。
   
 ・ /etc/irda/drivers の最初の部分に modprobe toshoboe を記載しておき、
    irattach を開始します。ここで注意しておきたいのは、irattach の前に
    toshoboe モジュールをロードしないこと。さもないとデバイスビジーやリ
    ソースビジーになります。
   
 ・ dip -t の後、コマンドポート ircomm0 と S25 間で接続が成立しているは
    ずです。ここで、IR ポートと S25 のどちらも起動されている必要がもち
    ろんあります。この時の距離はあまり問題にはならないようです。
   
 ・ ターミナルを立ち上げれば、S25 は普通の Hayes 互換モデムのように振る
    舞い、通常の AT コマンドで使用できます。
   
 ・ pppd によるダイアルアウト接続は特に設定しなくとも使えます」
   
 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.10.3.4.1. おすすめのツール

SCMxx <http://www.hendrik-sattler.de/scmxx> は Siemens 社の携帯電話との
間でファイルの送受と、格納されているファイルの消去ができます。ファイル
は指定された名前のファイルまたは標準入力から読み込むことができ、指定さ
れた名前のファイルまたは標準出力に書き出せます。 SMS は携帯電話に格納す
ることなく直接送受できます。SCMxx は Siemens 社製のいくつかの携帯電話
(S25 とその後継機だけです) でテストされています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.10.4. ドイツ e-plus

以下はドイツの e-plus ユーザ向けの記述です。

e-plus 契約には Free&Easy を除いて WWW への PPP 接続が含まれており、別
の登録は必要ありません。このサービスは電話番号 123100 でドイツ国内のど
こでもつかえます。また、これは買ってきて直ぐに使えます。

pppd 設定は

/dev/ircomm0                                                           
defaultroute                                                           
netmask 255.255.255.0                                                  
debug                                                                  
mtu 552                                                                
crtscts                                                                
noauth                                                                 
connect '/usr/sbin/chat -v -f /etc/ppp/eplus.chat'                     
chat script /etc/ppp/eplus.chat:                                       

 

ABORT "BUSY"                                                           
ABORT "ERROR"                                                          
ABORT "NO CARRIER"                                                     
ABORT "NO DIALTONE"                                                    
ABORT "NO ANSWER"                                                      
SAY "initializing modem..."                                            
"" "AT"                                                                
"OK" "ATZ"                                                             
SAY "dialing..."                                                       
"OK" "ATDT123100"                                                      
SAY "waiting for CONNECT..."                                           
"CONNECT" ""                                                           
SAY "connected!"                                                       
SAY ""                                                                 

ネームサーバとしては 192.76.144.66 を使えます。ユーザ名やパスワードは不
要です。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.11. デジタルカメラ接続

Markus Schill さんによると「SONY の DSC-F1 赤外線アダプタを linux で使
うことに興味のある方がこんなにいるのに元気付けられます。現在のところ、
まだ linux-irda ソフトウェアとカメラ付属の PuMa Technologies 社の IR ア
ダプタで遊んでいるだけです。現在までの状況は、次のとおりです。現在のと
ころ linux 2.0.33 と最新の linux-irda を使っています。その状況で次のコ
マンドを入力すると、

modprobe irda                                                          
modprobe irtty                                                         
irattach /dev/ircomm0                                                  

アダプタはカメラとのやり取りをはじめます。/var/log/messages には
SONY-DSC-F1 が見つかったというログが出ますが、サービスは何も開始されま
せん (原注: これは linux 2.2.x カーネルと Linux/IrDA の組み合わせでは、
多分違う状況になると思います)。

linux のケーブル接続環境で、カメラとの通信に使えるソフトウェアは２つあ
ります。 (1) chotplay と (2) stillgrab です。この両方とも tty をコマン
ド行オプションとして指定しますので、irtty プロトコルスタック層でも動く
のではないかと思います。ただし、今のところ linux-irda のソースにはあた
っていません。このためスタックを理解できているとはいえませんが、irtty
を使うと普通の tty のような感じになるのですよね? その際にどんなサービス
を開始すべきなんでしょう？」

Dag Bratti さんによると「カメラの使っているアプリケーションレベルのプロ
トコルについてはよくわかりませんが、 IrDA(TM) の Infrared Transfer
Picture Specification (IrTran-P) を実装している可能性はあります。 
IrTran protocol <http://www.irda.org/standards/pubs/IrTran-P_10.pdf> を
みれば、これは IrTTY ではなく IrCOMM 上に実装されたプロトコルであること
がわかると思います。 IrTTY は Linux シリアルドライバと話すために使って
いるだけだと思います」

David Burley さんの Kodak-Digital-Camera-HOWTO には、IrDA を動かすやり
方の記載と、Linux と IrDA を使って Digital OS カメラとの通信を実装する
方法についての記載が含まれるようになりました。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.12. Microsoft-Windows と Linux/IrDA

3.12.1. はじめに

この節の目的ですか? それは、つまるところ Linux ユーザには残念ながらすべ
ての必要なハードウェア情報が与えられているわけではありません。時にはこ
の情報が Window$95 を調べることによって窺えることがあります。また、時に
はこの二つが通信できるようにすると便利なこともあります。また Linux を使
って、友達が立ち寄った際に Windows 95 ラップトップのための一時的なアク
セスポイントを提供することもできます。

どこから入手するかについてですが、 MicroSoft <http://www.microsoft.com>
のディレクトリ /Windows95/downloads/contents/WURecommended/
S_WUCommunications/W95IrDA/ 以下に Infrared Transfer (赤外線通信サポー
ト) 2.0 のサポートパックがあります。これは自己展開型のアーカイブで、名
称は W95IR.EXE、331KB あります。ちなみに、マイクロソフトはこのファイル
(その他のファイルについても同じですが) の置き場所を気まぐれに変えます。
以前の URL は Microsoft Windows95 IrDA - Old でした。

Microsoft(tm) は Windows95 用の IrDA サポートでは都合３つのバージョンを
リリースしています。バージョン番号はコントロールパネルのソフトウェアの
アイコン、および infrared.inf ファイル中にあります。

バージョン 1.0 はまだ一部のハードウェアの添付ソフトウェアの形で配布され
ています。

バージョン 2.0 は現在 Microsoft のウェブサイトで配布されているバージョ
ンです。これは自己展開型のファイル W95IR.EXE に収録されています。最後に
私が見たときには、これは 434KB で W95IR.EXE <http://
support.microsoft.com/download/support/mslfiles/W95IR.EXE> にありました
。Microsoft のウェブサイトは頻繁に変更されていますので、このファイルが
別な場所にあったり、なくなっていたりしても驚かないでください。

バージョン 3.0 はダウンロード可能な赤外線開発キット IRDDK30 に含まれて
います (いました)。ただしこれが役に立つのは開発者にほぼ限られます。これ
は内部的にも 2.0 とは違っており、Linux バージョン同様 "miniport" ネット
ワークドライバベースです。これは少し前からあり、NT も部分的にサポートし
ていますが、明らかに NT4.0 の主ディストリビューションには含まれませんで
した。 Windows 95 向けには 2.0 のほうが恐らく適しています。但し、あなた
の入手した特定のハードウェアのドライバの説明書に従って選択を行う必要が
あるかもしれません。

MS のウェブサイトには役に立つユーティリティの IrXfer が、IRXFER.EXE ア
ーカイブに収録される形で置いてありました。これは赤外線転送ユーティリテ
ィで、私の知る限り IrOBEX の一種 (IrOBEX プロトコル仕様書による) を使っ
ています。このユーティリティは自由にダウンロード可能なものでしたが、最
後に見たときには見つけることができませんでした。これは良質のグラフィカ
ルインターフェースを持つユーティリティで、IrDA を使ってコンピュータ間で
ファイルの転送を行えます。 

一部のラップトップ機、たとえば HP Omnibook 800 では、このパッケージにベ
ンダで手を入れたものを使う必要があります (HP Omnibook 800 ではリカバリ
CD に収録されています)。

特に、..\windows\inf\*.inf ファイルとデバイスマネージャは、設定の詳細を
知るために参考になります。

私の知る限り、Windows NT は IrDA(TM) をサポートしていません。Windows 98
については、私が聞いた範囲では IrDA はまだサポートされていません。 
Countersys 社 <http://www.countersys.com> は自社の JetBeam 製品向けに
NT4.0 向けの IrDA を販売しているということで、 Microsoft も JetBeam 向
けにはそれを使ってくださいといっています。

以下は私の知る限り、ですが

 ・ Windows95 : 2.0 を使用
   
 ・ Windows98 : 3.0 と IrXfer が付属 (Linux/IrDA で動作。IrOBEX で多分
    動作) 
   
 ・ WindowsNT4.0: IrDA サポートなし
   
 ・ Windows2000 : 3.0(+?) MicroSoft <http://www.microsoft.com/hwdev/
    infrared/>
   
これ以外に M$ 社以外からの製品がいくつかあります。注意点として、これら
のいくつかは専用の特殊なプロトコルを使っています。

 ・ Extended Systems: QuickBeam 1.15 (Linux/IrDA, IrOBEX で動作) [10]
   
 ・ Laplink: LapLink 7.5 [11]
   
 ・ Altiris: CarbonCopy 32 4.0[12]
   
 ・ Symantec: pc ANYWHERE 7.5[13]
   
 ・ Puma Technology: TRANXIT pro 4.0[14]
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.12.2. Linux/IrDA と MS-Windows95 IrDA(TM) 間の接続

IrNET <http://www.hpl.hp.com/personal/Jean_Tourrilhes/IrDA/index.html>
が使えます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.12.3. MS-Windows98 機と Linux 間の通信

Ha Duong Minh さんによると「今日、 OpenOBEX project <http://
sourceforge.net/projects/openobex/> の ircp について報告できることを嬉
しく思います。 ircp は現在、linux マシンと win98 機との間で魔法のように
ファイルの転送ができています。これ以上簡単にはできない、という方法で。 
ircp file1, file2, ... または ircp -r [DEST] とやれば IrDA でファイル転
送ができます。受信するには -r を使ってください」

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.12.4. MS-Windows2000/XP 機と Linux 間の通信

Windows 2000 と XP 向けには、Jan Kiszka さんによるドライバ IrCOMM2k
<http://www.stud.uni-hannover.de/~kiszka/IrCOMM2k/English/> があります
。これは、シリアルポートをエミュレートする物で、モバイルデバイスとの間
のデータ交換に利用できます。たとえば、一部の携帯電話をモデムやファック
ス機器のように振る舞わせることができます。また、赤外線ポートを持つ PDA
と PC との間のファイル同期をとることもできます。IrCOMM2k は GPL ライセ
ンスのオープンソースプロジェクトです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.13. Linux と Linux の接続

3.13.1. 接続用モジュール

Linux/IrDA で２台の linux マシンを接続するには４とおりの方法があります
。

 

 1. Dag Brattli さんが IrOBEX サポートについて書いています「目をぱっち
    り開けているユーザなら、Linux 間でファイルを IrDA で送信できない理
    由が何かと首を傾げているかもしれません。実のところ、そんな理由は何
    もありません (私自身はまだ試していませんが)。つまり、linux ラップト
    ップ間でファイルを送受する簡単な方法が、既に手持ちにあるということ
    です。これはひょっとすると、待ち望まれている "キラーアプリケーショ
    ン" なのかもしれません。"load_misc irobex" と両側のマシンで実行して
    、一方の側で "iroabex_app get" とし、他方で irobex put <file> とし
    てください」
   
 2. Linux/IrDA のネットワーク接続を用いて。多分 irlan_client を一方のマ
    シンで、 irlan_server を他方のマシンでロードする必要があると思いま
    す。
   
 3. IrCOMM サポートを用いた場合、言い換えるとシリアルライン上の場合、
    minicom や pppd などを使うことになります。単に IrCOMM だけを二台の
    Linux マシン間で使う場合、＊一方＊のマシンの /etc/conf.modules に以
    下の行を付け加えてください。
   
    # set ircomm protocol engine to client-only mode            
    options ircomm ircomm_cs=1                                  
   
    この行を両方のマシンに加えてはいけません。さもないと、両方とも相手
    からの通信を受け付けることができなくなります。またカーネル 2.2.7 以
    降では /etc/conf.modules に ircomm_cs=1 を加える必要はなくなってい
    ます。この指定を使っている場合、削除してください。
   
 4. IrNET: 次の IrNET リンク <http://www.hpl.hp.com/personal/
    Jean_Tourrilhes/IrDA/index.html> 参照。
   
 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.13.2. 圧縮について

この機能はまだ全く実験中のものであることに注意してください。Dag Brattli
さんによると「とりあえず圧縮サポートを IrLAP に加えたことをお知らせしま
す。ご存じかと思いますが、これは IrDA(TM) 標準の一部では＊ありません＊
が、 Linux 間では通信路で同じ圧縮機能があるかどうかのネゴシエーションを
行うことができます。このため、Win95 や Palm III その他との間では、全く
圧縮機能は使えません。これは私の知る限り Linux のみ、の機能です。 IrDA
(TM) 標準では、デバイスは協議用のヘッダの未定義部を無視すべきとなってい
ますので、この機能は IrDA(TM)『互換』です (未使用のヘッダの値を使ってい
るため)。

圧縮コードを試してみたい (Linux <-> Linux で) 場合、実際に接続を行う前
のどこかの時点で irda_deflate モジュールをロードしてください。私は
irattach の前に行っています。

ここで加えている圧縮は、RFC (Request for Comments) 1950 から 1952 まで
で規定された圧縮標準の実装である zlib ライブラリを使っています。詳細に
ついては ftp://ds.internic.net/rfc/rfc1950.txt (zlib フォーマット)、
rfc1951.txt (伸張フォーマット)、rfc1952.txt (gzip フォーマット) の各
RFC を参照下さい。

圧縮インターフェースは PPP と似ており、いろいろな圧縮機能を好きなだけイ
ンストールできます。現時点では GZIP のみがサポートされていますが、BSD
圧縮も後で加わるでしょう。とりあえず GZIP 圧縮を 4Mbps で試したところで
す。これは大失敗で、フレームの圧縮にあまりにも時間がかかったため、性能
は圧縮を使わないときより実際のところ劣化しました。結論としては、圧縮は
SIR 速度でだけ使うべきだ、ということでしょう」

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.14. 複数デバイスの同時使用

Dag Brattli さんによると「IrLAP レイヤは複数のデバイスを扱えるように拡
張されています。従って、内部 IR ポートで IrLAN を使いながら、同時に
IrDA ドングルで Pilot と通信することもできます。 (中略) それではどうや
って Linux/IrDA 接続を２つ設定するのかと言うことですが、実は単に持って
いる各 IrDA ポートに対して irattach で起動してやるだけです。

irattach /dev/ttyS0         # (my ESI dongle)                          
irattach /dev/ttyS2         # (my builtin IrDA port)                   

FIR デバイスでも次のようにしてやれば動きます。

 

irattach irda0 -s                                                      
irattach irda1 -s                                                      

この２つのデバイスは、同じマシンで動作していても互いに相手のことをみる
ことはありません。この２つのデバイスは、全く同時にディスカバリを開始す
るからです。しかしながら、この２つのデバイスは別々のラップトップに対し
て使う必要があります。この条件下で、ドングル、内蔵 IrDA ポートと IrDA
PCMCIA カードが同時に何の問題もなく使えています。

２つのデバイスが干渉する状況では、接続を確立することが困難になることが
あります。これは、メディアがビジー (受信中) の場合にはデバイスは送信が
できないためです。私は場合によっては、２つのデバイスの間に本をたてるこ
とで回避しています」

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.15. ドッキングステーションとの接続

Dag Brattli さんによると「 Tekram IRDocking IR-660 <http://
www.tekram.com/Hot_Products.asp?Product=IR-660> との接続についてです。
このデバイスはドッキングステーションで、LAN 接続、プリンタ、マウス、キ
ーボードの各インターフェースを持っています。内蔵のマウスやキーボードと
同時に利用することもできます。単に gpm -t ps2 /dev/irkbd とすれば、ラッ
プトップは IR-660 との間でキーボードとマウスの接続を作成します。後は単
に gpm が /dev/psaux と /dev/irkbd の両方を読むように直し、X11 が /dev/
gpmdata を読むようにして、設定一丁あがりです」

「 ...問題が一つあって、gpm は複数のマウスを扱えますが、Linux は複数の
別々のキーボードを扱えません。このため、私のようにノルウェー語配置のキ
ーボードとリモートの US キーボードを使っている場合は、操作時に混乱しま
す。この件については Alan Cox さんから、複数のキーボードを実際にサポー
トしようとしているプロジェクトのヒントを貰ったので、調べてみるつもりで
す」

「 ...OK。だいたい動くようになりました。/dev/console で TIOCSTI を使っ
て、スキャンコードを直接 tty queue に入れることができます。これは、ある
程度変換・加工済みのキーコードを期待する仮想コンソールにとっては問題と
なるのですが、X はたまたま生のスキャンコードを望むので、 X を使っている
ときはとても良好に動作します。その他の仮想コンソールでは動作しませんが
。まぁ、私にとってはこれで十分なので、単にテキストだけの仮想コンソール
で動作させるために、スキャンコードをキーコードに変換してキーマップに従
って振り分けることに多大な時間をつぎ込む気はありません。見たところ、
irkbd ドライバはユーザ空間にうまく持ちこめているようです」

「 ...Tekram IR-660 デバイスは、キーボードとマウスをつける以外に IrTTP
を使ったプリンタ接続ができます。IrLPT を使っても印刷はできますが、この
場合 IrLMP との排他利用が必要になるので面白くありません。文書を印刷する
だけのためにネットワーク、マウス、キーボードを止めたくはありませんから
。 fifo バッファを使った IrTTP プリントができるかどうか試してみるつもり
です」

「 ...Tekram はデータチャネル以外にも制御用のチャネルを加えていますので
、進行中の通信のステータス情報を多少得ることができます。 Tekram の専用
プロトコルの名前は P1248 です。これは "P1248" クラスの "IrDA:TinyTP:
LsapSel" LM-IAS エントリとして公開されているので、探してみてください」

「 ...Canon は P1248 プロトコルを使っており、Canon のプリンタモニタプロ
グラム PrintBuddy2 (日本語版) はそのプロトコルを現在使っています。
Canon がデータチャネルを使っていない理由は分かりません。多分 TinyTP を
他の方法に加える形でサポートしたかったためではないかと思います。
"IrLPT" クラスの LM-IAS 中の "IrDA:TinyTP:LsapSel" として試したり見たり
できますので、探してみてください」

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.16. キーボード接続

Linux/IrDA キーボードドライバは、今はユーザ空間で動作します。上記のドッ
キングステーションとの接続の章をご覧下さい。

Lichen Wang さんによると「IrDA-D と呼ばれている標準は、データを転送する
よう設計されたものです。これは IR キーボードには適していません。この
IrDA-D を、Dag さんが Linux OS に、そして MS が Windows OS に移植してい
ます」

IrDA-C (Control: 制御) がキーボード、ジョイスティックなどのために設計さ
れたものです。ただし、これを使った製品が市場に出回っているのを見たこと
はありません。

IrDA-D は IrDA-C と会話することはできませんし、その逆の IrDA-C から
IrDA-D への会話もできません。物理層でのエンコーディング/デコーディング
とソフトウェアプロトコルの両方が大きく異なっています。

IrDA-D と IrDA-C を一つのデバイスで両方実装することはできます。シャープ
によると、IrDA-D と IrDA-C を、同時に同じ IR 空間内で両方使わない限り共
存できると言うことです。この言い方は多少ばかばかしくはありますが。この
言い方の定義に従えば、その過程で宇宙を永久に破壊さえしなければ、どのよ
うなものでも何かと共存させることはできますから。

真面目な話、シャープの言いたいのは IrDA-D を多少いじって、二つのデバイ
ス間のネゴシエーションで決定された最大切換時間と実際の送信の間に多少の
未使用時間を作るようにしたこと、そしてその未使用時間に IrDA-C のフレー
ムを押し込んだ、ということでしょう。 IrDA-D プライマリと IrDA-C マスタ
は同一のデバイスに実装されている必要があります。この実装ではキーボード
は動くでしょうが、マウスやジョイスティックは時として応答性が悪くなるこ
とがありそうです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.17. シリアルケーブルを使った接続

時として本物の赤外線接続ではなく、シリアルケーブルを使って接続する方が
便利な場合があります。 Bjorn Hanson さんによると「ケーブルを使って、僕
の Ericsson SH888 との間で PPP で接続することができています。。以下のよ
うにして行いました。一部の手順は間違っているかもしれませんが、僕のとこ
ろでは動いています :-)。

 

 ・ /etc/conf.modules に alias tty-ldisc-11 irtty を書き足しました。 
   
 ・ /etc/irda/drivers を irattach /dev/ttyS0 となるよう編集しました。
   
 ・ modprobe を使って irda と irtty モジュールをロードしました。
   
 ・ irattach を開始しました。
   
 ・ /dev/ircomm0 (/dev/modem のシンボリックリンク経由で) を使って kppp
    を走らせました。
   
 ・ stty < /dev/ircomm0 を実行しました。
   
 ・ ホストに ping しました。
   
 ・ ifconfig irda0 down を実行しました。
   
 

ping と ssh (ls -l を数回行って試しました) では何もかも問題なしでしたが
、 Netscape mail をこの PPP で使おうとした際、コンピュータがハングしま
した。リブート後、Netscape と lynx の両方を試してみましたが、どちらも接
続まではできるものの、何のデータも受信できませんでした」

Claudiu Costin さんによる別法です

 

 ・ Linux 2.2.5 で IrDA をモジュールとしてコンパイルします
   
 ・ irattach ではカーネルに IrDA スタックを自動ロードさせることができな
    いため、 modprobe actisys と打ちます。
   
 ・ 次に irattach /dev/ttyS1 -d actisys とします。ここで COM2 はヌルリ
    ンクとして使っています。
   
 ・ ping <address> は良好に動作します。
   
 

これを両方のマシンで行う必要があります。

注意してほしいのは、これは２つのマシンをつなげるお勧めのやり方ではない
ということです。代わりに PPP を使ってください。私としてはこのやり方がど
んなときに役に立つのか分かっていませんが、ここにこれを含めるのは、メー
リングリストで時々聞かれるからです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.18. ヌルモデムケーブル接続

IrDA が使えるハードウェアがなくても、シリアルヌルモデムケーブルで接続を
行うことができます。IrDA ポートをシリアルポートにアタッチしてください。
つまり、"irattach /dev/ttyS0 -s" と両方のマシンで実行してください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.19. ピアツーピア接続 / 直接モード

IrCOMM と IrLAN はどちらのモードでも動作しますが、これらのモードの違い
や、どのようにして設定するかについての詳しい情報を、私は現在持っていま
せん。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.20. 東芝のノートブックでの Linux/IrDA

Guenther Wieser さんが HOWTO about Toshiba and IrDA <http://
www.creative-it.com/linux/irda/toshiba_irda_howto.html> を書いています
。これらのノートブックでは toshoboe Linux/IrDA ドライバが必要です。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

3.21. デスクトップコンピュータでの IrDA カード

最近の一部のマザーボードには IrDA チップが実装されています。モデルによ
っては、IrDA LED の追加が必要です。実際の例の記載が Andreas Gohr さんの
ところ <http://bogmog.sourceforge.net/document_show.php3?doc_id=13> に
あります。 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 4. Linux/IrDA でサポートされているハードウェア

4.1. ラップトップ機の IR ポートの情報を得るには

ラップトップ機で IrDA ポートを Linux/IrDA で動かすには、
StandardInfraRed (SIR) モードか FastInfraRed (FIR) モードを使うことにな
ります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.1.1. SIR

SIR モードの最大速度は 115,200bps で、赤外線ポートは 16550A UART を用い
たシリアルポートをエミュレートします。このポートはカーネルのシリアルド
ライバによって、起動時またはシリアルドライバモジュールをロードした時点
で認識されます。もし、赤外線ポートサポートが BIOS で有効になっていれば
、殆どのラップトップ機で以下のようなカーネルメッセージを見ることができ
るでしょう。

Serial driver version 4.25 with no serial options enabled                
ttyS00 at 0x03f8 (irq = 4) is a 16550A     #first serial port /dev/ttyS0 
ttyS01 at 0x3000 (irq = 10) is a 16550A    #e.g. infrared port           
ttyS02 at 0x0300 (irq = 3) is a 16550A     #e.g. PCMCIA modem port       

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.1.2. FIR

4Mbps までの速度を使いたければ、あなたのマシンにはしかるべき FIR チップ
が搭載されている必要があります。また、このチップをサポートした Linux/
IrDA ドライバも必要です。このため、使われている FIR チップの正確な情報
を入手する必要があります。この情報を得るには以下の方法があります。

 

 1. マシンの説明書を読んでください。但し、必要なだけの、かつ信頼できる
    情報がここから得られることはまれです。
   
 2. FIR チップが PCI デバイスかどうか調べてください。 cat /proc/pci を
    実行してみてください。カーネル 2.2.x の場合は /proc/bus/pci を見ま
    す。ただ PCI からの情報は不十分なことが多いです。PCI デバイスの最新
    情報とベンダ番号は /usr/src/linux/Documentation 以下のカーネル文書
    か、Craig Hurt さんのページ http://members.hyperlink.net.au/~chart
    で得られます。カーネル 2.1.82 以降では、pci-utils パッケージの 
    lspci コマンドを使うこともできます。
   
 3. DOS ツールの CTPCI330.EXE を使うこともできます。このツールはドイツ
    のコンピュータ誌 CT の CTPCI330.ZIP <ftp://www.heise.de/pub/ct/ctsi
    /ctpci330.zip> から入手できます。このプログラムで得られる情報が、
    Linux 用のツールで得られるものより良質であることもよくあります。
   
 4. Plug-and-Play (PnP) デバイス情報を得る。 isapnp ツールが役に立つで
    しょう。但し、私はこのツールをこの目的で使ったことはありません。
   
 5. もしすでに Linux/IrDA(R) ソフトウェアをインストール済みなら、FIR モ
    ジュールをロードして dmesg の出力を見て FIR が検出されるかどうかを
    見るという手もあります。
   
 6. 検出方法は他にもあります。以下は Thomas Davis さんによる説明です:
    (原注:多少編集しています) 「ベンダの FTP サイトを漁ってみて、
    Windows9x FIR drivers を探します。これには SMC チップなら、以下のも
    のが含まれています。
   
    -rw-rw-r--   1 ratbert  ratbert       743 Apr  3  1997 smcirlap.inf 
    -rw-rw-r--   1 ratbert  ratbert     17021 Mar 24  1997 smcirlap.vxd 
    -rw-rw-r--   1 ratbert  ratbert      1903 Jul 18  1997 smcser.inf   
    -rw-rw-r--   1 ratbert  ratbert     31350 Jun  7  1997 smcser.vxd   
   
    よくわからないときは、まず Windows 95 向けのドライバの .inf/.vxd フ
    ァイルを見てください。 Windows95 の出荷版には FIR ドライバは＊全く
    ＊含まれていませんので、 FIR ドライバは全てサードパーティ製で、多く
    は Counterpoint 製のものを ESI 社が移植したものです」
   
 7. Thomas Davis さんは SMC 社製の小さな DOS ユーティリティも見つけまし
    た。以下を参照下さい。 http://www.smsc.com/ftppub/chips/appnote/
    ir_utils.zip このパッケージには FINDCHIP.EXE コマンドと 
    FIRSETUP.EXE ユーティリティが含まれており、後者はチップアドレス以外
    の全設定値を変更するのに使えます。さらに、このパッケージには 
    BIOSDUMP.EXE が含まれており、これを用いれば以下の出力が得られます。
   
    例1 (COMPAQ Armada 1592DT の場合)
   
    In current devNode:                                               
               Size      = 78                                         
               Handle    = 14                                         
               ID        = 0x1105D041 = 'PNP0511' &- Generic IrDA SIR 
    Types:  Base = 0x07, Sub = 0x00,  Interface = 0x02                
    Comm. Device, RS-232, 16550-compatible                            
    Attribute = 0x80                                                  
                    CAN be disabled                                   
                    CAN be configured                                 
    BOTH Static & Dynamic configuration                               
    Allocated Resource Descriptor Block TAG's:                        
    TAG=0x47, Length=7 I/O Tag, 16-bit Decode                         
    Min=0x03E8, Max=0x03E8                                            
    Align=0x00, Range=0x08                                            
    TAG=0x22, Length=2 IRQ Tag, Mask=0x0010                           
    TAG=0x79, Length=1 END Tag, Data=0x2F                             
   
     
   
    結果 1
   
    Irq Tag, Mask に注目してください。
   
    Irq Tag, Mask (ビットマップ) = 0x0010 = 0000 0000 0000 0001 0000
   
    これは IRQ 4 だということです (0 からはじまって順に上がっていきま
    す)。またこれは SIR のみのデバイスで、IRQ 4 で、IO=0x03e8 に割り当
    てられています。
   
    例 2 (これを得たマシンの詳細は不明です)
   
    In current devNode:                                         
              Size      = 529                                   
              Handle    = 14                                    
              ID        = 0x10F0A34D = 'SMCF010' -- SMC IrCC    
    Types:  Base = 0x07, Sub = 0x00,  Interface = 0x02          
    Comm. Device, RS-232, 16550-compatible                      
    Attribute = 0x80                                            
                   CAN be disabled                              
                   CAN be configured                            
    BOTH Static & Dynamic configuration                         
                                                                
    Allocated Resource Descriptor Block TAG's:                  
    TAG=0x47, Length=7 I/O Tag, 16-bit Decode                   
    Min=0x02F8, Max=0x02F8                                      
    Align=0x00, Range=0x08                                      
    TAG=0x22, Length=2 IRQ Tag, Mask=0x0008                     
    TAG=0x47, Length=7 I/O Tag, 16-bit Decode                   
    Min=0x02E8, Max=0x02E8                                      
    Align=0x00, Range=0x08                                      
    TAG=0x2A, Length=2 DMA Tag, Mask=0x02, Info=0x08            
    TAG=0x79, Length=1 END Tag, Data=0x00                       
   
    結果 2
   
    a) これは SMC の IrCC チップで、
   
    b) 一部は 0x02f8 のアドレスにあり、8 byte 分のアドレスを占有し、irq
    は 3 で
   
    c) もう一方の部分は 0x02e8 のアドレスにあり、8 byte 分のアドレスを
    占有し、dma 1 番 (0x02 =0000 0010) に接続されています。
   
    Thomas Davis さんは得られたマシン情報の一部を http://www.jps.net/
    tadavis/irda/devids.txt に置いています。
   
    ┌────────────────────────────┐
    │                        Warning                         │
    ├────────────────────────────┤
    │このパッケージはエンドユーザ向けではなく、一部のユーティ│
    │リティは危険なものになりえます。唯一の説明文書は        │
    │Microsoft Word 形式でパッケージに同封されているため、   │
    │Linux ユーザは必要に応じて catdoc などで読んでください。│
    │catdoc は http://www.fe.msk.ru/~vitus/catdoc/ で入手でき│
    │ます。                                                  │
    └────────────────────────────┘
 8. Microsoft Windows 9x/NT オペレーティングシステムの Device Manager
    を使う。
   
 9. 以下の章で記載するハードウェアサーベィが使えます。
   
10. 最後の手段として、ラップトップ機をあけてチップセット上の印刷を見る
    こともできます。以下は、(多分不完全な) メーカリストです[15]。
    Crystal Semiconductor, Agilent (HP または Agilent (通常表記はどちら
    もロゴ)。チップ名は HSDL で始まる [16])、日立 (Hitachi)、IBM、
    National Semiconductor Corporation (NSC。表記はロゴ)、 NEC、Philips
    、シャープ (Sharp)、Standard Micro Systems Corporation (SMC/SMCC 
    [17])、 Texas Instruments (TI)、VLSI、Winbond。例として、HSDL-7001
    の回路例を挙げます (HP の小冊子により、原著者により修正)
   
        LEDs    Encode/Decode    SIR/FIR                        
                                                                
       HSDL-1001    HSDL-7001      UART 16550/                  
                      MicroController                           
       ______      ______________      ____________             
      |      |    |              |    |            |            
    (||   TXD|<---|IR_TXD     TXD|<---|SOUT        |            
      |      |    |              |    |            |            
      |      |    |           RCV|--->|SIN         |            
      |      |    |              |    |            |            
    (||   RCV|--->|IR_RCV  16XCLK|<---|BAUDOUT     |            
      |      |    |          NRST|-+  |            |            
       ------      --------------  |   ------------             
                                   V                            
   
 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.2. ハードウェアサーベィ

Linux と赤外線通信可能なデバイスに関するサーベィが幾つか WWW 上にありま
す。

 

 ・ The Linux/IrDA Project - Hardware Survey <http://
    irda.sourceforge.net>
   
 ・ 樋口隆英 <http://www.pluto.dti.ne.jp/~thiguchi/ir/product.html> さ
    んのサーベィ。このページは日本語です。
   
 ・ 私も IrDA hardware survey at TuxMobil <http://tuxmobil.org/
    ir_misc.html> を用意しています。このリストには、この文書で触れてい
    ない赤外線通信可能なデバイス (マウス、プリンタ、リモートコントロー
    ラ、トランシーバなど) についての情報も載せています。このハードウェ
    アサーベィをより充実したものにしていくために、様々なハードウェアに
    関する赤外線デバイスの情報を更に集めていく必要があります。お持ちの
    ハードウェアの正確な名称と、使われている赤外線コントローラのタイプ
    を短い電子メールで報告いただければとても助けになります。また、Linux
    /IrDA がどの程度良く動いているか、どの tty でか、動作した際のポート
    と割り込みの設定、使っている赤外線デバイス (例: プリンタ、携帯電話)
    などについて教えてください。また、赤外線デバイスのための Linux ドラ
    イバを開発するのに必要となる、そのデバイスに関する詳細な技術資料を
    提供していただけると助かります。
   
 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.3. ビッグエンディアン

ソース自体はビッグエンディアンのマシンでビルドして動かせるようになって
いるはずですが、私は実際にそうやって使っているという報告を受けたことが
ありません。実際に動くかどうかについて関心があります。多分 IrDA ドング
ルのようなものが、テストするために必要になるでしょう。

i386 と alpha はリトルエンディアンです。arm は選択できます (但し、
NetWinder はリトルエンディアンに固定されています)。m68k、sparc と
PowerPC はビッグエンディアンです。MIPS は選択できます。はっきりしない場
合は /usr/src/linux/asm/byteorder.h を見て、そこに linux/byteorder/
big_endian.h が含まれているか、 linux/byteorder/little_endian.h が含ま
れているかを見てください [18]。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.4. SMP

Jean Tourrilhes さんによると「IrSock、IrNET と OpenObex を SMP マシンで
複数のドングルを使って動かしています。良好に動作していますが、コード自
体は完全に SMP で安全なものにはなっていません。ですから、どこでおちるか
は分かりません…」

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.5. IrDA ハードウェア

 

 ・ SIR
   
 ・ FIR
   
 ・ シリアルドングル
   
 ・ USB ドングル
   
 ・ PCMCIA カード
   
 ・ PCI カード
   
 

Linux/IrDA で使えるデバイスのサーベィが TuxMobil <http://tuxmobil.org/
ir_misc.html> にあります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.6. IrDA と USB

最近の 2.4 カーネルには IrDA USB ドライバが含まれています。他の FIR ハ
ードウェアほどは効率は良くありませんが、少なくともサポートされており、
また動作させるのも容易です。また、現行のプロダクトはすべて同一のハード
ウェアを元にしているので、そのハードウェアの殆どのバグも分かっています
。

知る限り、Actisys 2000U と Extended System ESI-9685 は同一のハードウェ
アを用いているようです。どちらの USB ドングルも Linux ドライバで良好に
動作します。また、複数の USB ドングルを一台のマシンに接続する (現在は４
個までですが) ことも可能です。

最新版のドライバは usb-uhci と usb-ohci でテストされています。また、ソ
ースコード中のドライバ情報、例えば USB 2.0 も参照下さい。

IrDA ブリッジ仕様書の Rev 0.9B 版が出ています。これは USB クラス仕様と
して採用が広がりつつあります。この仕様は 0.9 クラス仕様ヘッダ (USB.org
<http://www.usb.org> にあります) で見ることができます。

最近 SigmaTel から新型の USB ドングルが市場に投入されましたが、これは
IrDA-USB 仕様とは互換でなく、従ってこのドライバでは動作しません。一方、
SigmaTel は詳細技術仕様 <http://www.sigmatel.com/technical_docs.htm#
wireless> を公開していますので、ドライバを書くことは可能ではあります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.6.1. 動作環境

私はこの章の内容を以下の環境でチェックしました。

 ・ ACTiSYS <http://www.actisys.com> ACT-IR2000U FIR-USB Adapter (上記
    以外の他の USB ドングルでも動くはずです)、
   
 ・ Kernel 2.4.19, irda-utils 0.9.14
   
 ・ Debian GNU/Linux <http://www.debian.org> 3.0 Woody
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.6.2. 前提条件

IrDA と USB がサポートされたカーネル、/etc/modules.conf に標準的エント
リいくつか、そしてこれまでの章に記載の通りデバイスファイル /dev/ir* が
必要です。加えて二台目の IrDA デバイス (ラップトップか、IrDA ポートを持
つプリンタか、携帯電話) が必要です。こちらは Linux がインストールされた
ものでも、そうでないものでも構いません。

USB コントローラが動作している必要があります。lsmod で所定のモジュール
が組み込まれているかを確認してください。組み込まれていない場合、Intel/
Via USB コントローラの場合 modprobe usb-uhci で、その他のコントローラの
場合 modprobe usb-ohci を実行して組み込んでください。

注意して欲しいのは、このドライバはまだ usb-ehci (USB 2.0 コントローラ)
ドライバとの組み合わせではテストされていないことです。また、uhci ドライ
バ (Intel/Via USB コントローラの追加ポート/JE ドライバ) との組み合わせ
では動きません。

┌──────────────────────────────────┐
│                              Warning                               │
├──────────────────────────────────┤
│また、(Linux USB Project <http://www.linux-usb.org> で提供されてい  │
│る) 別系統のドライバがあり、こちらではデバイスは ir-usb と呼ばれてい│
│ます。このモジュールは IrDA スタックとは非互換で、irda-usb と競合し │
│ます。こちらのドライバは常に最初にロードされるように出来ているため、│
│ir-usb は完全に削除する必要があります。                             │
└──────────────────────────────────┘

ルーティング関連について十分な知識がないなら、ifconfig を使って最初の設
定の間外部ネットワークを切っておくことを勧めます。その後で route -n の
使い方をチェックしてください。また、ネットワークフィルタ (iptables) は
問題を起こす可能性があるので、ネットワークにつなげていない間は無効にし
て置いてください。

以下では詳細について、細かなこつを含め出来るだけはっきり書いていきます
。このため、実際の設定はもっとずっと作業が少なく簡単です。設定の間は、
個々のプログラムのログメッセージを監視するため、三つのウィンドウを開く
ようにしています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.6.3. ドングルを挿入する

まずドングルを挿入して、dmesg でカーネルメッセージを調べます。

hub.c: USB new device connect on bus1/1, assigned device number 2                       
usb.c: USB device 2 (vend/prod 0x50f/0x180) is not claimed by any active driver.        
usb.c: registered new driver irda-usb                                                   
IRDA-USB found at address 2, Vendor: 50f, Product: 180                                  
irda_usb_parse_endpoints(), And our endpoints are : in=02, out=01 (64), int=03          
irda_usb_init_qos(), dongle says speed=0x13E, size=0x20, window=0x2, bofs=0x4, turn=0x2 
IrDA: Registered device irda1                                                           
USB IrDA support registered                                                             

 

他の IrDA ハードウェアが PC 上で設定されている場合には、ドライバ名は
irda0 にはなりませんので、上記のように表示されているメッセージログをチ
ェックする作業が重要になります。ドライバは一台の PC で四つまでの
IrDA-USB ドングルを扱え、ソースコードを修正することで更に増やすことも可
能です。

この例では、デバイスは irda1 です。これは ifconfig でもチェックできます
。

irda1     Link encap:IrLAP  HWaddr 2c:52:61:ec                         
          EtherTalk Phase 2 addr:140/191                               
          UP RUNNING NOARP  MTU:2048  Metric:1                         
          RX packets:2278 errors:0 dropped:0 overruns:0 frame:0        
          TX packets:844 errors:0 dropped:0 overruns:0 carrier:0       
          collisions:0                                                 
          RX bytes:33848 (33.0 KiB)  TX bytes:15116 (14.7 KiB)         

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.6.4. ドライバを組み込む

次に行うことは、ドングル用の Linux/IrDA サービスを irattach irda1 -s で
組み込むことです。ここで用いるデバイス名は前の章を参照下さい。

組み込み後、アダプタの LED はだいたい三秒ごとに点滅するはずです。また、
dmesg を実行すれば以下のメッセージが表示されるでしょう。

irlap_change_speed(), setting speed to 9600                            
irlap_recv_discovery_xid_cmd(), discovery frame to short!              

 

次に irdadump を実行すれば、届く範囲にある IrDA デバイスが全て表示され
るはずです。少なくとも一つ (ここでは "japh") は最低見えます (この例では
もう一つの IrDA デバイスの名前は "Olga" です)。デバッグのため、ここで 
irdadump を実行しているターミナルウィンドウはそのままにしておき、別のウ
ィンドウで以降の作業を進めましょう。

07:58:40.889590 xid:cmd ffffffff < 4fe026d8 S=6 s=3 (14)                             
07:58:40.979575 xid:cmd ffffffff < 4fe026d8 S=6 s=4 (14)                             
07:58:40.979679 xid:rsp 2c5261ec > 4fe026d8 S=6 s=4 japh hint=0400 [ Computer ] (20) 
07:58:41.069571 xid:cmd ffffffff < 4fe026d8 S=6 s=5 (14)                             
07:58:41.166552 xid:cmd ffffffff < 4fe026d8 S=6 s=* Olga hint=0400 [ Computer ] (20) 
07:58:43.620104 xid:cmd ffffffff < 4fe026d8 S=6 s=0 (14)                             
07:58:43.709078 xid:cmd ffffffff < 4fe026d8 S=6 s=1 (14)                             

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.6.5. IrCOMM モジュールの組み込み

次に IrCOMM モジュールをロードします。通常使う場合には PPP や IrDA 経由
の印刷時に、カーネルデーモンの kmod がこのロードを自動で実行しますが、
最初は手で行う必要があります。 modprobe ircomm を行い、次に modprobe
ircomm-tty とします。

dmesg には次のように表示されます。

IrCOMM protocol (Dag Brattli)                                          
ircomm_open_lsap()                                                     
ircomm_tty_attach_cable()                                              
ircomm_tty_ias_register()                                              
ircomm_tty_close()                                                     
ircomm_tty_shutdown()                                                  
ircomm_tty_detach_cable()                                              
ircomm_close()                                                         

 

そして、lsmod を実行すれば以下が表示されるでしょう。

Module                  Size  Used by    Tainted: P                             
ircomm-tty             30080   0  (autoclean)                                   
ircomm                 13164   0  (autoclean) [ircomm-tty]                      
irda-usb               13776   1                                                
...                                                                             
irtty                   7264   0  (autoclean)                                   
irda                  141648   1  (autoclean) [ircomm-tty ircomm irda-usb irtty]

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.6.6. ネットワーク (PPP) 設定

コマンド行引数を与えて pppd を実行しても良いですが、設定ファイル /etc/
ppp/peers/irda を用意した方が便利だと思います。

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

 

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

persist                                                                
debug                                                                  
kdebug 7                                                               
nodetach                                                               

ここで、pppd call irda として PPP を開始しましょう。デバッグのため、こ
こで pppd を実行したターミナルウィンドウはそのままにしておき、別のウィ
ンドウで以降の作業を進めましょう。

Serial connection established.                                               
using channel 3                                                              
Using interface ppp0                                                         
Connect: ppp0 <--> /dev/ircomm0                                              
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x4592a46e> <pcomp> <accomp>] 
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x4592a46e> <pcomp> <accomp>] 
...                                                                          

次にリモート側の IrDA デバイスで PPP を開始すれば、以下のメッセージが出
るはずです。

sent [LCP EchoReq id=0x0 magic=0x3c8803b1]                                   
sent [IPCP ConfReq id=0x1 <addr 192.168.0.2> <compress VJ 0f 01>]            
sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]        
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x3c8803b1> <pcomp> <accomp>] 
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x3c8803b1> <pcomp> <accomp>] 
rcvd [LCP EchoReq id=0x0 magic=0xa922f0e8]                                   
sent [LCP EchoRep id=0x0 magic=0x3c8803b1]                                   
rcvd [IPCP ConfReq id=0x1 <addr 0.0.0.0> <compress VJ 0f 01>]                
sent [IPCP ConfNak id=0x1 <addr 192.168.0.3>]                                
rcvd [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]        
sent [CCP ConfAck id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]        
rcvd [LCP EchoRep id=0x0 magic=0xa922f0e8]                                   
rcvd [IPCP ConfAck id=0x1 <addr 192.168.0.2> <compress VJ 0f 01>]            
rcvd [CCP ConfAck id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]        
Deflate (15) compression enabled                                             
rcvd [IPCP ConfReq id=0x2 <addr 192.168.0.3> <compress VJ 0f 01>]            
sent [IPCP ConfAck id=0x2 <addr 192.168.0.3> <compress VJ 0f 01>]            
Cannot determine ethernet address for proxy ARP                              
local  IP address 192.168.0.2                                                
remote IP address 192.168.0.3                                                
Script /etc/ppp/ip-up started (pid 3975)                                     
Script /etc/ppp/ip-up finished (pid 3975), status = 0x1                      

 

irdadump を実行しているウィンドウには、以下の IrDA 通信メッセージが表示
されているでしょう。

08:17:11.179260 i:rsp  > ca=08 pf=1 nr=1 ns=2 LM slsap=00 dlsap=19 CONN_RSP (6)                                                 
08:17:11.199127 i:cmd  < ca=08 pf=1 nr=3 ns=1 LM slsap=00 dlsap=1d CONN_RSP (6)                                                 
08:17:11.199226 i:rsp  > ca=08 pf=1 nr=2 ns=3 LM slsap=1d dlsap=00 GET_VALUE_BY_CLASS: "IrLPT" "IrDA:IrLMP:LsapSel" (30)        
08:17:11.219123 i:cmd  < ca=08 pf=1 nr=4 ns=2 LM slsap=00 dlsap=1c CONN_RSP (6)                                                 
08:17:11.219207 i:rsp  > ca=08 pf=1 nr=3 ns=4 LM slsap=1c dlsap=00 GET_VALUE_BY_CLASS: "IrDA:IrCOMM" "Parameters" (28)          
08:17:11.241117 i:cmd  < ca=08 pf=1 nr=5 ns=3 LM slsap=19 dlsap=00 GET_VALUE_BY_CLASS: "IrDA:IrCOMM" "Parameters" (28)          
08:17:11.241213 i:rsp  > ca=08 pf=1 nr=4 ns=5 LM slsap=00 dlsap=19 GET_VALUE_BY_CLASS: Success N/A (19)                         
08:17:11.259114 i:cmd  < ca=08 pf=1 nr=6 ns=4 LM slsap=00 dlsap=1d GET_VALUE_BY_CLASS: No such class (11)                       
08:17:11.259216 i:rsp  > ca=08 pf=1 nr=5 ns=6 LM slsap=1d dlsap=00 DISC (6)                                                     
08:17:11.280107 i:cmd  < ca=08 pf=1 nr=7 ns=5 LM slsap=00 dlsap=1c GET_VALUE_BY_CLASS: Success N/A (19)                         
08:17:11.280281 i:rsp  > ca=08 pf=0 nr=6 ns=7 LM slsap=1c dlsap=00 DISC (6)                                                     
08:17:11.282124 i:rsp  > ca=08 pf=1 nr=6 ns=0 LM slsap=1e dlsap=00 CONN_CMD (6)                                                 
08:17:11.299104 i:cmd  < ca=08 pf=1 nr=1 ns=6 LM slsap=19 dlsap=00 DISC (6)                                                     
08:17:11.299204 rr:rsp > ca=08 pf=1 nr=7 (2)                                                                                    
08:17:11.319102 i:cmd  < ca=08 pf=1 nr=1 ns=7 LM slsap=1a dlsap=00 CONN_CMD (6)                                                 
08:17:11.319209 i:rsp  > ca=08 pf=1 nr=0 ns=1 LM slsap=00 dlsap=1a CONN_RSP (6)                                                 
08:17:11.339100 i:cmd  < ca=08 pf=1 nr=2 ns=0 LM slsap=00 dlsap=1e CONN_RSP (6)                                                 
08:17:11.339197 i:rsp  > ca=08 pf=1 nr=1 ns=2 LM slsap=1e dlsap=00 GET_VALUE_BY_CLASS: "IrDA:IrCOMM" "IrDA:TinyTP:LsapSel" (37) 
08:17:11.361096 i:cmd  < ca=08 pf=1 nr=3 ns=1 LM slsap=1a dlsap=00 GET_VALUE_BY_CLASS: "IrDA:IrCOMM" "IrDA:TinyTP:LsapSel" (37) 
08:17:11.361191 i:rsp  > ca=08 pf=1 nr=2 ns=3 LM slsap=00 dlsap=1a GET_VALUE_BY_CLASS: Success Integer: 14 (15)                 
08:17:11.380092 i:cmd  < ca=08 pf=1 nr=4 ns=2 LM slsap=00 dlsap=1e GET_VALUE_BY_CLASS: Success Integer: 14 (15)                 
08:17:11.380214 i:rsp  > ca=08 pf=0 nr=3 ns=4 LM slsap=1e dlsap=00 DISC (6)                                                     
08:17:11.382104 i:rsp  > ca=08 pf=1 nr=3 ns=5 LM slsap=14 dlsap=14 CONN_CMD TTP credits=0(7)                                    
08:17:11.399090 i:cmd  < ca=08 pf=1 nr=6 ns=3 LM slsap=1a dlsap=00 DISC (6)                                                     
08:17:11.399190 rr:rsp > ca=08 pf=1 nr=4 (2)                                                                                    
08:17:11.419082 i:cmd  < ca=08 pf=1 nr=6 ns=4 LM slsap=14 dlsap=14 CONN_CMD TTP credits=0(7)                                    
08:17:11.419159 rr:rsp > ca=08 pf=1 nr=5 (2)                                                                                    
08:17:11.438080 rr:cmd < ca=08 pf=1 nr=6 (2)                                                                                    

別のターミナルウィンドウを開き、ifconfig で PPP デバイスをチェックしま
しょう。

ppp0      Link encap:Point-to-Point Protocol                             
          inet addr:192.168.0.2  P-t-P:192.168.0.3  Mask:255.255.255.255 
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1     
          RX packets:9 errors:0 dropped:0 overruns:0 frame:0             
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0           
          collisions:0                                                   
          RX bytes:318 (318.0 b)  TX bytes:708 (708.0 b)                 

 

ps aux | grep irda を実行すれば、以下のプロセスが表示されるはずです。

root      3534  0.0  0.2  1272  464 ?        S    06:51   0:00 irattach irda1 -s 
root      3579  0.3  0.2  1400  476 tty1     S    06:55   0:06 irdadump          
root      4312  0.1  0.4  2088  948 tty2     S    07:18   0:00 pppd call irda    

 

route -n を実行すれば、以下のように PPP デバイスが表示されます。

Kernel IP routing table                                                       
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface 
192.168.0.3     0.0.0.0         255.255.255.255 UH    0      0        0 ppp0  
0.0.0.0         192.168.0.3     0.0.0.0         UG    0      0        0 ppp0  

 

そして、リモートホストに対して ping 192.168.0.3 が動作するようになって
いるはずです。

PING 192.168.0.3 (192.168.0.3): 56 data bytes                          
64 bytes from 192.168.0.3: icmp_seq=0 ttl=64 time=290.7 ms             
64 bytes from 192.168.0.3: icmp_seq=1 ttl=64 time=146.6 ms             

 

これで TCP/IP アプリケーションは使えるようになりました。例えば、 ssh な
どが使えます。但し、コネクションの確立まで多少の時間を要しますので、ち
ょっと辛抱が必要です。

ssh -v USER@192.168.0.3                                                

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.6.7. プリンタ接続 (IrLPT) の設定

ドングルを TCP/IP 代わりのプリンタ接続にも使うことが出来ます。デバイス
名は /dev/irlpt0 になります。IrDA プリンタ接続の詳細は、関連の章を参照
下さい。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.6.8. 後片づけ

最後に設定の微調整 (ルーティングの設定) などを行います。さらに高速度に
設定することも出来ますが、私はまだ試していません。全て動くようになった
ら、設定を保存していつも使うようにしましょう。 /etc/irda.conf 設定ファ
イルや、System V init スクリプト (IrDA やネットワーク関連の) などを編集
してください。このあたりのやり方は Linux ディストリビューション毎に異な
ります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.6.9. 残っている問題

奇妙な問題が残っています。IrDA-USB ドングルを挿入した後、微かではあるも
のも連続したビープ音がシステムスピーカから出ています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

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

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

 ・ Agenda VR3 <http://tuxmobil.org/pda_linux_agenda.html> -
    AgendaComputing 社 (既に製造中止)
   
 ・ iPAQ <http://tuxmobil.org/pda_linux_ipaq.html> - COMPAQ (HP) 社
   
 ・ Zaurus SL-5000/5500 <http://tuxmobil.org/
    pda_linux_sharp_sl5000.html> - シャープ
   
 ・ Yopy <http://tuxmobil.org/pda_yopy.html> - Samsung 社
   
これらはすべて IrDA ポートを備えています。Linux PDA 向けの Linux ディス
トリビューションは幾つかあります。以下に例を示します。

 ・ QT Embedded <http://www.trolltech.com> (SHARP Zaurus にプリインスト
    ール)
   
 ・ Opie <http://opie.handhelds.org>
   
 ・ Familiar <http://familiar.handhelds.org>
   
以下で説明するソフトウェア IPK パッケージは Zaurus Software Index - ZSI
<http://www.killefiz.de/zaurus/> と ipkgfind <http://
ipkgfind.handhelds.org> にあります。また TuxMobil <http://tuxmobil.org/
pda_linux.html> は Linux と PDA を組み合わせて使う関連情報全般を扱って
います。

以下は、私の SHARP <http://www.sharp.com> の 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
<http://opie.handhelds.org/usermanual/book1.htm> ででも触れられていない
話題についてです。

赤外線機能は 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 <http://sourceforge.net/projects/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 <http://
www.tlpd.org> の PPP-HOWTO [19] を参考にしてください。NAT を用いた他の
Linux マシン経由のフォワーディング関連は IPTABLES-Tutorial <http://
iptables-tutorial.haringstad.com/> を参考にしてください。

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 を開始してください。これを実
行したターミナルウィンドウを開いたままにしておき、以降の作業を別ウィン
ドウで行うと、デバッグに便利でしょう。ネットワーク接続を ifconfig と 
ping でチェックしましょう。携帯電話との接続については、この文書の前の方
にある関連の章を見てください。  

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

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

OBEX の利点は統合化でしょう。OBEX 経由で予定を送れば、Zaurus はおそらく
Palm 同様にそれを組み込みのカレンダに統合します。名刺も同様です。
IrOBEX プロトコルは、他の PDA、携帯電話やコンピュータに赤外線でファイル
を送る簡単な手段を提供しています。 Linux 向けのツールは OpenOBEX <http:
//sourceforge.net/projects/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 デバイスでの送受を確認しています。

 ・ 古い Palm3
   
 ・ Psion 5MX
   
 ・ Windows 98 ThinkPad
   
 ・ Actisys L220+ ドングルを使った Linux デスクトップ
   
Flex,Memory を直接アクセスする ObexFTP の実装 flexmem <http://triq.net/
obexftp> があります。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 <http://www.linuxprinting.org> の
Printing-HOWTO の記述を参考にしてください。 Linux PDA からの印刷につい
ては、 Linux-Mobile-Guide <http://tuxmobil.org/howtos.html> の次の話題
として、詳しい説明を近く公開する予定です。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

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

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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

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

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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

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

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

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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 5. より高度な話題

5.1. トラブルシューティング

5.1.1. 一般的情報

問題に出くわしたら、まず以下を試してみてください。

 

 ・ 以下の FAQ の章を読む。
   
 ・ /var/log/messages と /var/log/kern の出力を見る。
   
 ・ dmesg を実行する。
   
 ・ /proc/irda の各ファイルを見る。
   
 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5.1.2. トラブルシューティング技術

私は強力なハッカーというわけではありませんが、ここには Linux/IrDA ソフ
トウェアのエラーやバグを追跡するための技を集めてあります。

 

 ・ /proc/sys/net/irda/debug のデバッグレベルを 1, 2, 3, 4 と変更してみ
    る。
   
 ・ /proc/sys/net/irda にあるファイルを用いて違うパラメータを試してみる
    。例えば、echo 0 > /proc/sys/net/irda/discovery などのようにしてみ
    る。/proc/*/irda ファイルとは
   
    root@duckman:~# ls /proc/sys/net/irda/* /proc/net/irda/*    
    /proc/net/irda/discovery                                    
    /proc/net/irda/irlmp                                        
    /proc/net/irda/irda_device                                  
    /proc/net/irda/irttp                                        
    /proc/net/irda/irias                                        
    /proc/net/irda/irlap                                        
    /proc/sys/net/irda/devname                                  
    /proc/sys/net/irda/discovery                                
    /proc/sys/net/irda/compression                              
    /proc/sys/net/irda/debug                                    
   
     
   
 ・ コードをデバッグすることも可能ではありますが、私はやり方を知りませ
    ん。 SKB デバッグコードを用いたい場合、irda.h を編集し、/include/
    linux/skbuff.h を変更してください (snapshot 10-2-98 の編集履歴参照
    のこと)。
   
 ・ irda モジュールに関する問題については、modules パッケージ収録の
    kdstat ユーティリティが役に立つでしょう。但し、私はまだこれを使えて
    いません。
   
 ・ 「使用するディスカバリパケットの数 (1、6、8 または 16) と、それを送
    る時間間隔 (2-8 * 10mS) を /proc/sys/net/irda で変更できるようにな
    りました。デバイスの検出で問題が発生していると言うことなら、これを
    試してください。私の Palm III では 16 ディスカバリスロットと、8 (*
    10mS) のスロットタイムアウトが好ましいようです」……「IR-610 で安定
    した検出が行える最小のスロット数は 9 のようです」その他にも「Palm
    III では 8 ディスカバリフレームを連続して送るのはまずく、6 なら OK
    です。8 にすると 6-10 回に一回しか返答しませんが、6 だと毎回返答が
    返ります。これが Linux/IrDA の問題なのか、Palm III が悪いのかは分か
    っていません。この問題を解決する方法の一つとして、異なったディスカ
    バリ手法を以下のように順に繰り返して見ることが考えられます。
   
       Discovery 1: send 8 xid frames with 80 ms separation
        ここで返答があれば、この設定を引き続き使います。
        返答がなければ次の設定を試します。
       Discovery 2: send 6 xid frames with 80 ms separation
       Discovery 3: send 8 xid frames with 90 ms separation
       Discovery 4: send 6 xid frames with 90 ms separation
       Discovery 5. 1 に戻る
      
   
    これ以外のパターンや、もっと多くの組み合わせが必要かもしれません。
    多分これは将来実装されて、/proc/sys/net/irda/discovery_slots を 0
    に設定することで有効となるようになるでしょう。
   
 ・ カーネル Oops となる場合には、それを ../linux/scripts/ksymoops/
    ksymoops プログラムに食わせれば、どこでおかしくなったかがわかります
    。単に Oops を起こした行を syslog から切り抜いて、ファイルに保存し
    、 ksymoops <file> を実行してください。
   
 ・ Dag Brattli さんによると「cs4232 サウンドカードが毎秒数百回 ! の割
    り込みを発生させていることを突き止めました。そこでカーネルからサウ
    ンド関係を取り去ったところ、マシンがだいたい 4 倍 ! も速くなりまし
    た。Linux/IrDA は esound サーバ (esd) を同じマシンで実行している場
    合、問題を起こすかもしれません。私の二台のマシン、166MHz の Pentium
    と 200MHz の Pentium Pro の両方とも esd を動かしていると Linux/IrDA
    を実行できません。これは、esd によりサウンドカードが毎秒 300 回の割
    り込みを発生するため、シリアルドライバが受信オーバフローを起こすか
    らです。これは Linux-2.2 がシリアルドライバで遅い割り込みを用いてい
    る (2.2 ではすべて遅い割り込みで処理されるため) ため、割り込みドラ
    イバが抜ける際に割り込み処理がスケジュールされるためです [20]。遅い
    割り込みの良い点は、次のタイマの刻みを待つ必要がないためパケットが
    ずっと速く配送されることです。上記の例外は pc87108 ドライバで、これ
    は esd との組み合わせでも問題なく動作します。これは、このドライバが
    DMA を用いてパケット当たり数回の割り込みしか起こさないためです」
   
 ・ Linux/IrDA の接続をチェックするには、ユーザ空間ツールの irdaping と
    irdadump も使えます。
   
 ・ 私の知る限り、IrCOMM は赤外線デバイス経由でもシリアルケーブル経由で
    も使えます。これはデバッグに役に立つかもしれません。
   
 ・ 以下を試してください。
   
     1. /etc/conf.modules を編集し、次の行を付け加えてください。
       
        option irda irda_debug=3
       
     2. irda 関係モジュールがすべて削除されていることを確認してください
        。
       
     3. /etc/syslog.conf を編集し、次の行を付け加えてください。
       
        */* -/var/log/all
       
     4. "killall -1 syslogd" を実行してください。
       
     5. 印刷、またはその他の irlpt で問題を起こしている動作を実行してく
        ださい。
       
     6. /var/log/ 以下の全ファイルをチェックしてください。
       
     
   
 ・ 一部の ThinkPad モデルでは、プリインストールされている M$ OS で再起
    動して、 ThinkPad ツールを使って IrDA ポートを有効にしなければなり
    ません。これを行う Linux 向けのツールは現在ありません。これは同時に
    内蔵シリアルポート (ttyS0) を無効化します。DOS 用のツールは PS2.EXE
    で、私の知る限り tpctl はこの機能を持ちません。この DOS プログラム
    (ps2.exe) で赤外線ポートを有効にすることがきわめて重要です。
    Microsoft windows のツールを用いてこれを行うことはできません。これ
    を行わなければ、ドライバは正しくロードされて何もかも OK のように見
    えますが、LED が十分に明るく発光しません。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5.1.3. PCI デバイス番号

Daniel R. Risacher さんによると「Palm III と私の Tecra 8100 (2.2.17 使
用) で同期をとるため、 /usr/src/linux/include/net/irda/toshoboe.h で "#
define PCI_DEVICE_ID_FIR701 0x0701" を "#define PCI_DEVICE_ID_FIR701
0x0D01" と書き換える必要がありました」

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5.1.4. scanport

チップの正しいデバイス ID を得るには、scanport コマンドが使えます。これ
は hwtools パッケージの一部です (Debian では。他のディストリビューショ
ンでも多分同じでしょう)。単にコマンドを入力すれば、コマンドで 0x100 か
ら 0x400 までの I/O ポート (標準的 ISA のアドレス範囲) をスキャンします
。0x400 以上は 0x400 以下のデバイスのシャドウがあり、更に上は PCI デバ
イスが使っていますので、標準では 0x400 以上はスキャンしません。「結局
inb を使って私のチップの I/O アドレスを手で探すことになりました。運良く
そんなに先まで見る必要はありませんでした (最近のサウンドカードは 0x530
付近に居座っており、0x220 を従来モード互換のために押さえています)。普通
は、デバイスがアドレス空間内でどこにいるか分かっていれば、ドライバでそ
れを指してみて、それがドライバが期待しているデバイスかどうかドライバに
検出させることになります。これは完全に安全とは言えませんが、全ドライバ
に全 I/O ポートをそのドライバが扱えるものを求めて総当たりさせるよりはず
っと安全です scanport はポートの読み込みを行うだけで、これは通常安全で
す [21]。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5.2. メーリングリスト

Linux-IrDA メーリングリストでは、質問、回答、バグ報告、パッチ、提案とコ
メントの投稿が歓迎されています。但し、このメーリングリストは購読してい
る人のみ投稿可能です。これは SN 比をあげるため、及び SPAM を避けるため
です。

Linux-IrDA メーリングリストの購読は、ブラウザで以下の irda-users <http:
//lists.sourceforge.net/lists/listinfo/irda-users> ページを開けば
Linux-IrDA メーリングリストの設定ページがあります。Subscribing to
Linux-IrDA の節を読んで、電子メールアドレスとパスワード (二回) に記入し
、"Subscribe" ボタンを押してください。

以前の投稿を見るためのメーリングリストアーカイブは Geocrawler <http://
www.geocrawler.com/redir-sf.php3?list=irda-users> で閲覧できます。以前
のアーカイブは 1999 年八月以降は、 Linux-IrDA メーリングリストアーカイ
ブ <http://www.pasta.cs.UiT.No/mailman/listinfo/linux-irda> に置かれて
います。これより前のメールはすべてここ <http://www.ita.chalmers.se/
~svinto/hypermail/irda/> にアーカイブされています。どちらのアーカイブも
既に古く間違いが多いので、参考にしないで下さい。

リストのメンバ全員にメッセージを送るには、
<irda-users@lists.sourceforge.net> に電子メールを送って下さい。電子メー
ルを送る前に、これは説明文書を読み、 Google <http://www.google.com> ま
たはお好みのサーチエンジンに当たった後の最後の手段だと考えていてくださ
い。あなたの質問の答えがないか、メーリングリストアーカイブも調べて下さ
い。また、特定の情報を含めるようにすると助けがずっと容易になります。以
下のコマンドの出力を含めるようお願いします。

uname -a                                                               
cat /proc/net/irda/discovery                                           
setserial -g -a /dev/ttyS*                                             
findchip                                                               
irdadump                                                               

また、もちろん何らかのエラーメッセージが出ていればそれと、関連する 
dmesg の出力を含めてください。また BIOS での IrDA サポート関連の情報と
、使っている Linux ディストリビューションの情報も必ず含めるようにしてく
ださい。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5.3. GUI (グラフィカルユーザインターフェース): Gnome, KDE

Gnome IrDA applet <http://sourceforge.net/projects/girda/> は IrDA デバ
イスをモニタするための GNOME IrDA アプレットです。

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 デバイスでの送受を確認しています。

 ・ 古い Palm3
   
 ・ Psion 5MX
   
 ・ Windows 98 ThinkPad
   
 ・ Actisys L220+ ドングルを使った Linux デスクトップ
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5.4. 赤外線光源を見えるようにする

                                    What you don't see gets you. 見えな
                                    かったとおりのもので、はまってしま 
                                    った (What you see is what you gets
                                    のもじり)                          
                                                                       
                                                                   不詳

IrDA 対応のプリンタを持っているなら、電話をそれに向ければ IR ポートのそ
ばの LED が光ったり点滅したりするのが見られると思います。また、赤外線ポ
ート付きの Palm オーガナイザを持っているなら、それを電話に向けてみてく
ださい。電話の IR ポートがディスカバリモードになっているなら Palm 側で
"Waiting for Sender" ポップアップウィンドウが出るはずです。

Palm 用の IR 発光を測定する "IRMonitor" というプログラムがあります。こ
れは EuroCool か PilotZone で手に入ります。このプログラムを実行して、赤
外線ビームが出ていると思われるポートの方向に Palm を向けます。もしその
ポートから発光しているなら、IrMonitor のスクロールグラフ上の波としてみ
ることができるはずです。赤外線で遊んだり、実用で使ったりしようとする人
には、このプログラムを強くお勧めします。

赤外線を検出するにはビデオカメラも使えます。但し、私はこれについては確
認できていません。

この節の記述の殆どは "The Armadillo with the Mask" さんによる Linux/
IrDA メーリングリストへの投稿からとりました。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5.5. 節電について

私の HP Omnibook 800 の仕様書には、使っていないときには赤外線ポートをオ
フにしてくださいと記載されています。バッテリ動作時間が 10% 程度短くなっ
てしまうからです。

必要な場合、カーネルの IrDA セクションで高速 RR 機能を無効にすることも
試してください。このオプションは転送遅れを大幅に軽減しますが、電力消費
は増えます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5.6. IrDA 仕様を超えて

5.6.1. 通信距離を伸ばす

IrDA 仕様によれば、通信可能距離は 1m までです。Hewlett-Packard 社の 
IrDA Data Link Design Guide <http://www.hp.com/go/ir> の p.20 には「場
合によっては IrDA で保証された 1m 以上にリンク間距離を伸ばしたいことが
あります。それには２つの方法があります。一つは送信光の強度を上げること
、もう一つは受信側の感度を上げることです。リンク間距離を増加させるには
、光受信感度と強度の両方を、両側の IR リンクで挙げなければいけません。
標準の、最小の光強度しか持たない IrDA デバイスと通信したいなら、光受信
感度を上げなければいけません。また標準 IrDA デバイスは最小の光受信感度
しか持っていないないかもしれませんので、光送信強度も同時に上げなければ
なりません」

Andreas Butz さんによると「ばかげた質問かもしれませんが、誰か IrDA スタ
ックが本当にすべて双方向通信に依存しているのか、それとも一部は単方向通
信に無理矢理できるのかについて知りませんか? 特に、通信データにエラーが
多い場合にどうなのか。現在私のところで、IR ドングルを幾つか改造して、数
メートル (ほぼ一部屋) に配置された Palm Pilot に対してブロードキャスト
通信をしようとしています。 Pilot の方は変更したくないし、受信側の感度を
上げるほうはできそうにないので、できるのは単方向通信に限られるんです」
この議論の続きはメーリングリストアーカイブを当たってください。

Marc Bury さんからのメールには「Philips 社のリモートコントロール向けの
新技術の話を聞いたところです。 Philips 社では IRDA - Control と読んでい
ます。これは双方向通信で、75kbps データレート、複数同時デバイス (最大
8) が可能で、少なくとも 6 m の距離! をサポートしているということです」
この件の情報は、IrDA.org <http://www.irda.org/> を参照下さい。

ドイツの雑誌 ELEKTOR では、長距離 IrDA ドングル (20m、RS232、IrDA 1.0)
を作るための手引き記事を載せています。ELEKTOR 97/5 月号です。 ELEKTOR
<http://www.elektor.de> を参照下さい。

"大きな問題は、受信機の感度を上げる必要があるということです。物理の基本
は、光の強度は距離の二乗に反比例すると教えていますので、1m のものを 5m
にのばそうと思うなら 25 倍の強度 (およびそれに伴う携帯デバイスでの電池
の消費)、または 25 倍の感度 (およびダイナミックレンジ - 以前同様 3 inch
の場合にも動作しなければなりませんから) が必要になります。また、対向側
としてみれば、単に 25 倍の感度を実現すればいいというだけではありません
。受信側では、蛍光灯やスクリーンセーバ、移動する人の影などからなる干し
草の山から一本の針のような IrDA 光を見つけなければならないからです。"

これを Palm III アップグレードボードで試した人がいます。 Palm III
upgrade board <http://home.t-online.de/home/PSPilot/ppppiii.htm> をご覧
下さい。

また、レーザダイオード (パルス発信の) を使うことも K-H.Eischer さんが薦
めています。ただし、これは高価ですし、1mW を超える高出力を持つものは危
険でもあります。よりよい方法はレンズを使ってビームを絞り込む方法です。
また、空気には光の吸収が最小になる波長がありますので (正確な周波数は未
確認ですが) IR ダイオードをその周波数で使うべきです。

James さんが書いてきています「長距離 IrDA が欲しい方のため、私たちは次
のものを試しました。ベストのやり方は以下です」

 

 ・ wavelan - カードだけ買って、アンテナは買わずに自作しましょう。メー
    カが $9000 で出している機種と同じぐらい良い感度が得られます。
   
 ・ マイクロ波 - X バンドのドップラーレーダモジュールを買ってきて、少し
    調整してローカルの送信と外からの受信に使います。モジュール全体は
    Ethernet のように動作し、AUI ポートにつなげますが、現在これは違法か
    もしれません。
   
 ・ ir - 赤外線を使ってビデオ信号を転送するキットを出しているところがた
    くさんあります。必要になる大きなフレネルレンズがついてきて、100m 超
    で約 4MHz の帯域が得られます。
   
 ・ レーザダイオード - 最初に私たちが当たったときは、扱いにくい代物でし
    た。 `elantec からまずまずのドライバがでていますが、これに変調をか
    けるのはとても大変です。 Steve Carcia が He-Ne レーザに変調をかける
    ことについての連載記事を書いていますが、これは高圧が必要で、感電し
    た場合命に関わります。
   
 

どれを選んだにしても、プロトコルとして IrDA を使うのは多分よい選択です
。それは、これが単方向通信をそこそこうまく扱える少ないプロトコルの一つ
だからです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5.6.2. 将来の標準 (Bluetooth と IrDA)

「ますます多くの人が、IrDA と Bluetooth は幸福に共存するだろうと考える
ようになっており、Bluetooth で IrDA を置き換えようという考え方は力を失
っています。 IrDA は依然として価格性能比ではるかに勝っており、標準に新
たに追加された AIR や VFIR 機能を見ると、IrDA が正しい方向に進んでいっ
ているのが分かって嬉しく思います」

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5.7. IrDA ネットワークの隣人たち

5.7.1. Laptop-プリンタ-PDA

Sourceforge の Drag-n-drop 関連 <http://irda.sourceforge.net> のところ
を見てください。PDA に (IrOBEX を使って)、およびプリンタに (IrLPT を使
って) ドラッグアンドドロップでファイルを送れるようになります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5.7.2. ブリッジング/ルーティング

  James さんによると「ルーティングを兼ねたブリッジングを行うずっといい
方法があります。これは完全にユーザ空間で動作し、カーネルパッチは必要と
しません。

これは２つの部分からなっています (一方だけで良いかもしれませんが、両方
とも必要かもしれません)。最初の部分は irdaipcfg という名で、次のことを
します。

 1. 最初の部分は、irdaipcfg ifeth ifirlan としてデーモンで実行します。
    これは ifirlan の ARP パケットを監視し、デーモンを実行中のマシンに
    よって出されたものではない arp パケットをチェックします。この arp
    パケットは実行中のマシンと irlan の反対端の IP アドレス (これは
    irlan コードで、gratuitous arp 要求の結果から作成されます) を含みま
    す。このプログラムはそれを使って、ifirlan を用いたこの ip アドレス
    へのホストルートを作成し、ifeth にそのアドレスに対する proxy arp を
    行うよう付け加え、ifeth に向けて gratuitous arp を送ります。これは
    クライアントの IP アドレスを /var/run/host.ifirlan に書き込みますの
    で、上記すべてをスクリプトから簡単に無効にすることができます [22]。
   
 2. 二番目の部分は gratarp ifirlan として実行します。時々 gratuitous
    arp がパイプ処理中で行方不明になるようですので、gratarp はデーモン
    化して、起きていることすべてを吐き出し続けます。
   
私は以下のようにして使っています (使い方はお好きなように)。

私のホストマシン (ローカルネットに繋がっているマシン) では、irlanx はア
ドレス 10.192.0.1 でネットマスク 255.255.255.255、またブロードキャスト
アドレスを 10.192.0.1 として、irattach により /etc/irda/network 中から
ifup スクリプトで立ち上げています。 /etc/irda/network では次に
irdaipcfg eth0 irlanx と実行してルーティングを行います。

/etc/irda/network から

"start")                                                               
    echo 1 >/proc/sys/net/ipv4/conf/all/forwarding                     
    ./ifup ifcfg-${device}                                             
    /sbin/irdaipcfg ${localnet} ${device}                              
    ;;                                                                 
"stop")                                                                
    host=`cat /var/run/host.${device}`                                 
    if [ .$host != . ]; then                                           
      /sbin/arp -d ${host} dev ${localnet}                             
      /sbin/route delete ${host} dev ${device}                         
    fi                                                                 
    ./ifdown ifcfg-${device}                                           
    /sbin/ifconfig ${device} down                                      
    ;;                                                                 

クライアント側では、irlan を通常のサブネットアドレス 10.32.32.51 とし、
但し通常のネットマスクとは異なる 255.255.255.255 で設定しています。
10.192.0.1 dev irlan をホストにし、デフォールトゲートウェイを
10.192.0.1 dev irlan にした静的ルーティングを使っています。 /etc/irda/
network から gratarp を実行しており、家の中を歩き回っても telnet や ssh
のセッションは切れません。これらは ftp://bullard.esc.cam.ac.uk/pub/irda
に置いてあります」

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5.7.3. IPv6

私の知る限り、IPv6 には近傍探索メカニズムが規定されていますが、Linux/
IrDA を IPv6 で使うことに関する情報は持っていません。この話題に関する議
論は Subject "patch-2.2.7-ac1-irda4" のスレッドでありましたので、メーリ
ングリストアーカイブを当たってみてください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5.7.4. DHCP

dhcpcd を IrLAN で使えるとの報告を受けています。最新の DHCP ソフトウェ
アを使うようにしてください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5.8. Linux/IrDA と APM

Fons Botman さんによると「私の Omnibook 2000CT を irtty を有効にしたま
まハイバネーション状態にしてから (Fn-12 を打って、メモリイメージをディ
スクに書きだし、マシンの電源を完全に切る)、電源を再度投入すると IrDA が
動きません。Omnibook で irdadump を動かしてみると、マシンはウィンドウボ
ックスから受けたディスカバリフレームに応答しようとしているようですが、
windows PC は返答を受け取れません。ここで単に irattach を切って、irtty
とシリアルを削除し、その後 irattach を再実行すると、また動き始めます。
これは他の linux ラップトップでも起きているんでしょうか? シリアルデバイ
スドライバの問題なのかな?」Pedro Figueiredo さんによると、この問題は
Fujitsu LifeBook 735DX でも起きているそうです。

Dag Brattli さんによる返答です「同じ現象が PPP を使っているとき (そして
、IrDA を使っていないとき) にも起こるか確認して貰えませんか。私の推定で
は APM 機能はシリアルポートをシャットダウンしているため、ドライバで再起
動時に再度初期化してやらなければならないのではないでしょうか。これは私
の知っている範囲では PCMCIA ドライバの一部では正しく実装されていますが
、シリアルドライバが同様に APM システムからのイベントを受けているとは全
然思えません。

というわけで、小さな専用カーネルプロジェクト、ということになります。
irport (と多分 FIR ドライバ) に APM サポートを加えることから始めるのが
一番やさしいでしょう。次に、必要ならシリアルドライバにパッチを加えます
。上でも書きましたが、正しく直すためのお手本には PCMCIA サブシステムが
良い情報源になると思います」

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5.9. 性能テスト

netperf は様々な種類のネットワーク性能を測定するのに使えるベンチマーク
で、Unix ドメインソケット、BSD ソケットを用いた TCP と UDP に対応してい
ます。このプログラムは単方向のスループットと、始点から終点までの遅れの
両方をテストできます。 Netperf <http://www.netperf.org/netperf/
NetperfPage.html> のページをご覧下さい。 

Pierre Beyssac さんの bing は ICMP ECHO_REQUEST パケットを使い、そのリ
ンク端での応答時間を様々なパケットサイズを用いて計ることで、一対一リン
クのバンド幅を測定します。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5.10. IrDA プロトコル

5.10.1. IrDA スタック

 

Figure 5-1. IrDA スタック

[irda_howto]

IrDA スタック

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5.10.2. 入手可能な IrDA プロトコルの実装

この項の内容は Lichen Wang さんから頂きました。

既存プロトコル群
   
    IrLAP、IrLMP と TinyTP は現在かなり安定になってきています。但し個々
    の実装については、まだ多少の問題は残っています。
   
    IrCOMM は広く使われていますが、Microsoft はこれをサポートしないと明
    言しており、IrSocket のみを用いています。
   
    IrObex、IrMC や IrTran-P などは様々なデバイスで使われていますが、PC
    上のサポートは統合されたものではない、個別のケース対応のものです。
    また、問題だらけ、ということもしばしばです。
   
新 IrDA プロトコルの開発状況
   
    AIR は主に IBM の推している規格です。より広い通信角度と長い通信距離
    (10m?) が実現できますが、通信速度は遅くなります。また、この既に遅く
    なってしまっているチャネルを、さらに時分割して使う機能も持っていま
    す。私は、この規格がユーザにもたらす恩恵はとても少ないと見ています
    。AIR に伴うハードウェアの変更もソフトウェアの変更も大きなものです
    。もし AIR を使った製品が市場に出てくるとしても、実際の製品をみるま
    でにはまだたっぷりと待たされることになると思います。
   
    IrBUS はシャープが推しているものです。これはリモートコントロールや
    、赤外線キーボードなどを対象としたもので、データ通信向けではありま
    せん。シャープの意図通りになれば、恐らく IrBUS はセットトップボック
    スや web-tv などで使われることになるでしょう。そのようなデバイスの
    普及率がある臨界点を超えた時点で、一部の PC でその種のデバイスをコ
    ントロールするために IrBUS を実装してくるのではないかと思っています
    。
   
    最後は VFIR です。これの利点は高いデータ転送速度 (16 Mbps) です。
    AIR や IrBUS とは違い、VFIR に伴うソフトウェアの変更はごく小さなも
    のです。変更点は主にハードウェア部です。
   
まとめ
   
    要約すると、新 IrDA プロトコルを期待して、それまで待つ必要があると
    は思いません。現在の IrDA の、インストールが容易で手堅い実装が、今
    の世の中の先端です。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5.11. 知られているバグ

バグを見つけたら、IrDA メーリングリストにバグ報告を送ってください。報告
には、dmesg の出力、Linux のバージョンとディストリビューション、使って
いるハードウェアの情報を含めてください。よろしくおねがいします!

しばしば IrCOMM は接続に失敗します。特に、両方のデバイスがディスカバリ
に入ると起き易いようです。ディスカバリは、 echo 0 >/proc/sys/net/irda/
discovery で禁止することができます。

CR (復帰) 文字は IrCOMM を使って二台の Linux マシン間の一方で、 cat
file >/dev/ircomm0、他方で cat /dev/ircomm0 としても転送することができ
ません。これは奇妙な動作を引き起こし、Linux マシンがフリーズします。
pc87108 デバイスドライバを、モジュールではなくカーネル組み込みにすると
カーネルがブート時にクラッシュします。当面の解決策としては、ドライバを
モジュールとしてコンパイルしてください。

IrOBEX では、受信時にデータの一部が消えることがあります。このバグはおそ
らく IrOBEX のユーザ空間側で起きていると思われます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

5.12. FAQ

 

 ・ irport 対 irtty
   
    irport は使ったことがありません。というのは、irtty で困っていないた
    めです。但し、この選択は使っている低レベルドライバの種類には依存し
    ないはずです。私は今のところ irtty、nec-ircc と irda-usb がうまく使
    えています (私のハードウェアでは、ですが)。
   
 ・ Q1 - 質問: ポートとか割り込みとかいう話は全然分かりません。どこから
    始めたらいいんでしょうか。
   
    A1 : その一ハードウェア設定
   
     1. まず、ハードウェアの仕様を調べます。見あたらなかったらベンダの
        サポートページを当たったり、サポートホットラインに電話して聞き
        ます。この文書の前の方にあるハードウェアサーベイで情報を見つけ
        ることができるかもしれません。
       
     2. 最新の BIOS を使う。通常ベンダのサポートページに置かれています
        。
       
     3. "setserial /dev/ttyS? -g -a | egrep 16550A" を実行してみる。表
        示されたデバイスのどれかが、多分さがしている IrDA ポートです。
        二番目であることが多いですが、これは保証の限りではありません。
       
     4. ここで UART (非同期シリアルコントローラ。代表的なものは上記
        16550A) のようにみえるものが、物理的には IrDA コントローラであ
        ることに注意してください。私の HP Omnibook 800 では、実際の IC
        は VLSI 社の VL82C147 PCI-IrDA コントローラです。このコントロー
        ラは速度 115,200bps までは UART のように振る舞います。但し、時
        として正しい設定情報を得るのが非常に難しいことがあります。
       
    その二: カーネルにハードウェア情報を与える
   
     5. cat /proc/ioports としてどのポートが現在使われているかを見ます
        。
       
     6. cat /proc/interrupts として、どの割り込みが現在使われているのか
        を見ます。
       
     7. ポートと割り込みが IR デバイスで使えるようにします。例えば、
        PCMCIA サービスを停止したり、/etc/sysconfig/pcmcia に PCIC_OPTS
        ="irq_list=3,4,5,7,9,10,12,14,15" のような行を加えます。
       
     8. ここまで分かったなら、正しい割り込みとポートがどれかを調べます
        。これには setserial /dev/ttySx irq M port 0xNNNN としてカーネ
        ルに教えてみます。 M と NNNN に複数の可能性があるなら、全部試し
        てみます (注意: Serial-HOWTO に記載のとおり、割り込み 0, 1, 6,
        8, 13, 14 を試すのは避けてください) [23]。
       
     9. うまくいったなら、そのときのパラメータを原作者まで送ってくださ
        い。送っていただいたものは赤外線ハードウェアサーベィに含めたい
        と思います。
       
    10. 幸運を祈ります
       
    IR シリアルポートを setserial コマンドを使って調整する必要があるで
    しょう (例えば、 setserial /dev/ttyS0 spd_vhi (速度 115200 bps 時)
    など)。
   
 ・ Q3 - 質問: tcsetattr read/write error というメッセージが /var/log/
    messages に出るんですが 
   
    A3 : 多分 /dev/ttyS* の選択を間違っているか、割り込みかポートの設定
    が違っています。
   
 ・ Q4 - 質問: すべての設定は正しそうで、それを裏付ける妥当なメッセージ
    が返ってきます。それなのに動きません。
   
    A4 : デバイスを 0.5m (1.5 フィート) 以内に置いてください。赤外線ポ
    ートを使うアプリケーションがただ一つのみとなっているかを確認してく
    ださい。両方のデバイスが同じプロトコル、例えば IrOBEX や IrCOMM を
    使っているかを確認してください。
   
 ・ Q7 - Ho Chin Keong さんの質問「２台のラップトップ間で通信を行うのに
    、この２台間で LAN ルートの設定を行う以外の方法はありますか?」
   
    A7 : Dag Brattli さんによる回答「あるともないともいえますね。IrDA
    標準の一つ IrCOMM を使えば二台のラップトップ間のシリアルケーブル接
    続がエミュレートできます。これを使えば、シリアルポート向けに書かれ
    たアプリケーション (ターミナル、PPP、 slip など) は使えます。但し、
    この機能はまだ Linux/IrDA には実装されていません。Linux/IrDA でサポ
    ートのある IrLPT (プリンタ) は、実際には IrCOMM のサブセットですか
    ら、機能の一部は動くと思います」
   
 ・ Q8 - Ho Chin Keong さんの質問「赤外線パスをえいやと 10 秒以上ふさぐ
    と、通信が再開できません。この場合、赤外線通信を再開するには
    irattach を殺して全体を再起動してやる必要があります。但し、ふさいで
    いる時間が 10 秒以内なら接続は維持されたままです。これは仕様、それ
    ともバグなんでしょうか? この時間を 10 秒以上、または無限時間まで伸
    ばす方法はあるんでしょうか?
   
    A8 : Thomas Davis さんによる回答「これは IrLAP/IrLMP コードのプライ
    マリ側のバグのようです。スタックを逆に辿って reset/disconnect 通知
    を送っていないようですね。このことは、プリンタと通信しようとしてい
    る間や、ハンドシェークしている際にディスコネクトや割り込みを行った
    時に、クエリモードで IrLPT が固まることで気がつくと思います (現在は
    、IrLAN 処理中に起きます)」
   
 ・ Q11 - IrDA を BSD で使えるのでしょうか?
   
    A11 : 今のところ Linux/IrDA が唯一の入手可能な GPL ソースです [24]
    。
   
 ・ Q12 - Rui Oliveira さんの質問「Palm III と Actisys 220L アダプタを
    つけたLinux マシン間で、通信がうまくいきません。マザーボードアダプ
    タ (メーカー名がありませんが、Actisys 210L に似たものだと思います)
    では、pilot 同期ツール (pilot-xfer) を赤外線アダプタのつながってい
    る /dev/ttyS1 に向け、SIR モードで IrLink を使ってあっさりと Palm
    III と Linux マシン間の通信ができています。これをシリアル - IrDA ア
    ダプタの Actisys 220L 経由でシリアルポートから行おうとすると、うま
    くいきません。質問は、IrDA アダプタ付きのシリアルポートに単にデータ
    を送り込むだけだと、実際には何が起きているのか、が知りたいのです」
   
    A12 : Lichen Wang さんによる答え「ハードウェア的には、IrDA SIR では
    シリアルパラレル変換、エンコーダ・デコーダ、それにトランシーバが必
    要です。 COM ポートをドライブしている UART はどの PC でもシリアルパ
    ラレル変換ハードウェアに相当します。一部の PC ではエンコーダ・デコ
    ーダを持っており、BIOS で有効と無効の選択ができます。無効と指定して
    いるときには、COM ポートは昔ながらの COM ポートとして使えます。エン
    コーダ・デコーダを有効としているときには、通常 COM ポートは使えなく
    なりますが、代わりに IrDA ポートが使えるようになります。 Actisys
    IR-210 は SIR トランシーバに相当するので、上に書いたような IrDA エ
    ンコーダ・デコーダ付きの UART を持つ PC で、エンコーダ・デコーダを
    有効にした状態で使うことができます。このハードウェア構成では、
    Windows 向けのセットアッププログラムに、この PC は "赤外線デバイス"
    と "ラップトップとデスクトップ向け内蔵赤外線ポート" を持っている、
    と指定してやる必要があります。これに対して、Actisys IR-220 はエンコ
    ーダ・デコーダとトランシーバの両方が含まれています。これは普通の
    UART と組み合わせて使うよう設計されたものです。もし、PC の UART に
    もエンコーダ・デコーダが組み込まれている場合、BIOS からそれを無効に
    しなければいけません。こちらのハードウェア構成では、 Windows 向けの
    セットアッププログラムには、"ACTiSTS" 社の "ACT-IR220L Infrared
    Wireless Interface" を持っていると指定してやる必要があります。とい
    うわけで、質問の答えです。シリアルポートにデータを投げるのに加えて
    、UART とエンコーダ・デコーダに、使用するデータレートを与える必要が
    あります。また内蔵エンコーダ・デコーダを持っている場合、UART にデー
    タレートを与える際に、エンコーダ・デコーダの設定も正しく行う必要が
    あります。 UART とエンコーダ・デコーダが独立になっている場合、両方
    にデータレートを正しく設定する必要があります。」
   
 ・ Q13 - 接続を行う際に、例えば Telnet を使った場合、login プロンプト
    が出てくるまで信じがたいほど時間がかかるんですが、これは何故?
   
    A13 : Renaud Baldura さん、Dag Brattli さんと Hee Thong さんによる
    回答「これは DNS 設定の問題です。リゾルバが、入ってくるコネクション
    の IP アドレスの逆引きをしようとしてタイムアウトしているためです。
    単に /etc/resolv.conf の名前を変更して他のものに面倒を見させるよう
    にするか、単に /etc/hosts にあなたの (Ir) 専用ネットワークのアクセ
    スするマシン名を静的バインディングとして与えることで、DNS 検索を避
    けることができます。両方のマシンがプライベートのテスト環境にあるな
    ら、/etc/host.conf に "order hosts, bind" という行を加えてください
    。これによって、DNS 検索の前に /etc/hosts ファイルを見るようになり
    ます。両方のマシンで、２台のマシンの IP とホスト名を反映するよう /
    etc/hosts を更新するようにしてください [25]。
   
 ・ Q14 - David LaPorte さんの質問「Toshiba Tecra 740cdt で IrDA ポート
    を動くようにした人はいませんか。読む限りでは、これは IRQ 11 で、
    ttyS2 に現れるはずです。えと、残念ながら PCMCIA モデムがついていて
    、これが ttyS2 を押さえてしまっており、PCMCIA コントローラが IRQ 11
    を押さえてしまっています。どなたか助言をいただけませんか?」
   
    A14 : Dag Brattli さんによる回答「まだマシンに Win95 が残してあるな
    ら、デバイスマネージャを起動して IrDA ポートの PnP セットアップを変
    更して (既に使っているところではないところに移して) ください。例え
    ば ttyS1 (Win95 で) を移動して PCMCIA カードが使おうとしている側に
    移し、ttyS2 用に ttyS1 の設定を使えば良いでしょう。
   
    dagbnb ~/linux/test/ > cat /etc/sysconfig/pcmcia            
    PCMCIA=yes                                                  
    PCIC=i82365                                                 
    PCIC_OPTS="irq_list=7,9,10"                                 
    CORE_OPTS=                                                  
   
    PCMCIA コントローラが IRQ 11 から移動したことを確認してください。ま
    た、Win95 上で IrDA ポートが有効になっていることを確認してください
    。標準設定では IrDA ポートは無効になっていますので。
   
 

II. 赤外線リモートコントロール

Table of Contents
6. はじめに
7. Linux Infrared Remote Control (Linux 赤外線リモートコントロール) -
    LIRC
8. Lego マインドストーム
9. シリアル赤外線コントローラ
10. COREL Netwinder PC 用の赤外線ツール
11. ir
12. irmctl
13. IRManager
14. irXxD
15. XR3
16. IR File Chooser (赤外線ファイル選択機)
17. IControl
18. jlirc
19. lircemu
20. tonto
21. 赤外線リモートコントローラと IrDA

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 6. はじめに

赤外線を使ったリモートコントロールは Linux/IrDA プロジェクトの対象では
ありませんが、この HOWTO には "Linux と赤外線" の話題を広くカバーするた
めに含めてあります。この問題に取り組んでいるプロジェクトもいくつか知っ
ています。最新の情報は、 TuxMobil <http://tuxmobil.org> に置いてありま
す。 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 7. Linux Infrared Remote Control (Linux 赤外線リモートコントロ
ール) - LIRC

LIRC <http://www.lirc.org> は、広く普及している赤外線リモートコントロー
ルに赤外線を送受するためのパッケージです。 LIRC にはシリアルポートに接
続されたハードウェアのためのデバイスドライバと、このデバイスドライバを
用いて赤外線信号を受信・解読および送信するためのデーモン、赤外線信号を
マウスの動きに変換するマウスデーモン、およびリモートコントローラでコン
ピュータを操作するための幾つかのユーザプログラムが含まれています。赤外
線ハードウェアは自作することも、様々な市販品を用いることもできます。樋
口隆英さんは LIRC についてこう書いています「凄いソフトで、殆どこれだけ
で完璧なものに思えます。但し、このソフトがサポートしているハードウェア
は市場に殆ど出回っていません (あるいは特製の回路をハンダ付けで作る必要
があります。これは普通の人には敷居が高いでしょう)。 FastIR ドライバに家
電品の赤外線向けサポートが実装されるか、なんらかの共通 API (例えば raw
IrSocket とか共通 ioctl とか) ができれば、LIRC はずっと普及すると思いま
す」 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 8. Lego マインドストーム

Luis Villa さんによる Lego Mindstorm with Linux Mini-HOWTO <http://
www.tlpd.org> からの引用です「ご存知ない方のために書きますが、Lego の
Mindstorm キットはロボット工学のキットで、Lego グループから約 200 US ド
ルで発売されています。キットの中身は、たくさんの Lego ブロックと、RCX
という大きなブロック (これには CPU や液晶ディスプレイと、いくつかのコネ
クタが付いています) と、数個のモータと、外界との交信用の光センサと、二
つのタッチセンサです」 

「RCX との通信は、マシンのシリアルポートにつながった IR tower を経由し
ます。つまり、シリアルポートがないマシンではアダプタを買わないかぎり
RCX を使えません。また場合によっては、IRQ やシリアルポートの競合のため
、シリアルポートがきちんと動かないこともあります。これは、特にモデムが
/dev/ttyS0 を使っている場合起きがちです」

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 9. シリアル赤外線コントローラ

これは単純で安価なデバイスで、どんなシリアルポートにも繋げられ、赤外線
リモートコントロール機能を持つ大概のデバイスを制御できます。最初はハン
ダ付けなしのブレッドボード上で設計されたもので、最終的には PC 用のボー
ドになっています。このパッケージについてはここ <http://www.armory.com/
~spcecdt/remote/remote.html> を見てください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 10. COREL Netwinder PC 用の赤外線ツール

Ryan Shillington さんから COREL Netwinder を赤外線経由で制御するための
ツールについて幾つか寄せて貰っています。例えば

「Corel Palm Administrator のサーバ側のデーモンですが、これを動かすには
ir-simple がインストールされ、立ち上がって動いている必要があります。こ
れを使えば IP アドレス、ゲートウェイアドレス、eth1 の設定などのチェック
や変更が行えます。また、簡単なコマンドの実行や、温度やメモリや負荷の状
態のチェックも可能です」

「Corel Palm Administrator のクライアント側の方では、簡単なコマンドの実
行と、温度やメモリや負荷の状態のチェックなどが可能です」

「これは、とても基本的な赤外線デバイスドライバです。これは IrDA をサポ
ートしておらず、信頼性のない転送しかサポートしていません。これは、リモ
ートコントロール用の信号 (とキーボードなど) に特化したものと思います。
IrDA とは全く違ったやり方で、データをブロックしたり流したりします。」

ツールはここ <http://www.netwinder.org/~ryansh/> にあります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 11. ir

ir は、 Chris Dodge さんの RedRat 2 <http://www.redrat.co.uk/
index.html2> 赤外線コントローラ用インターフェースプログラムで、家電製品
との間で赤外線通信を行うためのものです。対象となるのは、TV、ビデオデッ
キ、ケーブルテレビセットトップボックスやステレオなどです。このプログラ
ムは基本的な Perl の機能だけを使って書かれており、外部パッケージを必要
としません。このため、このプログラムは Perl とシリアル通信をサポートす
るどんなプラットホーム上でも動作するはずです。このプログラムはコマンド
行からも、cron からも、e-mail ハンドラからも (alias 経由で) 使え、さら
には cgi スクリプトとして、好きなコードでフォームを自動生成させることも
できます。マクロ機能もあるので、一つのコマンドで一連の赤外線信号を送る
こともできます。 X-10 の IR543 を使って、X-10 デバイスを制御することも
可能です。ダウンロードはここ <http://thekramers.net/ir/> からです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 12. irmctl

irmctl <http://irmctl.sourceforge.net/> は、お好きな IrDA 非互換の赤外
線レシーバを制御するためのユーティリティデーモンです。現時点では、irman
(libirman 経由で) のみサポートされています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 13. IRManager

IRManager <http://jaqr.student.utwente.nl/releases/irmanager/> は IRMan
赤外線レシーバの高度な利用のための Linux デーモンです。このデーモンは、
赤外線信号を (複数の) 専用の IRMan アプリケーションに中継し、自作のスク
リプトやアプリケーションと組み合わせて使うこともできます。また、高度な
設定オプションによるマッピングシステムを持っており、あなたのコンピュー
タをリモートで使う際の、最高の柔軟性と使いやすさを兼ね備えた操作を実現
しています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 14. irXxD

irXxD <http://home.iae.nl/users/leonvs/projects/index.html#irxxd> はリ
モートコントロールコードを送受するためのライブラリです。Linux カーネル
2.0 と 2.2 で IR 信号を送受するためのモジュールが含まれており、それ以外
の様々な OS にも対応しています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 15. XR3

Xr3 <http://www.orbit2orbit.com/gmd/RedRat/index.html> は RedRat2
<http://www.redrat.co.uk/index.html> シリアルポートベースの IR リモート
コントローラのための一連のツールです。このソフトウェアは元々 ReplayTV
<http://www.replaytv.com> パーソナルビデオレコーダ (PVR) を操作するため
に開発されたもので、殆どの赤外線操作可能な A/V 機器を扱えるよう拡張され
ています。」 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 16. IR File Chooser (赤外線ファイル選択機)

Infra Red (IR) File Chooser <http://www.splitbrain.org/index.php?x
=.%2FProgramming%2FPerl%2FIR+File+Chooser> はリモート制御のメニューでフ
ァイルを選択して、指定されたプログラムでロードします。好きなだけのファ
イルの種類と、それに関連づけられたプログラムの組を定義できます。この
InfraRed (IR) File Chooser の機能は Perl やシェルスクリプトを使って拡張
できます。GUI は Perl::GTK で作成されており、リモート制御コマンドの取り
込みには RCU::Lirc を使っています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 17. IControl

IControl <http://icontrol.sourceforge.net> は Creative 社 RM-900 リモコ
ンと付属の IR LiveDrive! 受信ユニットからの信号を解釈するものです。これ
は現在様々なプログラム (XMMS、Xine、XawTV や XScreensaver など) に入力
を送ったり、画面上のウィンドウをめくったり (ウィンドウを背面に送ったり)
、入力対象画面を変更するなどが行えます。また、これは完全に構成変更可能
で、ユーザが各キーに、デーモンのサポートする任意の動作を割り付けること
が出来ます。他のリモコンのサポートも計画中です。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 18. jlirc

jlirc <http://jlirc.sourceforge.net/> は LIRC と WINLirc プログラムへの
Java クライアント API です。これをつかって、開発中の Java アプリケーシ
ョンにリモートコントロールのサポートを追加できます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 19. lircemu

lircemu <http://www.fi.muni.cz/~xkutale1/en/lircemu/> は、Lirc アプリケ
ーションの開発者向けの小さなツールです。これは Lirc デーモンをエミュレ
ートするもので、Lirc をサポートするプログラムのテスト、開発、利用が行え
ます。これはグラフィカルな仮想リモートコントロール機能を提供しますので
、ボタン押しを簡単に行うことができます。また、単純なコンソール利用バー
ジョンも同梱されています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 20. tonto

Tonto <http://giantlaser.com/tonto/> は、Philips 社の Pronto シリーズの
リモコン関連開発者の友です。Tonto は、 CCF ファイルを編集するための IDE
GUI 機能と Java API の両方を提供します。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Chapter 21. 赤外線リモートコントローラと IrDA

これまでに述べてきた内の２つのプロジェクトでは、手製のドングルを赤外線
リモコン用に作っていました。ドイツの ELEKTOR <http://www.elektor.de> 誌
97/5 月号 p. 28 にも、シリアル IrDA ドングルを自作するための説明があり
ます。誰か、この２つの種類のドングルを一つにまとめられないものでしょう
かね。

赤外線リモートコントロールと IrDA との関連性について、Linux/IrDA メーリ
ングリストでの議論から少し引いておきます。以下の引用は、多少編集して短
くしてあります。

Ryan Shillington さんによると「家電機器のIR - CIR とリモートコントロー
ルの赤外線機能および ASK-IR は、FIR、MIR や SIR とはずいぶん異なってい
ます」

「リモートコントロールの赤外線機能と ASK-IR は赤外線光源を使っています
が、とても低速で、周波数も低いです。一方、到達可能距離はずっと長くなっ
ています。動作速度は 2400 baud 程度です。

SIR はずっと高速で、リモートコントロールとは違って数文字以上のデータの
受け渡しが必要で、かつ長い距離での通信を行うことを意図しています。

MIR はもう少し高速で (距離はより短くなります)、スピードは 1.15Mbps にな
り、 FIR は (デバイスを殆どくっつけるようにして置く必要がありますが)
4Mbps です。通信可能距離は、データを送るスピードに反比例します。

私はリモートコントロールの赤外線制御用のドライバを書いていますが、ここ
で注意しておきたいのは、あなたの赤外線で操作したい対象がサポートされて
いる必要がある、ということです。 NEC、RC-5 や RC-0 プロトコル (最も普通
のものです) などがサポートされているか見てください。

SIR はリモートコントロール信号の受信にも使えます。ボーレートを適切な低
い値にすれば、データが入ってきます。但し、経験上、このデータは正しくあ
りません。これは正しいやり方で解析されておらず、その結果としてチェック
サムの計算や補数によるチェックを行うことができません。

リモートコントロールからのデータが (SIR で) 正しく取れるよう取り組んで
います。また、SIR は温度によってリモートコントロールからのデータを違う
値として取り込むという報告も受けています。但し、私にはこのような経験は
ありません」

Lichen Wang さんがこれに答えています「殆どのラップトップに搭載されてい
る、いわゆる ASKIR は、リモートコントロールのためのものではありません。
ASKIR は Sharp Wizard と Zaurus PDA、及びシャープの一部のノート PC 向け
のものです。シャープはこの仕様を IrDA 規格が策定されるよりずっと前に作
成しており、現在でも従来機との互換性のために搭載しています。また Apple
の Newton も一度はこの機能を持っていました。

簡単にいって、ASKIR は 9.6 kbps (19.2 と 38.4 Kbps も可能です) の非同期
データフォーマット、8 ビットデータ、1 ストップビット、奇数パリティを用
いています。スタートビットと、データ/パリティ中の '0' ビットは 500KHz
の赤外線方形波 (DASK 副搬送波) として送信されます。ストップビットとデー
タ/パリティ中の '1' ビットは、赤外線送信が行われないことで伝達されます
。

ここまでの説明で分かるとおり、これは全く現在の赤外線リモートコントロー
ルとは非互換です。... (中略) ...

その通りです。SIR ハードウェアを使って受信だけでなく送信も行えます。も
ちろん、いくらかの制限はあります。

殆どの IR リモートコントロールは 38KHz 副搬送波を使っています。38 の三
倍は 114 で、これは 115.2 にかなり近い値です。というわけで、UART を
115.2 Kbps で動作するよう設定し、また 7 データビット、パリティなし、1
ストップビットに設定します。38 KHz の副搬送波の三サイクル分は、データ
0x5B を送受することになります。

副搬送波が 38KHz でなければならないことに加えて、さらにいくつかの物理的
制約があります。 SIR レシーバは、こういう目的向けに設計されているわけで
はないため、38KHz ではあまり感度が良くありません。SIR トランスミッタは
もっと低いデューティサイクルを想定しており、副搬送波として強い信号を送
信することはできません。

IR リモコンは、特定のパターンで副搬送波をオンオフすることで制御信号を符
号化しています。副搬送波が送受できるようになったわけですから、残る問題
はタイミングだけです。

送信としては、0x5B の連続送信を何回副搬送波のトーンバーストとして送れば
いいのか、そしてバーストの間の無送信時間をどれだけとる必要があるのかを
知る必要があります。

受信としては、0x5B のデータを何回連続して受け取ったか、それら連続したバ
イト間の間隔がどれだけあったかを知る必要があります。... (中略) ...

IrDA リンク間距離と、SIR/MIR/FIR との関係の私の経験は、Ryan さんの言っ
ている内容とは多少異なります。... (中略) ...

SIR、MIR 及び FIR とも 0 から 100cm の距離で実用的に動くはずです。但し

(a) 一部のデバイスは長距離通信時に問題が出ます。

できる限り、２つの通信対象のデバイスは 50cm 以上離さないでください。低
消費電力のデバイス、例えばポケットベルや携帯電話などはもっと短い距離と
してください。これは、このようなデバイスが MIR や FIR ではなく SIR を使
っているという事実に関わらず、です。

(b) 一部のデバイスは短距離通信時に問題が出ます。

２つのデバイスは、少なくとも数センチは離してください。二つのデバイスを
あまりに近づけすぎると、問題が出ることがあります。

リンクが不安定なときに２つのデバイスを近づければいいと言うのは、感覚的
に納得がいくものです。一方、近づけすぎるのはやはりダメ、というのは直感
に反します。近づけたときに問題が起こる理由は、100cm の時に比べ 1cm では
、光の強さが 10,000 倍になるためです。0.5cm では 40,000 倍等々です。問
題を起こす赤外線レシーバメーカは、この広いダイナミックレンジへの対応に
問題を起こしているのです。 10W の電球の下で文字を追うのは誰でも苦労しま
すが、それが 100,000W だとどんな気分になるか想像してみてください。

IrDA の物理レイヤは IR リモートコントロールで使われている DASK 変調とは
全く互換性がありません。従って、FIR とリモートコントロールで同じ制御回
路を使うことはできません。但し、殆どの FIR コントローラチップはリモート
コントロールをサポートするための多少の追加回路を持っています。ここでは
一部のみ名を上げますが、National Semiconductor、SMC 及び Winbond はすべ
てこのような作りの I/O チップを出しています。

FIR 用の IR トランスミッタとリモートコントロールはとてもよく似ています
。私は標準の FIR トランスミッタを使ってみましたが、リモートコントロール
としては 10m まで使えました。従って、リモートコントロール用に設計された
トランスミッタと同じように良好に動作します。

FIR 用の IR レシーバについては多少異なります。FIR レシーバはリモートコ
ントロールの信号を受信できますが、その距離は 1m までです。一方リモート
コントロール用に設計されたレシーバは通常 10m は届きます。

私は National Semiconductor 社製の I/O チップを搭載していて、FIR とリモ
ートコントロールの両方をサポートしている ISA バスカードを持っています。
また、FIR とリモートコントロールの両方のレシーバ (加えて両モード用のト
ランスミッタ) を持った IR ドングルも持っています。私自身の経験は DOS 環
境のみで、まだ Linux では走らせてはいませんが、誰か興味のある方はいます
か?」

Benny Amorsen さんによると「私は ASKIR をサポートしているらしいラップト
ップ機を持っています。赤外線ポートのモードは BIOS で ASKIR に切り変えら
れます。BIOS でモードを切り変えるためにリブートしているのでは殆ど役に立
ちませんので、誰かが動作時に切り変える方法を見つける必要があるでしょう
」

Dag Brattli さんによると「多分 IrDA 互換のリモートコントロールは
IrControl (以前は IrBus と呼ばれていた) を使うことができるはずです。私
は今のところ IrControl 標準準拠のリモートコントロールは知らないんですが
、多分どこかにあるはずです (この件について誰か知りませんか?)。まず、 
Linux/IrDA site <http://www.irda.org> から物理層標準の仕様 (これには
IrControl が含まれていると思います) を取ってくる必要があるでしょう。

通常の IrDA (IrLAP を使うもの) は、リモートコントロールにはうまく適合し
ません。これは、通常の IrDA はコネクション指向の特性を持ち、コネクショ
ンレス目的では 9600bps までしかサポートしていないためです。このように速
度が制約されているのは、目の安全への考慮のためとされています (でも、CIR
が同じ出力でより良く動作する理由がこれではわかりませんが)。それに、私は
ラップトップ機間で 4-5m 離して通信ができているのを見たこともあります
(この状態で高速な通信ができるとは思いませんが)。

ほとんどの IrDA チップセットは CIR 動作が可能ですし、ドライバで CIR を
話せるようにするのも実に簡単です。樋口隆英さんが IrSocket を調べ始めて
おり、その改造で CIR パケットを送受できる Ir(DA) の "raw" ソケットを開
けるようになると素晴らしいです。全 CIR アプリケーションをユーザ空間で実
行できるようになりますので。

私の知る限り、Corel は Netwinder を制御するために CIR を使うことに興味
を持っているようです。この記事 <http://www.slashdot.org/articles/98/12/
05/0916216.shtml> か、Ryans page <http://www.netwinder.org/~ryansh> を
ご覧下さい。

Hewlett-Packard 社の IrDA Data Link Design Guide <http://www.hp.com/go/
ir> の p.21 より。「Hewlett-Packard 社の IrDA トランシーバを使って IrDA
以外の信号を送受することは可能です。そのような実装の詳細については、ア
プリケーションノート "Transceiver Performance with ASK and TV Remote
Signals" を参考にしてください」

IR-MAN ページ <http://www.usuarios.com/ib308564/irda.html> から

「幸いなことに、多くの IrDA デバイスは TV 用リモコンで使われている
38KHz の ASK 変調と互換性を持ちます。これは、IrDA デバイスはそのような
赤外線信号で動作できると言うことです。但し、どうやらポータブルコンピュ
ータで TV リモコンからの赤外線を受信できないものが、まだ多数あるようで
す。

デスクトップコンピュータの場合、マザーボードの種類によって２つの選択枝
があります。普通の Pentium マザーボードは赤外線通信をサポートした I/O
チップセットを搭載しています。この場合、赤外線送受デバイスを接続するた
めの専用コネクタがあります。もう一方の選択枝は、コンピュータのシリアル
ポート (RS-232) に繋げるシリアルタイプのトランシーバを購入することです
。PC リモートコントロールは、このどちらの IrDA デバイスを用いた場合でも
正しく動くことをテスト済みです。

 1. IRmate IR-210 シリアルポート赤外線アダプタ ... このデバイスで認識可
    能なシリアルポートのデータ速度は 2400 bps です。この種のアダプタで
    この通信速度は共通なのか、このモデル固有の特性なのかは分かりません
    。
   
    受信したデータ値のサンプルがどの程度似ているかを見てみましょう。一
    部の赤外線コマンドは毎回大きく変化し、認識が困難です。この場合、比
    較時に許容値をとても大きくとることで対処しますが、違うコマンドと誤
    認する危険性が大きくなります。殆どどの場合も、最適な許容値は 20 で
    した。
   
 2. Actisys IR2000L を Asus P2B マザーボードにつないで使っています。(中
    略) 幾つかのポートスピードで良好に動作しますが、4800 bps が最適なよ
    うです。同様のタイプの他のアダプタもこのスピードが最良のようです。
    例となるデータシーケンスをこのデバイスで見てみたところ、幾つかのリ
    モコンのボタンで全く同じシーケンスが送られているように見え、区別は
    全くできませんでした。
   
 3. Asus IR IR-eye は上と同じマザーボードに接続できます。Actisys デバイ
    スと同様に良好に動作します。
   
TV のリモコンはコマンドを一方向で、最大 30 フィートの距離を低速バースト
信号として送ります。このようなリモコンでは使い勝手を向上するため、ほど
ほどの指向性を持った赤外線発光ダイオード (LED) を使用しています。IrDA
によるコードレス接続では、一対一かつ双方向でファイル転送を行いますが、
その際 IrDA では短い距離用の高速バースト信号を使い、指向性の強い赤外線
LED を使用しています。 IrDA 通信では比較的注意深く光の向きを合わせる必
要がありますし、障害物に弱くもあります。このため、リモートコントロール
を相手にしているときに長い距離での動作は期待しないでください」

Alessio Massaro さんによると「IrDA はテレビのリモコンとは会話できません
が、シリアルインターフェースをエミュレートする IrCOMM レイヤは持ってい
ます。私の想像では、LIRC が IrDA で動くようにするには、単に IrCOMM 仮想
シリアルドライバから読み込むようにしておいて (/dev/cua などに対するよう
に) マシンのドングル+IrDA ヘッダにリモコンを向けてやれば良いのではない
かな」

Dag Brattli さんの返答はこうです「多分普通のシリアルポートのことを話し
ていると思うんですが、私は少なくとも IrDA がそういうものとして動くよう
に作るという選択はしませんでした。私は全デバイスドライバをネットワーク
デバイスドライバに向けて実装しており、多少の差異というか、よりフレーム
指向になるよう作っています。デバイスドライバは IrDA フレームを送受する
もので、他に何も受け渡ししません。

それに、現在のところ IrDA デバイスで、より生の状態の読み書きをサポート
するために tty インターフェースを実装しなければならないとも思っていませ
ん。ついでながら、 IrCOMM のことは忘れてください。この件には関係ありま
せん。

実はデバイスドライバ自体には、生の読み書きのサポートは既に加えてありま
す。これは一部のドングルで必要になるためです」

III. 付録

Table of Contents
A. Credits (謝辞)
B. 版の履歴
C. シリアル赤外線ポートスニファ
   
    C.1. Gerd Knorr さんによるスニファ
    C.2. sersniff
   
D. 赤外光源と目の安全について
E. 著作権、免責、商標
   
    E.1. 免責と商標
    E.2. 著作権
    E.3. GNU Free Documentation License - GFDL
    E.4. 日本語訳について
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Appendix A. Credits (謝辞)

【訳注: Credits (謝辞)の項は Invariant に指定されているので、訳しません
。】

Thanks to:

     * The members of the Linux-IrDA mailing list.
     * The writers of the other HOWTOs which gave me many inspirations.
     *
 The developers of the SGML-Tools which provided some means to write a HOWTO.
     * Benny Amorsen
     * The Armadillo with the Mask 
     * Mathieu Arnold 
     * Fons Botman
     * Philip Blundell
     * Dag Brattli - Linux/IrDA core team
     * David Burley 
     * Andreas Butz
     * Edgardo Calabrese >
     * Andrew Chadwick
     * Ho Chin Keong
     * Claudiu Costin
     * Stefan Dahlke
     * Thomas Davis - Linux/IrDA core team
     * Colin DeWitt 
     * Richard Donkin
     * Ha Duong Minh
     * Ales Dryak
     * K-H. Eischer
     * Ove Ewerlid
     * Timo Felbinger
     * Tollef Fog Heen 
     * Christian Gennerat 
     * Gerhard Gonter 
     * Mike Groeneweg
     * Bjoern Hansson
     * Takahide Higuchi - Linux/IrDA core team
     * Jon Howell
     * Gerd Knorr
     * Hannes Kurth hkurth_at_olsn.org
     * Arthur Tyde  and Bryan Abshier from Linuxcare Inc.
     * Joonas Lehtinen
     * Mark Lewis
     * Florian Lohoff 
     * George MacDonald 
     * Pawel Machek
     * James McKenzie
     * Alessio Massaro
     * Harald Milz
     * Bjoern Mork
     * Tang Ning
     * Rui Oliveira
     * Igor Pesando
     * Kurt Pfeiffle
     * Raj Rijhwani
     * Christian Rishoej
     * Wessel de Roode
     * Markus Schill
     * Ryan Shillington
     * Richard Titmuss
     * Jean Tourrilhes
     * Carlos Vidal
     * Lichen Wang
     * Guenther Wieser
     * Toni van de Wiel
     * Ralf Zabka
     * Christian Zoz

Sorry I didn't start to follow the credits when starting the HOWTO, so
probably I forgot somebody.

残念ながら、HOWTO を開始したときからこの謝辞の作成を開始しなかったため
、忘れているかたがいると思います。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Appendix B. 版の履歴

 

 ・ v0.1 to v0.4a, 19 March 1998 to 4 August 1998, ドラフト。LDP に未収
    録
   
 ・ v1.0, 14 August 1998, LDP へリリース
   
 ・ v1.1, 18 August 1998, Takahide Higuchi さんによる IrCOMM パッチ情報
    追記。細かな修正。
   
 ・ v1.2, 24 August 1998, linux-irda-1998-08-20 スナップショットへアッ
    プデート。FIR と改版履歴の項を追加。細かい修正。
   
 ・ v1.3, 27 September 1998, 複数インスタンスの説明の項、携帯電話、ディ
    ジタルカメラ Linux間通信、最新版 - CVS、節電の各項を追加。一般的設
    定の項を小変更。ハードウェアサーベイを修正。その他細かい修正。
   
 ・ v1.4, 11 October 1998, IrCOMM サポートの記載を改良。ドングル接続の
    項を変更。 Palm III の項を修正。その他細かい修正。
   
 ・ v1.5, 12 October 1998, 細かい修正。
   
 ・ v1.6, 26 October 1998, IrManager の項を追加。linux-irda-1998-10-21
    スナップショットに更新。ドングル接続の項を修正。その他細かい修正。
   
 ・ v1.7, 1 November 1998, リモートコントロールの項追加。ドングル接続の
    項を修正。その他細かい修正。
   
 ・ v2.0, 9 January 1999, Linux/IR がカーネル 2.1.131 に統合されたこと
    に伴うほぼ全面的な書き換えと再編集。ドングル接続の項に BIOS サポー
    トの情報追加。設定ツールの項と CVS の項削除。
   
 ・ v2.1, 13 January 1999, 細かい修正。
   
 ・ v2.2, 26 January 1999, プロジェクト名を Linux/IR から Linux/IrDA へ
    変更。トラブルシュートの章に加筆。既知のバグの項の順序をトラブルシ
    ュートの章の後に再配置。多少のゴミを削除。
   
 ・ v2.3, 4 February 1999, Andreas Butz さんによる目の安全の章を追加。
    スペルチェック。カーネルパラメータの章を見直し。Andreas Butz さんに
    よる情報追加。その他小修正。
   
 ・ v2.4, 9 February 1999, パッチファイルの適用関連の情報を変更。
   
 ・ v2.5, 12 March 1999; Linux/IrDA を新 URL に。Big Endian サポートの
    章を追加。 irdaping, irdadump の章を追加。「IrDA を超えて - 接続距
    離を伸ばすには」の章追加。ラップトップの赤外線ポートについての記載
    のある章の手直し。Fons Botman さんによる Windows の章への情報多数追
    加。SMP の章追加。Ericsson SH888 の情報を追加。古くなった FAQ を削
    除。その他細かい修正。
   
 ・ v2.6, 6 April 1999, ドッキングステーションの章追加。キーボードコネ
    クションとシリアルケーブルを使った接続の項追加。その他細かい修正。
   
 ・ v2.7, 11 June 1999 これからの標準 (Bluetooth と IrDA) の章を開始。
    GUI の章に CORBA の注記を追加。Nokia 社の携帯電話に関する情報を多少
    加筆。シリアル赤外線ポートスニファの付録を追加。IrDA ネットワーク近
    傍の節を開始。 Psion 5 の章を開始。付録 C を開始。LIRC に多少加筆。
    その他細かい修正。
   
 ・ v2.8, 20 September 1999, LiRC メーリングリストを追記。<htmlurl ...
    > タグを <url ...> に変更。conf.modules のエントリフォーマットを変
    更。ハードウェア検出 (PCMCIA) の項を追加。IrDA メーリングリストを追
    記。 Linux-IrDA メーリングリストのアドレスを変更。マルチプルインス
    タンスの節に小加筆。仏語訳への URL を追加。付録 B に sersniff の章
    を追加。コンパイル済みパッケージの節を追加。Palm III と Thinkpad
    600 の接続の章を追加。その他細かい修正。
   
 ・ v2.9, 21 September 1999, プリンタ接続の章の変更。スペルチェック。
    Siemens S25 との接続について加筆。その他細かい修正。
   
 ・ v2.10, 2 November 1999, 細かい修正。
   
 ・ v2.11, 9 March 2000, 'irctl' と 'IRManager' 赤外線コントロールプロ
    グラムへのリンク追加。文書のベース URL 変更。Linuxcare Inc. の
    Arthur Tyde さんと Bryan Abshier さんによる Linux と Windows CE と
    の接続の章を追加。IrDA-Java インターフェースのリンク追加。 Guenther
    Wieser さんによる東芝の機種と IrDA についての HOWTO へのリンク追加
    。 Siemens S25 との接続に関する追加情報を Timo Felbinger から頂き追
    加。携帯電話への AT コマンドのリンク追加。コード履歴の章追加。SH888
    電話帳ツールへのリンク追加。 Lichen Wang さんによる IrDA プロトコル
    の短いサーベィ追加。その他細かい修正。
   
 ・ v3.0, 5 November 2000, フォーマットを DocBook に変更。ライセンスを
    GNU Free Documentation License - GFDL に変更。題名を IR-HOWTO から
    Infrared-HOWTO に変更。文書の URL を更新。 Linux/IrDA へのリンクを
    更新。
   
 ・ v3.1, 8 November 2000, リンク更新。DocBook 3.1 に準拠。
   
 ・ v3.2, 21 March 2001, 使われなくなった irmanager と /dev/irnine への
    言及と誤ったデバイス難波に関する記載を削除。カーネル 2.4.x に伴う修
    正。詳細な査読とテスト。モジュールオプションとヌルモデム接続に関す
    る章追加。節の順序見直しと整理。リンク更新。
   
 ・ v3.3, 22 April 2001, 2.4.3 からドキュメントを取り込み。使われなくな
    ったものへの言及を削除。その他小修正。
   
 ・ v3.4, 10 August 2002 Linux PDA の章の加筆と PPP、OpenOBEX、印刷関連
    などについての記載追加。各セクションで、irattach の -s オプションの
    新シンタクスへの変更。 IrDA と USB の章の手直しと改善。印刷関連手直
    し、irlpt サーバと IrLPT についてのヒントはもう役に立たないので削除
    。Common Unix Printing System - CUPS の使い方を記載。Gnome IrDA ア
    プレットと、Beamster GTK/Python を新設の GUI セクションに追記。日本
    語訳へのリンク追加。幾つかの LIRC プログラム (IR Chooser、IControl
    、jlirc) の情報記載。URL への参照をハイパーリンクに書き換え。@ を
    _at_ に変えてスパム対策を行う (多少は役に立つと期待)。URL 訂正 (LDP
    等)。その他細かい修正。
   
 ・ v3.4b 12 December 2004 (日本語版のみ) v3.5,v3.6 の追加事項のうち、
    IrCOMM2k, LIRC 追加、Zaurus キーボード、 Serial 関係、携帯電話関係
    、PocketPC の節の加筆を取り込み。mobilix.org を tuxmobil.org に書き
    換え。IrLAN 関係にメンテナンスなしの注記を挿入 (内容は削除せず)。
   
 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Appendix C. シリアル赤外線ポートスニファ

C.1. Gerd Knorr さんによるスニファ

このプログラムは Gerd Knorr さんから提供を受けたものです。これを用いて
プロトコルの細部を見るため IrDA を通して行われる通信を表示することがで
きます (ソース中の ttyS1 は必要に応じて変更してください)。 

 

#include <stdio.h>                                                     
#include <stdlib.h>                                                    
#include <unistd.h>                                                    
#include <string.h>                                                    
#include <fcntl.h>                                                     
#include <termios.h>                                                   
#include <ctype.h>                                                     
#include <sys/types.h>                                                 
#include <sys/time.h>                                                  
#include <sys/ioctl.h>                                                 
                                                                       
#define BUFSIZE 1024                                                   
                                                                       
int                                                                    
read_and_print(int fd, int sec, int usec)                              
{                                                                      
    int         rc,l,i;                                                
    char        buf[BUFSIZE+1];                                        
    fd_set      set;                                                   
    struct timeval  tv;                                                
                                                                       
    if (sec || usec) {                                                 
    FD_ZERO(&set);                                                     
    FD_SET(fd,&set);                                                   
    tv.tv_sec  = sec;                                                  
                                                                       
    tv.tv_usec = usec;                                                 
    if (0 == select(fd+1,&set,NULL,NULL,&tv))                          
        return -1;                                                     
    }                                                                  
                                                                       
    switch (rc = read(fd,buf,BUFSIZE)) {                               
    case 0:                                                            
    printf("EOF");                                                     
    exit(0);                                                           
    break;                                                             
    case -1:                                                           
    perror("read");                                                    
    exit(1);                                                           
    default:                                                           
    for (l = 0; l < rc; l+= 16) {                                      
        printf("%04x  ",l);                                            
        for (i = l; i < l+16; i++) {                                   
        if (i < rc)                                                    
            printf("%02x ",buf[i]);                                    
        else                                                           
            printf("-- ");                                             
        if ((i%4) == 3)                                                
            printf(" ");                                               
        }                                                              
        for (i = l; i < l+16; i++) {                                   
                                                                       
        if (i < rc)                                                    
            printf("%c",isalnum(buf[i]) ? buf[i] : '.');               
        }                                                              
        printf("\n");                                                  
    }                                                                  
    break;                                                             
    }                                                                  
    return rc;                                                         
}                                                                      
                                                                       
void                                                                   
setlines(int fd, int rts, int dtr)                                     
{                                                                      
    int lines = 0;                                                     
                                                                       
    if (rts) lines |= TIOCM_RTS;                                       
    if (dtr) lines |= TIOCM_DTR;                                       
                                                                       
    ioctl(fd,TIOCMSET,&lines);                                         
}                                                                      
                                                                       
int main(int argc, char *argv[])                                       
{                                                                      
    int         ser,i;                                                 
    struct termios      saved_attributes,tattr;                        
    struct winsize      win;                                           
    char        buf[16];                                               
                                                                       
    if (-1 == (ser = open("/dev/ttyS1",O_RDWR))) {                     
    perror("open /dev/ttyS1");                                         
    exit(1);                                                           
    }                                                                  
                                                                       
    /* Set the terminal mode */                                        
    tcgetattr (ser, &tattr);                                           
    cfmakeraw (&tattr);                                                
    cfsetospeed (&tattr,B9600);                                        
    cfsetispeed (&tattr,B9600);                                        
    tcsetattr (ser, 0, &tattr);                                        
                                                                       
    setlines(ser,0,0);                                                 
#if 0                                                                  
    tcsendbreak(ser,0);                                                
#endif                                                                 
                                                                       
    /* main loop */                                                    
    fprintf(stderr,"setup done\n");                                    
    while (-1 != read_and_print(ser,30,0)) {                           
    usleep(100000);                                                    
    }                                                                  
                                                                       
    return 0;                                                          
}                                                                      

 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

C.2. sersniff

Jonathan McDowell さんの書いた sersniff <http://www.earth.li/
projectpurple/progs/sersniff.html> は 2 つのシリアルポート間をトンネル
/ sniff する簡単なプログラムです。このプログラムは Nokia 9000i 携帯電話
機と Windows だけで動作する Nokia の NServer ソフトウェアの間で使われて
いるプロトコルを解析するツールとして作成されたものです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Appendix D. 赤外光源と目の安全について

この節は、Linux/IrDA メーリングリストでやりとりされた意見をまとめたもの
です。医学的にしっかりした根拠があるものではありませんし、もっと良い事
実や根拠のある情報をお持ちの方はこの HOWTO に貢献をお願いします。

IrDA の仕様では、IrDA デバイスの通信範囲は目の安全のために 1m に抑えら
れていると記載されています。これ以外にも、この制約が課されている理由に
は、消費電力と IR の混信などがありそうです。基本的に赤外線が目に危険な
のは、赤外線が目に見えないため、眩しい IR 光源から虹彩を守るために瞳孔
が閉じないためです。これは紫外線で雪盲になるのと同じ状況ですが、紫外線
に比べて赤外線は波長が長いため、赤外線の光のエネルギーの危険性は紫外線
よりずっと小さなものです。

ウェブ上で見つけることができた唯一の法的規制と医学的なアドバイスは、熱
源電球の赤外線放射に関するものと、IEC 825-1 (CENELEC EN60825-1) の溶接
手順に関するものでした。これらの記載によると、恐らく IrDA デバイスの放
射する赤外線は恐らく害がないことを示唆するものと思われます。なぜなら、
IR LED の出すピーク出力 (約 300mW) は医学用の赤外線熱源電球の出す出力よ
りも数桁低いためです。このような熱源電球では目の保護眼鏡を付けることが
想定されていますので、例えば 1000 個の赤外線 LED が同時に発行するところ
を見つめる場合には、同様に保護眼鏡を付ける必要があるでしょう。赤外線の
影響は主に熱であり、紫外線の場合のような生化学的な影響や破壊ではありま
せん。但し、Hewlett-Packard 社の HP Omnibook 800 の説明書には IR LED を
直接見ないようにとの但し書きがあります。

上で述べたようにここの議論は IR LED と赤外線ランプの仕様に関するデータ
から仮定した推定と常識に基づいたものに過ぎません。もしよりよい医学的知
識を持った方がここに付け加えることができるならば、是非ともお願いします
。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Appendix E. 著作権、免責、商標

訳注: この章は著作権関係の規定であるため、原文を残します。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

E.1. 免責と商標

This is free documentation. It is distributed in the hope that it will
be useful, but without any warranty. The information in this document
is correct to the best of my knowledge, but there's a always a chance
I've made some mistakes, so don't follow everything too blindly,
especially if it seems wrong. Nothing here should have a detrimental
effect on your computer, but just in case I take no responsibility for
any damages incurred from the use of the information contained herein.

これはフリードキュメントです。この文書は有用であることを希望して配布さ
れてはいますが、無保証です。この文書内の情報は私の力の及ぶ範囲で正確な
ものですが、間違いを犯している可能性も常にありますので、無批判に信じ込
まないでください。特に間違っていそうに思える箇所には。ここに書かれてい
る内容であなたのコンピュータに被害が出るとは思っていませんが、一応ここ
に書かれている情報によって損害が発生したときも、私はその責任を負わない
ことを明記しておきます。

Though I hope trademarks will be superfluous sometimes (you may see
what I mean at Open Source Definition <http://www.opensource.org/
osd.html> ), I declare: If certain words are trademarks, the context
should make it clear to whom they belong. For example "MS Windows NT"
implies that "Windows NT" belongs to Microsoft (MS). "Mac" is a
trademark by Apple Computer. Many of the designations used by
manufacturers and sellers to distinguish their products are claimed as
trademarks. Where those designations appear in this book, and I was
aware of a trademark claim, the designations have been printed in caps
or initial caps. All trademarks belong to their respective owners.

商標の記載が不必要になることを希求してはいますが、 (どういうことかは 
Open Source Definition <http://www.opensource.org/osd.html> に記載があ
ります) ここで、特定の語が商標ならば、内容からその権利者が明らかとなる
ようにしたことを宣言しておきます。例えば、"MS Windows NT" は "Windows
NT" が Microsoft(MS) に属する商標であることを示しますし、"Mac" は Apple
Computer Inc. の商標です。製造者および販売者が商品を識別するために付け
た名称は、多くの場合商標です。そのような商品名がこの文書に現れた際に、
私がそれが商標であると気がついている場合には、大文字ないしは先頭が大文
字を使っています。すべての商標は、その所有権者に属します。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

E.2. 著作権

 For all chapters permission is granted to copy, distribute and/or
modify this document under the terms of the GNU Free Documentation
License, Version 1.1 or any later version published by the Free
Software Foundation; with the Invariant Sections being "Preface" and
"Credits", with the Front-Cover Texts being "Linux Infrared HOWTO", and
with the Back-Cover Texts being the section "About the Document and the
Author". A copy of the license is included in the section entitled "GNU
Free Documentation License".

本文書のどの章も複製、配布および変更が GNU Free Documentation License
バージョン 1.1 以降の規定に従う限り、許諾されます。GNU GNU Free
Documentation License は Free Software Foundation により発行されていま
す。本文書の不変部は「Preface」と「Credits」であり、表紙テキストは “
Linux Infrared HOWTO” で、裏表紙テキストは “About the Document and
the Author” です。ライセンスの写しが “GNU Free Documentation License
” に収録されています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

E.3. GNU Free Documentation License - GFDL

訳注: GFDL は英語が原本となるため、訳しません。訳は GNU Project のペー
ジ等をご覧下さい。

Version 1.1, March 2000

Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place,
Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and
distribute verbatim copies of this license document, but changing it is
not allowed.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

E.3.1. 0. PREAMBLE

The purpose of this License is to make a manual, textbook, or other
written document "free" in the sense of freedom: to assure everyone the
effective freedom to copy and redistribute it, with or without
modifying it, either commercially or noncommercially. Secondarily, this
License preserves for the author and publisher a way to get credit for
their work, while not being considered responsible for modifications
made by others.

This License is a kind of "copyleft", which means that derivative works
of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft license
designed for free software.

We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does. But this License is not limited to software manuals; it
can be used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or reference.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

E.3.2. 1. APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work that contains a notice
placed by the copyright holder saying it can be distributed under the
terms of this License. The "Document", below, refers to any such manual
or work. Any member of the public is a licensee, and is addressed as
"you".

A "Modified Version" of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of
the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall subject
(or to related matters) and contains nothing that could fall directly
within that overall subject. (For example, if the Document is in part a
textbook of mathematics, a Secondary Section may not explain any
mathematics.) The relationship could be a matter of historical
connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.

The "Invariant Sections" are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License.

The "Cover Texts" are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License.

A "Transparent" copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the general
public, whose contents can be viewed and edited directly and
straightforwardly with generic text editors or (for images composed of
pixels) generic paint programs or (for drawings) some widely available
drawing editor, and that is suitable for input to text formatters or
for automatic translation to a variety of formats suitable for input to
text formatters. A copy made in an otherwise Transparent file format
whose markup has been designed to thwart or discourage subsequent
modification by readers is not Transparent. A copy that is not
"Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain ASCII
without markup, Texinfo input format, LaTeX input format, SGML or XML
using a publicly available DTD, and standard-conforming simple HTML
designed for human modification. Opaque formats include PostScript,
PDF, proprietary formats that can be read and edited only by
proprietary word processors, SGML or XML for which the DTD and/or
processing tools are not generally available, and the machine-generated
HTML produced by some word processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself, plus
such following pages as are needed to hold, legibly, the material this
License requires to appear in the title page. For works in formats
which do not have any title page as such, "Title Page" means the text
near the most prominent appearance of the work's title, preceding the
beginning of the body of the text.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

E.3.3. 2. VERBATIM COPYING

You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no other
conditions whatsoever to those of this License. You may not use
technical measures to obstruct or control the reading or further
copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and
you may publicly display copies.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

E.3.4. 3. COPYING IN QUANTITY

If you publish printed copies of the Document numbering more than 100,
and the Document's license notice requires Cover Texts, you must
enclose the copies in covers that carry, clearly and legibly, all these
Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts
on the back cover. Both covers must also clearly and legibly identify
you as the publisher of these copies. The front cover must present the
full title with all words of the title equally prominent and visible.
You may add other material on the covers in addition. Copying with
changes limited to the covers, as long as they preserve the title of
the Document and satisfy these conditions, can be treated as verbatim
copying in other respects.

If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.

If you publish or distribute Opaque copies of the Document numbering
more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a publicly-accessible computer-network location containing a complete
Transparent copy of the Document, free of added material, which the
general network-using public has access to download anonymously at no
charge using public-standard network protocols. If you use the latter
option, you must take reasonably prudent steps, when you begin
distribution of Opaque copies in quantity, to ensure that this
Transparent copy will remain thus accessible at the stated location
until at least one year after the last time you distribute an Opaque
copy (directly or through your agents or retailers) of that edition to
the public.

It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to give
them a chance to provide you with an updated version of the Document.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

E.3.5. 4. MODIFICATIONS

You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release the
Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy of
it. In addition, you must do these things in the Modified Version:

A. Use in the Title Page (and on the covers, if any) a title distinct
from that of the Document, and from those of previous versions (which
should, if there were any, be listed in the History section of the
Document). You may use the same title as a previous version if the
original publisher of that version gives permission.

B. List on the Title Page, as authors, one or more persons or entities
responsible for authorship of the modifications in the Modified
Version, together with at least five of the principal authors of the
Document (all of its principal authors, if it has less than five).

C. State on the Title page the name of the publisher of the Modified
Version, as the publisher.

D. Preserve all the copyright notices of the Document.

E. Add an appropriate copyright notice for your modifications adjacent
to the other copyright notices.

F. Include, immediately after the copyright notices, a license notice
giving the public permission to use the Modified Version under the
terms of this License, in the form shown in the Addendum below.

G. Preserve in that license notice the full lists of Invariant Sections
and required Cover Texts given in the Document's license notice.

H. Include an unaltered copy of this License.

I. Preserve the section entitled "History", and its title, and add to
it an item stating at least the title, year, new authors, and publisher
of the Modified Version as given on the Title Page. If there is no
section entitled "History" in the Document, create one stating the
title, year, authors, and publisher of the Document as given on its
Title Page, then add an item describing the Modified Version as stated
in the previous sentence.

J. Preserve the network location, if any, given in the Document for
public access to a Transparent copy of the Document, and likewise the
network locations given in the Document for previous versions it was
based on. These may be placed in the "History" section. You may omit a
network location for a work that was published at least four years
before the Document itself, or if the original publisher of the version
it refers to gives permission.

K. In any section entitled "Acknowledgements" or "Dedications",
preserve the section's title, and preserve in the section all the
substance and tone of each of the contributor acknowledgements and/or
dedications given therein.

L. Preserve all the Invariant Sections of the Document, unaltered in
their text and in their titles. Section numbers or the equivalent are
not considered part of the section titles.

M. Delete any section entitled "Endorsements". Such a section may not
be included in the Modified Version.

N. Do not retitle any existing section as "Endorsements" or to conflict
in title with any Invariant Section.

If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant. To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.

You may add a section entitled "Endorsements", provided it contains
nothing but endorsements of your Modified Version by various
parties--for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.

You may add a passage of up to five words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version. Only one passage of Front-Cover
Text and one of Back-Cover Text may be added by (or through
arrangements made by) any one entity. If the Document already includes
a cover text for the same cover, previously added by you or by
arrangement made by the same entity you are acting on behalf of, you
may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License
give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

E.3.6. 5. COMBINING DOCUMENTS

You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice.

The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original
author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of Invariant
Sections in the license notice of the combined work.

In the combination, you must combine any sections entitled "History" in
the various original documents, forming one section entitled "History";
likewise combine any sections entitled "Acknowledgements", and any
sections entitled "Dedications". You must delete all sections entitled
"Endorsements."

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

E.3.7. 6. COLLECTIONS OF DOCUMENTS

You may make a collection consisting of the Document and other
documents released under this License, and replace the individual
copies of this License in the various documents with a single copy that
is included in the collection, provided that you follow the rules of
this License for verbatim copying of each of the documents in all other
respects.

You may extract a single document from such a collection, and
distribute it individually under this License, provided you insert a
copy of this License into the extracted document, and follow this
License in all other respects regarding verbatim copying of that
document.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

E.3.8. 7. AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separate
and independent documents or works, in or on a volume of a storage or
distribution medium, does not as a whole count as a Modified Version of
the Document, provided no compilation copyright is claimed for the
compilation. Such a compilation is called an "aggregate", and this
License does not apply to the other self-contained works thus compiled
with the Document, on account of their being thus compiled, if they are
not themselves derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one quarter
of the entire aggregate, the Document's Cover Texts may be placed on
covers that surround only the Document within the aggregate. Otherwise
they must appear on covers around the whole aggregate.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

E.3.9. 8. TRANSLATION

Translation is considered a kind of modification, so you may distribute
translations of the Document under the terms of section 4. Replacing
Invariant Sections with translations requires special permission from
their copyright holders, but you may include translations of some or
all Invariant Sections in addition to the original versions of these
Invariant Sections. You may include a translation of this License
provided that you also include the original English version of this
License. In case of a disagreement between the translation and the
original English version of this License, the original English version
will prevail.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

E.3.10. 9. TERMINATION

You may not copy, modify, sublicense, or distribute the Document except
as expressly provided for under this License. Any other attempt to
copy, modify, sublicense or distribute the Document is void, and will
automatically terminate your rights under this License. However,
parties who have received copies, or rights, from you under this
License will not have their licenses terminated so long as such parties
remain in full compliance.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

E.3.11. 10. FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions of the
GNU Free Documentation License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in
detail to address new problems or concerns. See copyleft <http://
www.gnu.org/copyleft/>.

Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
License "or any later version" applies to it, you have the option of
following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

E.4. 日本語訳について

誤字・脱字・誤訳等は <JF@linux.or.jp> までお知らせください。

翻訳： かねこ <skaneko_at_a2.mbn.or.jp>     
校正： 中野さん <nakano_at_apm.seikei.ac.jp>
                                            

翻訳履歴:

2002-04-02
   
    初版: JF にリリース
   
2002-11-15
   
    原版の v3.4 に追従。訳注を脚注に変更。ほか細かい修正。
   
 

Notes

[1]  訳注: Karl Jasper(1883-1969) ドイツの実存主義哲学者。通信などの近 
     代技術により世界の調和を追求する世界哲学論を唱える。晩年の仕事には
     、暗号による言論の自由の実現に対する考察など。                    
                                                                       
[2]  訳注: 2.4.17 あたりではほぼ統合が済んでいるそうです。             
                                                                       
[3]  訳注: 混乱を避けるため、2001/12/13 付けのカーネルの Configure.help
     日本語訳の訳文を元に用いました。ただし、他と口調をあわせるためかな
     り手を入れています。                                              
                                                                       
[4]  訳注: Berkin ドングルには新旧有り、旧のみサポートと以前のカーネル 
     Configure.help にはある。外見で見分けはつかず、ばらしてみる必要あ 
     る由。                                                            
                                                                       
[5]  訳注: 2002 年現在ではむしろ 1uF 程度の積層セラミックのほうが、大き
     さ、入手、安全性のどれをとっても断然お勧めです。                  
                                                                       
[6]  原注: RedHat でもこの目的の GUI を持つソフトウェアがあるはずです。
                                                                       
[7]  訳注: Debian GNU/Linux だと、/etc/init.d/lpd restart とする。     
                                                                       
[8]  原注: gnokii は Nokia 社の携帯電話をシリアルケーブルで接続するため
     の Linux および *BSD 向けのツールで、 gnokii <http://             
     www.gnokii.org/> で入手できます。                                 
                                                                       
[9]  原注: 最新の gnokii コマンドを試してみてください。挙動が改善されて
     いるはずですし、携帯電話との IrDA 接続についての役に立つ文書も用意
     されています。                                                    
                                                                       
[10] 訳注: 現時点では Extended System 社。シェアウェアのようだ。       
     CounterPoint というソフトメーカはあるが、IrOBEX 関連のドライバ製造
     元ではあるものも、これは直接そのメーカの製品ではないようだ。      
                                                                       
[11] 訳注: Laplink 社。日本語版もあり (Intercom 社)                    
                                                                       
[12] 訳注: 現在は Altiris 社。日本語版も見たような気がする             
                                                                       
[13] 訳注: シマンテック。日本語版もあり。最新は 10.5                   
                                                                       
[14] 訳注: 日本語版もあり                                              
                                                                       
[15] 訳注: メーカ名なので誤記は問答無用で直しました。                  
                                                                       
[16] 訳注: IrDA の光モジュール・トランシーバ                           
                                                                       
[17] 訳注: 印刷ロゴは SMCC                                             
                                                                       
[18] 訳注: MIPS はブート時に選択でき、Linux では両方あります。SGI 系と 
     HardHat の Linux はビッグ、DECstation と Cobalt Cube はリトルです 
     。 Debian 3.0 のディストリビューションは両方があります。その他は  
     MIPS-HOWTO を見てください。                                       
                                                                       
[19] 訳注: JF に訳があります                                           
                                                                       
[20] 訳注: 割り込み処理を引き続いて行うこと                            
                                                                       
[21] 訳注: PC-AT の仕様上は 16bit フルデコードしろということになってい 
     るが、守っているデバイスは少ないため、結果として上のようなことにな
     る。                                                              
                                                                       
[22] 訳注: gratuitous arp/proxy arp (rfc2002) は定訳がないようですので 
     、そのままにしました。原文の typo は修正。                        
                                                                       
[23] 訳注: PC-AT アーキテクチャでは、0,1,6,8,13 は全部決まったデバイス 
     に固定的に割り当てられています。14 だけは IDE を使ってないなら使え
     る可能性有り。これに加えて、IDE RAID カードやコントローラ等を使っ 
     ているなら、それが使っているものも避けてください。                
                                                                       
[24] 訳注: BSD なソースはない、ということを含むと思われる。            
                                                                       
[25] 訳注: host.conf ではなく /etc/nsswitch.conf の方を修正するディスト
     リビューションもあり。当該ファイルの man ページや、所定 HOWTO 参照
     。                                                                

