ラップトップ機で IrDA ポートを Linux/IrDA で動かすには、StandardInfraRed (SIR) モードか FastInfraRed (FIR) モードを使うことになります。
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 |
4Mbps までの速度を使いたければ、あなたのマシンにはしかるべき FIR チップが搭載されている必要があります。また、このチップをサポートした Linux/IrDA ドライバも必要です。このため、使われている FIR チップの正確な情報を入手する必要があります。 この情報を得るには以下の方法があります。
マシンの 説明書 を読んでください。 但し、必要なだけの、かつ信頼できる情報がここから得られることはまれです。
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 コマンドを使うこともできます。
DOS ツール の CTPCI330.EXE を使うこともできます。このツールはドイツのコンピュータ誌 CT の CTPCI330.ZIP から入手できます。 このプログラムで得られる情報が、Linux 用のツールで得られるものより良質であることもよくあります。
Plug-and-Play (PnP) デバイス情報を得る。 isapnp ツールが役に立つでしょう。 但し、私はこのツールをこの目的で使ったことはありません。
もしすでに Linux/IrDA® ソフトウェア をインストール済みなら、FIR モジュールをロードして dmesg の出力を見て FIR が検出されるかどうかを見るという手もあります。
検出方法は他にもあります。以下は 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 社が移植したものです」
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 に置いています。
このパッケージはエンドユーザ向けではなく、一部のユーティリティは危険なものになりえます。唯一の説明文書は Microsoft Word 形式でパッケージに同封されているため、Linux ユーザは必要に応じて catdoc などで読んでください。catdoc は http://www.fe.msk.ru/~vitus/catdoc/ で入手できます。 |
Microsoft Windows 9x/NT オペレーティングシステムの Device Manager を使う。
以下の章で記載する ハードウェアサーベィ が使えます。
最後の手段として、ラップトップ機をあけてチップセット上の印刷を見ることもできます。以下は、(多分不完全な) メーカリストです[1]。 Crystal Semiconductor, Agilent (HP または Agilent (通常表記はどちらもロゴ)。 チップ名は HSDL で始まる [2])、 日立 (Hitachi)、IBM、National Semiconductor Corporation (NSC。表記はロゴ)、 NEC、Philips、シャープ (Sharp)、Standard Micro Systems Corporation (SMC/SMCC [3])、 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 |
[1] | 訳注: メーカ名なので誤記は問答無用で直しました。 |
[2] | 訳注: IrDA の光モジュール・トランシーバ |
[3] | 訳注: 印刷ロゴは SMCC |