通信におけるデータ転送速度に関して、 このセクションでは 「ボー」 (baud) という用語は使いません。 ボーというのは一定時間に生じうる電気的状態の変化の数を表すにすぎず、 「bps」 (bits per second) という単位の方が正しいからです (少なくとも、こういう表現をしておけば、 意地の悪い人に怒られることもないのではないかと思います)。
モデムまたはシリアル端末を FreeBSD システムに接続するためには、 コンピュータ上のシリアルポートと、 シリアルデバイスに接続する適切なケーブルが必要です。 ハードウェアとそれが必要とするケーブルについてよく理解しているなら、 この節は飛ばしても問題ありません。
シリアルケーブルにはさまざまな種類があります。 我々の目的にあうもっとも一般的な 2 種類は、 ヌルモデムケーブル[7] と、スタンダード (ストレート) RS-232 ケーブルです ハードウェアの説明文書に必要なケーブルの種類が記載されているはずです。
ヌルモデムケーブル (またはリバースケーブルあるいはクロ スケーブル) は、たとえば 「signal ground」 信号のように、いくつかの信 号はそのまま通しますが、 他の信号は途中で入れ替えて通します。たとえば、「send data」 信号のピンは、反対側のコネクタの 「receive data」 信号の ピンと繋がっています。
自分で使うケーブルは自分で作りたいということであれば、 端末で使うヌルモデムケーブルを作成できます。この表では、 RS-232C の信号線の名前と、DB-25 コネクタ上のピンの番 号を示しています。
Signal | Pin # | Pin # | Signal | |
---|---|---|---|---|
TxD | 2 | connects to | 3 | RxD |
RxD | 3 | connects to | 2 | TxD |
DTR | 20 | connects to | 6 | DSR |
DSR | 6 | connects to | 20 | DTR |
SG | 7 | connects to | 7 | SG |
DCD | 8 | connects to | 4 | RTS |
RTS | 4 | 5 | CTS | |
CTS | 5 | connects to | 8 | DCD |
DCD と RST では、コネクタ内部でピン4を5に接続し、 そして逆側のコネクタのピン8と接続します。
シリアルポートは、FreeBSDが動作しているホスト コンピュータと端 末の間でデータのやりとりを行うために用いるデバイスです。 ここでは、現在存在するポートの種類と FreeBSD でのポートのアクセス方法について解 説します。
シリアルポートには何種類かのものがあります。 ケーブルを購 入したり自作したりする前に、 そのケーブルのコネクタの形状が端末および FreeBSD システムのポートの形状と一致していることを 確認してください。
ほとんどの端末は DB25 ポートを搭載しています。 FreeBSDが動作しているも のを含めて、PCは DB25 または DB9 ポートを搭載しています。マルチポート のシリアルカードの場合は、RJ-12 や RJ-45 のポートを搭載しているかもし れません。
利用されているポートの種類に関しては、 ハードウェアについてきたドキュメントを参照してください。 また、多くの場合、ポートの形状から判断することもできるでしょう。
FreeBSDでは、/dev
ディレクトリ内のエントリを介
してシリアルポートへのアクセスがおこなわれます。
2種類の異なったエン トリがあります。
着信用のポートの名前は、
/dev/ttydN
(N
は 0から始まるポート番号)
となっています。一般に端末の接続には
着信用ポートを用います。着信用のポートでは、
シリアルラインのデータ キャリア検出 (DCD)
信号がオンになっている必要があります。
発信用のポートの名前は、
/dev/cuaaN
となっています。
発信用のポートは普通モデムの接続に用い、端末の接続には
利用しません。ただ、
ケーブルまたは端末がキャリア検出信号を使えない
タイプのものの場合は、
発信用のポートを使うとよいでしょう。
たとえば、端末を一つ目のシリアルポート (MS-DOS
でいうところの COM1
) に接
続したとすると、/dev/ttyd0
がこの端末を指すことになります。また、
二つ目のシリアルポート (COM2
)
ならば /dev/ttyd1
となり、
以下この形式のデバイスエントリを使います。
デフォルトでは、FreeBSD は
4 つのシリアルポートに対応しています。MS-DOS の世界では、
COM1
,
COM2
,
COM3
および
COM4
と呼ばれています。
FreeBSD では、現在のところ BocaBoard の 1008 や 2016 などの、
「単純な」マルチポートシリアルインタフェースや、
Digiboard や Stallion Technologies
が製造しているよりインテリジェントなマルチポートカードにも対応しています。
しかしながら、デフォルトのカーネルは、標準の COM ポートしか見ません。
搭載されているシリアルポートのいずれかを、
カーネルが認識しているかどうか確認したい場合は、
カーネルの起動時のメッセージを注意深く見るか、あるいは
/sbin/dmesg
コマンドを使って、
起動時の出力メッセージを確認してください。特に、
sio
で始まるメッセージをよく見てください。
以下のコマンドで sio
という文字列を含むメッセージだけを表示できます。
#
/sbin/dmesg | grep 'sio'
たとえば、シリアルポートを四つ持つシステムの場合は、 以下のようなシリアルポートに関するメッセージがカーネルによって表示されます。
sio0 at 0x3f8-0x3ff irq 4 on isa sio0: type 16550A sio1 at 0x2f8-0x2ff irq 3 on isa sio1: type 16550A sio2 at 0x3e8-0x3ef irq 5 on isa sio2: type 16550A sio3 at 0x2e8-0x2ef irq 9 on isa sio3: type 16550A
もし、カーネルに正常に認識されないポートがある場合は、 おそらくカスタマイズした FreeBSD カーネルを構築する必要があるでしょう。 カーネルコンフィグレーションの詳細については 9章FreeBSD カーネルのコンフィグレーション をご覧ください。
カーネルコンフィグレーションの該当するデバイス行は、 次のようになります。
device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr device sio1 at isa? port "IO_COM2" tty irq 3 vector siointr device sio2 at isa? port "IO_COM3" tty irq 5 vector siointr device sio3 at isa? port "IO_COM4" tty irq 9 vector siointr
システムに搭載されていないデバイスに関する記述は、 コメントアウトまたは削除してしまってかまいません。 sio(4) のマニュアルを見て、 マルチポートのボードのためのコンフィグレーションファイルの記述の仕方を確認してください。 デバイスのフラグの指定方法がバージョンによって異なりますので、 別のバージョンの FreeBSD で利用していたコンフィグレーションファイルを流用する場合には十分注意してください。
なお、port "IO_COM1"
,
IO_COM2
, IO_COM3
および IO_COM4
は、
それぞれのポートの一般的なアドレスである
0x3f8
, 0x2f8
,
0x3e8
および 0x2e8
を表します。また、割り込み番号 4, 3, 5 と 9 は、それぞれ
COM1:
から
COM4:
のポートで一般的に使用される
IRQ です。また、ISA バスのコンピュータの場合、
一般的なシリアルポートは複数のポートで一つの IRQ
を共有することが
できませんので注意が必要です
(マルチポートのシリアルボードの場合は、複数の 16550A
ベースのポートで一つまたは二つの IRQ
を共有するための機構を備えています)。
カーネルに組み込まれているほとんどのデバイスは、
/dev
ディレクトリにある、
「デバイススペシャルファイル」を介してアクセスされます。
sio
デバイスの場合は、着信用の
/dev/ttydN
および、発信用の
/dev/cuaaN
が利用されます。さらに、FreeBSD は、初期化デバイス
(/dev/ttyidN
と
/dev/cuai0N
)
およびロッキングデバイス
(/dev/ttyldN
と
/dev/cual0N
)
も用意しています。
初期化デバイスは、通信ポートがオープンされる度に、
そのポートの初期設定を行うために使われます。たとえば、
RTS/CTS
によるフロー制御を行うモデムが接続されている場合の
crtscts
などのパラメータの初期化が行われます。
ロッキングデバイスは、ポートの設定をロックし、
他のユーザやプログラムにこれらを変更されることのないようにするために利用されます。
通信ポートの設定、デバイスのロックと初期化および設定の変更に関しては、
それぞれ termios(4), sio(4) と stty(1)
のマニュアルをご覧ください。
FreeBSD 5.0 には、
必要に応じてデバイスノードを自動的に作成する
devfs
ファイルシステムがあります。
devfs
が有効になっているバージョンの
FreeBSD を動かしているなら、
この節は飛ばしてかまいません。
デバイススペシャルファイルの管理は、ディレクトリ
/dev
にあるシェルスクリプト
MAKEDEV
で行います。
MAKEDEV
を使って、
COM1
(ポート 0)
をダイアルアップのポートとして利用するための
デバイススペシャルファイルを作るには、
/dev
に cd
してから、
MAKEDEV ttyd0
と実行してください。
同様に、MAKEDEV ttyd1
とすることで、
COM2
(ポート 1)
用のデバイススペシャルファイルを作成できます。
MAKEDEV
は、
/dev/ttydN
のデバイススペシャルファイルだけでなく、
/dev/cuaaN
,
/dev/cuaiaN
,
/dev/cualaN
,
/dev/ttyldN
および
/dev/ttyidN
ノードも作成します。
デバイススペシャルファイルの作成後、
これらのファイルの許可属性が適切に設定されていて、
これらのデバイスを利用してもよいユーザのみが読み書きできるようになっていることを確認してください
(特に /dev/cua*
の許可属性には注意を払ってください)。
この確認を怠ると、
一般のユーザがあなたのモデムを使うことができるようなことになりかねません。
デフォルトの /dev/cua*
の許可属性は、以下のようになっていて、
たいていの場合適切なものだと思います。
crw-rw---- 1 uucp dialer 28, 129 Feb 15 14:38 /dev/cuaa1 crw-rw---- 1 uucp dialer 28, 161 Feb 15 14:38 /dev/cuaia1 crw-rw---- 1 uucp dialer 28, 193 Feb 15 14:38 /dev/cuala1
上の設定では、ユーザ uucp
と、グループ dialer
に属するユーザが発信用のデバイスを利用できます。
ttydN
(または cuaaN
)
デバイスは、
アプリケーション上でシリアルポートをオープンする時に使用する、
標準的なデバイスです。プロセスがデバイスをオープンする際、端末
I/O 設定のデフォルトセットが適用されます。これらの設定内容は、
次のコマンドで確認することができます。
#
stty -a -f /dev/ttyd1
このデバイスの設定を変更した場合、
その設定はデバイスがクローズされるまで有効です。
デバイスが再びオープンされる時、デフォルトの設定値に戻ります。
デフォルトの設定を変更するためには、「初期状態」
を設定したいデバイスをオープンして調節できます。
たとえば、ttyd5
というデバイスに対して、デフォルトで
CLOCAL
モード, 8 bits,
XON/XOFF
フロー制御を設定したい場合は、
次のように入力してください。
#
stty -f /dev/ttyid5 clocal cs8 ixon ixoff
システム全体のシリアルデバイス初期化は
/etc/rc.serial
で制御されています。
このファイルは、シリアルデバイスのデフォルトの設定を決めます。
また、「ロック状態」のデバイスに調節を加えることで、
アプリケーションがある種の設定を変更してしまうことを防げます。
たとえば、ttyd5
の速度を 57600 bps
に固定したい場合には、次のように入力してください。
#
stty -f /dev/ttyld5 57600
これで、ttyd5
をオープンして、
シリアルポートの転送スピードを変更しようとするアプリケーションは
57600 bps で頭打ちになります。
本来、初期状態やロックされているデバイスに書き込めるのは
root
アカウントだけにすべきです。
本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。
FreeBSD に関する質問がある場合には、
ドキュメント を読んだ上で
<questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、
<doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。