SETSERIAL(8)

名前
setserial - Linux シリアルポート情報の設定と取得

書式
setserial [ -abqvVW ] device [ parameter1 [ arg ] ] ... setserial -g [ -abv ] device1 ...

説明
setserial は、シリアルポートに関するコンフィギュレーション情報を設定または表示す るプログラムである。この情報には、指定されたシリアルポートが使用し ている，I/O ポートアドレス，IRQ およびブレークキーを 受信接続通知キー(Secure Attention Key)として使用するかどうかなどの情報 が含まれる。 通常のブート処理中には，COM ポートの 1 〜 4 だけが，以下に示すディ フォルトの I/O ポートアドレスと IRQ の値を使って初期化されます．追加さ れたシリアルポートを初期化したり，1 〜 4 のCOM ポートを標準でない設 定にするために，使用されます。 setserial は、通常 /etc/rc.local
 から起動される， rc.serial スクリプトに登録しておきます。 引数 device には，設定したり表示したいシリアルポートのデバイスファイルを 指定します．通常，以下のような形式で指定します: /dev/cua[0-3] パラメータが全く指定されなかった場合， setserial は，ポートの種類( 例えば，8250, 16450, 16550, 16550A など)，ハードウェ アの I/O ポートアドレス，IRQ 番号，ボーレート，およびオペレーションフ ラグのいくつかの内容を表示します。 -g オプションがを使うと、setserial への引数は，全て、表示対象となるデバイス として解釈され、複数のデバイスの設定内容を表示させることができます。 -g オプションを指定しないと，setserial への最初の引数が，設定したり，表示 したりするデバイスとして解釈されます．また，その他の引数は，シリアルデ バイスに与えるパラメータとして解釈されます． ほとんどの場合，シリアルポートのパラメータの設定にはスーパーユー ザーの特権が必要です．少しだけ一般ユーザが設定できるパラメータが あります．しかし，それらはこのマニュアルでは説明しません．

オプション
setserial には，以下のオプションを指定することができます:

-a  シリアルデバイスの設定内容を表示するときすべての情報を表示します．

-b  シリアルデバイスの情報を表示するとき，デバイス情報のサマリを表示します． ブート時に /etc/rc スクリプトで使用されます．

-q  setserial の出力を抑制します．

-v  冗長モード． setserial
     の出力が多くなります.

-V  setserial のバージョンを出力します．

-W  Do wild interrupt initialization and exit.

パラメータ
シリアルポートに対して，以下のパラメータを設定することができます． すべての値は，先頭に "0x" があれば 16 進数とみなされます．

port port_number
    port パラメータは，先に述べたようにI/O ポート番号の設定を行ないます．

irq irq_number
    irq パラメータは，先に述べたようにハードウェアの IRQ の設定を行ないます．

uart uart_type
    このオプションは，シリアルポートの UART の種類を設定す るために使用されます．指定できるタイプは、 none, 8250, 16450, 16550, および 16550A です。 8250 と 16450 の UART は、 FIFO を持っていないため、また、オリジナルの 16550 は FIFO を使用できな いというバグがあるため、FIFO の利用は、16550A チップに限ら れます。UART のタイプを 8250 、16450 または 16550 に設定すると、シリア ルポートでFIFO を使用しないようにします。UART タイプ none は、ポートを使用できないようにします。 内蔵モデムのなかには、「1k のバッファを持った 16550A」を持っているとか かれたものがあります。これは嘘です。それらは実際にはただの 16550A 互換 の UART を持っており、受信時のオーバーランを防ぐために 1k の受信バッファ を持った 16450 互換 UART を持っていると書くのと同じです。これは、重要 です。というのも、これらは FIFO を使用できません。そういう訳で、これら は16550A UART と互換性がなく、自動コンフィギュレーション処理では、 16450 として認識します。もし、 uart
     オプションを使ってこれを書き換えれば、ファイル転送中にデータを取りこ ぼすことになるでしょう。これらの UART は、 skip_test オプションをしばしば指定しなくてはいけないことを除けば、通常他の問題は ありません。

autoconfig
    このパラメータを指定すると、 setserial
     は、カーネルにシリアルポートを自動的にコンフィギュレーションするよう 要求します。I/O ポートは、正しく設定されなくてはいけません。その後、カー ネルは UART の種類を決定し、 auto_irq オプションが設定されていれば、Linux は、IRQ を自動的に設定しようとしま す。 autoconfig
     オプションは、 port、 auto_irq
     および skip_test オプションの後で指定すべきです。

auto_irq
    自動コンフィギュレーションを行なう際、IRQ を自動決定 しようとします。この機能は、いつも正しい結果をもたらす とは限りません。ハードウェアのコンフィギュレーションに よっては、Linux のカーネルはだまされてしまいます。一般 に、 irq パラメータを使って、使用される IRQ を明示的に 指定するよりも、 auto_irq の機能は、信頼性がありません。

