SETSERIAL(8) | FreeBSD System Manager's Manual | SETSERIAL(8) |
名前
setserial - Linux シリアルポート情報の設定と取得書式
setserial [ -abqvVWz ] device [ parameter1 [ arg ] ] ...説明
setserial は、シリアルポートに関する設定情報を設定または表示するプログラムです。この情報には、指定されたシリアルポートが使用している I/O ポートアドレスや IRQ の情報、およびブレークキーを受信接続通知キー(Secure Attention Key)として使用するかどうかなどの情報が含まれます。オプション
setserial には、以下のオプションを指定することができます:- -a
- シリアルデバイスの設定内容を表示するとき、すべての情報を表示します。
- -b
- シリアルデバイスの設定内容を表示するとき、ブート時に /etc/rc スクリプトで使用する時に適した形でデバイス情報のサマリを表示します。
- -G
- シリアルポートの設定情報を、setserial のコマンドラインオプションの形で表示します。
- -q
- setserial の出力を抑制します。
- -v
- 詳細モード。いくつかのステータスが追加出力されます。
- -V
- setserial のバージョンを出力して終了します。
- -W
- 割り込みの初期化を荒っぽく行い、終了します。このオプションはバージョン 2.1 以降の Linux カーネルに対しては無効です。
- -z
-
シリアルフラグをセットする前に全てのフラグをゼロクリアします。これは-G オプションを使ったシリアルフラグの自動保存と関係があります。
パラメータ
シリアルポートに対して、以下のパラメータを設定することができます。- 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 は、ポートを使用できないようにします。
- autoconfig
- このパラメータが設定されると、 setserial はカーネルにシリアルポートを自動的に設定するよう要求します。 I/O ポートは、正しく設定しなければいけません。その後カーネルは UART の種類を決定し、 auto_irq オプションが設定されていれば、IRQ を自動的に設定しようとします。 autoconfig オプションは、 port、 auto_irq、 skip_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 を返すことで通知します。
- ^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 スイッチの切替えによってシリアルボードを物理的に設定する必要があります。
/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
/dev/ttyS1 (COM2), port 0x2f8, irq 3
/dev/ttyS2 (COM3), port 0x3e8, irq 4
/dev/ttyS3 (COM4), port 0x2e8, irq 3
IRQ 3: COM2
IRQ 4: COM1
IRQ 5: LPT2
IRQ 7: LPT1
IRQ 4: COM1
IRQ 5: LPT2
IRQ 7: LPT1
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 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 を共有するようなタイプのマルチポートシリアルボードには、作業が必要な待ち状態のポートがあるかどうかを示すために、ひとつまたは複数のポートを使うものがあります。使っているマルチポートボードがこのようなポートをサポートしているなら、これらのポートを使えば、割り込みがロスト時でもシステムが固まらないようにできます。
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.serialSEE ALSO
tty(4), ttys(4), kernel/chr_drv/serial.c著者
setserial のオリジナルバージョンは Rick Sladkey (jrs@world.std.com) によって書かれ、 Michael K. Johnson (johnsonm@stolaf.edu) によって変更されました。January 2000 | Setserial 2.17 |