Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all bug

名前

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

書式

       setserial [ -abqvVWz ] device [ parameter1 [ arg ] ] ...

       setserial -g [ -abGv ] device1 ...

説明

       setserial  は、シリアルポートに関する設定情報を設定または 表示するプログラムです。この情報
       には、指定されたシリアルポートが 使用している I/O ポートアドレス や  IRQ  の情報、およびブ
       レークキーを 受信接続通知キー(Secure Attention Key)として使用するかどうかなどの情報 が含ま
       れます。

       通常のブート処理中には、COM ポートの 1 〜 4 だけが、以下に示す デフォルトの I/O ポートアド
       レスと IRQ の値を使って初期化されます。 setserial は、追加されたシリアルポートを初期化した
       り、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 への最初の引数が、設定したり表示 したりするデバイス
       として解釈されます。また、その他の引数は、  シリアルデバイスに与えるパラメータとして解釈さ
       れます。

       ほとんどの場合、シリアルポートのパラメータの設定にはスーパーユーザーの  特権が必要です。し
       かし、少しだけ一般ユーザが設定できるパラメータがあります。 それらはこの man ページ中で説明
       します。

オプション

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

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

       -b     シリアルデバイスの設定内容を表示するとき、  ブート時に /etc/rc スクリプトで使用する
              時に適した形で デバイス情報のサマリを表示します。

       -G     シリアルポートの設定情報を、setserial のコマンドラインオプションの形で 表示します。

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

       -v     詳細モード。 いくつかのステータスが追加出力されます。

       -V     setserial のバージョンを出力して終了します。

       -W     割り込みの初期化を荒っぽく行い、終了します。 このオプションはバージョン 2.1  以降の
              Linux カーネルに対しては無効です。

       -z     シリアルフラグをセットする前に全てのフラグをゼロクリアします。 これは -G オプション
              を使ったシリアルフラグの自動保存と関係があります。

パラメータ

       シリアルポートに対して、以下のパラメータを設定することができます。

       すべての値は、先頭に "0x" があれば 16 進数とみなされます。

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

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

       uart uart_type
              このオプションは、シリアルポートの UART の種類を設定するために使用されます。 指定で
              きるタイプは、  none,  8250,  16450,  16550,  16550A, 16650, 16650V2, 16654, 16750,
              16850, 16950, 16954 です。 UART タイプ none は、ポートを使用できないようにします。

              内蔵モデムの中には、「1k のバッファを持った 16550A」を備えていると 書かれたものがあ
              ります。これは嘘です。実際には 16550A 互換の UART ではなく、(受信時のオーバーランを
              防ぐために) 1k の受信バッファのついた 16450 互換 UART が付いているのです。 これらに
              は 送信 FIFO がないので、この違いは重要です。 そういう訳で、これらは 16550A UART と
              互換性がなく、 自動設定処理では 16450 として認識します。もし uart  オプションを使っ
              てこれを変更してしまうと、ファイル送信中にデータを   取りこぼすことになるでしょう。
              これらの UART は普通他の問題も抱えています。 大抵の場合 skip_test  オプションも指定
              しなくてはいけません。

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

       auto_irq
              自動設定を行なう際、IRQ を自動決定しようとします。 この機能は、いつも正しい結果をも
              たらすとは限りません。 ハードウェアの設定によっては、Linux のカーネルはだまされてし
              まいます。  一般に auto_irq の機能を使うよりも、 irq パラメータを使って、使用される
              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_shi
              アプリケーションが 38.4 Kbps を要求した場合に、230 Kbps を使用します。 このオプショ
              ンは一般ユーザーでも指定できます。

       spd_warp
              アプリケーションが 38.4 Kbps を要求した場合に、460 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 秒)です。

       closing_wait delay
              シリアルポートを閉じようとするとき、 ポートへデータを送信するためにカーネルが待つ時
              間を指定します。 この値の単位は 10ms です。 "none" が指定されると、待ち時間は発生し
              ません。 "infinite" が指定されると、バッファリングされたデータが送信し終わるまで 無
              限に待ち続けます。  デフォルト設定は 3000 (30 秒待つ) です。 通常これは、ほとんどの
              デバイスに対して適切な値です。 もし長過ぎる待ち時間を設定すると、  未接続のシリアル
              ポートに送信待ちのデータがある状態でクローズされた場合に シリアルポートが長い間ハン
              グアップしてしまうかもしれません。 もし短すぎる待ち時間を設定すると、  送信するべき
              データを送信しきれない可能性があります。 もしデバイスがプロッタプリンタのように極め
              て低速な場合は、 closing_wait の値を大きくする必要があるかもしれません。

       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
              指定されたシリアルポートが発信デバイスとしてオープンされた場合、 キャリア検出(CD)信
              号が落ちても tty をハングアップしません。

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

       low_latency
              シリアルデバイスの受信遅延を最小にします。ただし  CPU  の利用度は増加します (通常は
              オーバーヘッドを最小限にするために、 受信キャラクタを扱う前に 5-10ms の遅延がありま
              す)。  これはデフォルトではオフですが、リアルタイム処理をするアプリケーションの中に
              は このオプションが有効なものがあるかもしれません。

       ^low_latency
              CPU がシリアルキャラクタを処理する効率を最適化します。 ただしキャラクタを処理する前
              に 5-10ms の遅延が発生します。 これがデフォルトです。