^auto_irq
    自動コンフィギュレーションの際、IRQ の自動決定を行ないません。

skip_test
    自動コンフィギュレーションの際、UART のテストをスキップします。内蔵モ デムの中には、National Semiconductor 互換の UART を持っておらず、代わ りに安い偽物を持っているものがあります。これらの偽物 UART では、カーネ ルがコンフィギュレーションする前に指定されたアドレスに本当に UART があ ることを確認するために使用する、ループバックディテクションモードを完全 にはサポートしていません。このため、内蔵モデムの場合には、Linux が正し く UART を初期化できるように、このオプションを指定する必要があります。

^skip_test
    自動コンフィギュレーションの際、UART のテストをスキップしません。

baud_base baud_base
    このオプションは基本となるボーレートを設定します。 ボーレートは、クロック周波数を 16 で割った値です。 通常、この値は 115,200 に設定されています。これは、 UART がサポートできる最も速いボーレートです。

spd_hi
    アプリケーションが 38.4 Kbps を要求した場合に、57.6 Kbps を使用します。 このオプションは、一般ユーザーでも指定することができます。

spd_vhi
    アプリケーションが 38.4 Kbps を要求した場合に、115 Kbps を使用します。 このオプションは、一般ユーザーでも指定することができます。

spd_cust
    アプリケーションが 38.4 Kbps を要求した場合に、スピードを設定するため に特別な除数を使用します。この場合、ボーレートは、 baud_base を 除数 で割った値になります。このオプションは、一般ユーザーでも指定すること ができます。

spd_normal
    アプリケーションが 38.4 Kbps を要求した場合に、38.4 Kbps を使用します。 このオプションは、一般ユーザーでも指定することができます。

divisor divisor
    このオプションは、除数を設定します。この除数は、 spd_cust が選択されていて、アプリケーションが、シリアルポートに、38.4 Kbps を設 定した場合に使用されます。このオプションは、一般ユーザーでも指定する ことができます。

sak ブレークキーを受信接続通知キー(Secure Attention Key)に指定します。

^sak
    受信接続通知キー(Secure Attention Key)を無効にします。

fourport
    ポートを AST Fourport カードとしてコンフィギュレーションします。

^fourport
    AST Forport のコンフィギュレーションを行ないません。

close_delay delay
    発信デバイスがクローズされたあと、ブロックされた着信デバイスの DTR が 再び立ち上がるまでの間、シリアルライン上の DTR を LOW に維持しておく時 間を指定します。この値の単位は、10ms です。 ディフォルトでは、この値は 50 すなわち、500 ms (0.5 秒)です。

session_lockout
    複数のセッションで同一の発信ポート(/dev/cuaXX)を使用できないようにしま す。つまり、あるプロセスが一旦、ポートをオープンすると、そのプロセスが ポートをクローズするまで、別のセッション ID を持つプロセスが、そのポー トをオープンすることを禁止します。

^session_lockout
    複数のセッションで同一の発信ポート(/dev/cuaXX)を使用できるようにします。

pgrp_lockout
    複数のプロセスグループで同一の発信ポート(/dev/cuaXX)を使用できないようにしま す。す。つまり、あるプロセスが一旦、ポートをオープンすると、そのプロセ スがポートをクローズするまで、別のプロセスグループのプロセスが、そのポー トをオープンすることを禁止します。

^pgrp_lockout
    複数のプロセスグループで同一の発信ポート(/dev/cuaXX)を使用できるように します。

hup_notify
    別のプロセスによる発信ラインの使用が終了した( ポートをクローズしたか、 シリアルラインがハングアップした)ことを、着信ラインをオープンしようと しているプロセスに EAGAIN を返すことで通知します。 このパラメータを利用するアプリケーションには、シリアルポートの着信ライ ンをブロックする getty があります。このことは、getty が 再度オープンし てポートをブロックする前に、モデムをリセットする(発信デバイスを使用し ているアプリケーションによってポートのコンフィギュレーションは変更され るかもしれない)ことを許すことになります。

^hup_notify
    発信デバイスがハングアップしたことを、着信回線をオープンしようとしてい るプロセスに通知しません。

split_termios
    発信デバイスによって使用される termios の設定と着信デバイスによって使 用される termios の設定を別々に扱います。

^split_termios
    発信ポートと着信ポートの両方で同じ termios 構造を使用します。これはディ フォルトの設定です。

callout_nohup
    指定されたシリアルポートが発信デバイスとしてオープンされた場合、キャリ アディテクトが落ちても tty をハングアップしません。

^callout_nohup
    シリアルポートが発信デバイスとしてオープンされているとき、tty をハング アップする処理をスキップしません。もちろん、ハングアップをさせるには、 termios の HUPCL フラグがイネーブルになっていなければなりません。