シリアルポートの設定上の注意事項

       注意して欲しいのですが、  setserial  が行うのは、  指定されたシリアルポートの I/O ポートと
       IRQ とがどこそこで見つかるはずだ、 という情報を  Linux  カーネルに教えることだけなのです。
       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

マルチポート設定

       複数のポートで一つの  IRQ を共有するようなタイプの マルチポートシリアルボードには、 作業が
       必要な待ち状態のポートがあるかどうかを示すために、  ひとつまたは複数のポートを使うものがあ
       ります。  使っているマルチポートボードがこのようなポートをサポートしているなら、  これらの
       ポートを使えば、 割り込みがロスト時でもシステムが固まらないようにできます。

       これらのポートを設定するためには、 set_multiport  パラメータを指定し、その後ろにマルチポー
       トパラメータを指定します。  マルチポートパラメータは、チェックするべき port、 レジスタのど
       のビットが有効かを指定する mask、 するべき作業がなくなった時にレジスタの有効ビットが  一致
       しなければならない値を指定する match からなります。

       このような port/mask/match の組は 4 つまで指定できます。 一つ目の組は port1, mask1, match1
       で指定し、二つ目は port2, mask2, match2 で指定します。以下同様です。  マルチポートのチェッ
       クを無効にするためには、 port1 に 0 を指定してください。

       現在のマルチポート設定を見るためには、コマンドラインから  get_multiport パラメータを指定し
       てください。

       以下にいくつかの一般的なシリアルボードのためのマルチポート設定を示します。

              AST FourPort    port1 0x1BF mask1 0xf match1 0xf

              Boca BB-1004/8  port1 0x107 mask1 0xff match1 0

              Boca BB-2016    port1 0x107 mask1 0xff match1 0
                              port2 0x147 mask2 0xff match2 0

Hayes ESP 設定

       setserial は Hayes ESP シリアルボードのポートを設定することもできます。

       ESP ポートを設定するには以下のパラメータを使います。

       rx_trigger
              受信 FIFO のトリガレベル (バイト単位)  です。  大きい値を設定すると割り込み回数が減
              り、性能が向上します。 しかし、値を大きくしすぎるとデータを失うことになるかもしれま
              せん。 有効な値は 1 から 1023 です。

       tx_trigger
              送信 FIFO のトリガレベル (バイト単位)  です。  大きい値を設定すると割り込み回数が減
              り、性能が向上します。 しかし、値を大きくしすぎると送信効率を落とすことになるかもし
              れません。 有効な値は 1 から 1023 です。

       flow_off
              ESP ポートが相手の送信側に対して「フローオフ」を伝える  (これ以上データを送信しない
              ように伝える)レベル(バイト単位)です。  有効な値は 1 から 1023 です。 この値は受信ト
              リガレベルとフローオンレベルより大きい値にするべきです。

       flow_on
              ESP ポートが相手の送信側に対してフローオフを伝えた後に、 「フローオン」を伝える (こ
              れ以上データ送信を再開するように伝える)レベル(バイト単位)です。  有効な値は  1 から
              1023 です。  この値はフローオフレベルより小さく、受信トリガレベルより大きい値にする
              べきです。

       rx_timeout
              最後のキャラクタを受信してから、割り込みを発生させるまでに  ESP  ポートが待つ時間で
              す。 有効な値は 0 から 255 です。 値が大きすぎると遅延が大きくなり、 値が小さすぎる
              と不必要な割り込みが発生することになります。

警告

       警告: シリアルポートが使用する I/O ポートの設定を間違えると、 マシンがハングアップしてしま
       うかもしれません。

ファイル

       /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) によって最初から書き
       直されたものです。 バグおよび問題点は、彼のみの責任です。