シリアルポートのコンフィギュレーション上の注意事項
setserial は、Linux カーネルに、指定されたシリアルポートの I/O ポート と IRQ を見つける場所を教えるだけだということはとても重要なことです。 setserial は、実際のシリアルボードが指定された I/O ポートを使用するよ うに、ハードウェアをコンフィギュレーションするわけではありません。これ を行なうためには、ジャンパーセッティングや、DIP スイッチの切替えによっ てシリアルボードを物理的に設定する必要があります。 本章では、自分のシリアルポートをどのようにコンフィギュレーションしたい かを決定する手助けになるポインターを提供します。 標準的な "MS-DOS" のポート割り付けは、次のようになっています:
    /dev/ttyS0 (COM1), port 0x3f8, irq 4
    /dev/ttyS1 (COM2), port 0x2f8, irq 3
    /dev/ttyS2 (COM3), port 0x3e8, irq 4
    /dev/ttyS3 (COM4), port 0x2e8, irq 3
AT/ISA バスアーキテクチャーの設計上の制限のため、通常、IRQは、2 つある いはそれ以上のシリアルポートで共有することは出来ません。これを行なうと、 両方を同時に使おうとすると、一方あるいは両方のシリアルポートが不安定に なるでしょう。この制約は単一の IRQ を複数のシリアルポートで共有出来る ように設計された特殊なマルチポートシリアルカードを使うことで克服するこ とが出来ます。Linux でサポートされているマルチポートシリアルカードには、 AST Fourport, Accent Async board, Usenet Serial II board, Bocaboard BB-1004, BB-1008, と BB-2016 boards, そして HUB-6 serial board があり ます。 代替 IRQ を選択することは、それらの多くがすでに使用されているため、困 難です。以下のテーブルは、標準的な "MS-DOS" で割り付けられている使用可 能な IRQ の一覧です:
    IRQ 3: COM2
    IRQ 4: COM1
    IRQ 5: LPT2
    IRQ 7: LPT1
コンピュータにパラレルポートが一つしかないとすると、ほとんどの人は、 IRQ 5 が良い選択だと気づくと思います。その他の選択としては、IRQ 2 ( 別 名: IRQ 9 ) があります。但し、この IRQ は、ネットワークカードで使われ ることがあります。また、非常に稀ですが、VGA カードが垂直同期信号割り込 みのために、IRQ 2 を使うようにコンフィギュレーションされていることがあ ります。自分の VGA カードがこのようにコンフィギュレーションされている 場合は、それを使用しないようにして見て下さい。そうすれば、その IRQ を他 のカードが使えるようになります。Linux やその他のほとんどの OS では、IRQ 2 を垂直同期信号割り込みのために使用する必要はありません。 他に使用できる IRQ が、3, 4, および、 7 しかない場合、これらはおそらく 他のシリアルポートやパラレルポートで使用されているでしょう。( もし自分 のシリアルカードが 16 bit カードエッジコネクタを持っており、より上位の 割り込み番号をサポートしているなら、IRQ 10, 11, 12, そして、15 も使用 することができるでしょう) AT 互換機では、IRQ 2 は IRQ 9 のように見えます。Linux でも、この流儀に したがって解釈します。 2 (9), 3, 4, 5, 7, 10, 11, 12 および、15 以外の IRQ は、他のハードウェ アに割り付けられており、普通変更できないので、使うべきではありません。 "標準的な" 割り付けは、次のようになっています。:
    IRQ  0      Timer channel 0
    IRQ  1      Keyboard
    IRQ  2      Cascade for controller 2
    IRQ  3      Serial port 2
    IRQ  4      Serial port 1
    IRQ  5      Parallel port 2 (Reserved in PS/2)
    IRQ  6      Floppy diskette
    IRQ  7      Parallel port 1
    IRQ  8      Real-time clock
    IRQ  9      Redirected to IRQ2
    IRQ 10      Reserved
    IRQ 11      Reserved
    IRQ 12      Reserved (Auxillary device in PS/2)
    IRQ 13      Math coprocessor
    IRQ 14      Hard disk controller
    IRQ 15      Reserved

警告
警告: 間違ったポートを使用すると、貴方のマシンがハングアップしてしまう ことがあります。

ファイル
/etc/rc.local /etc/rc.serial

SEE ALSO
tty(4), ttys(4), kernel/chr_drv/serial.c

著者
setserial のオリジナルバージョンは、 Rick Sladkey (jrs@world.std.com) によって書かれ、 Michael K. Johnson (johnsonm@stolaf.edu). によって変 更されました。 このバージョンは、1993 年 1 月 1 日 に、 Theodore Ts'o (tytso@mit.edu) によって、最初から書き直されたものです。 バグおよび問題点は、彼単独の 責任です。

翻訳
福場 浩壮 <koso@ga2.so-net.or.jp>