NetBSD/pc98(based on NetBSD 1.2) and later シリアルデバイス使用ガイド 最終更新 1998年 3月 19日 このドキュメントでは、NetBSD/pc98にてシリアルデバイスを 使用する時の注意点について説明しています。シリアルポートを 使用する時は参考にして下さい。 1. comctrl プログラムについて NetBSD/pc98では、/sbin/comctrl プログラムが付属しています (ソースは/usr/src.skel/contrib/comctrlにあります)。comctrl プログラムは、シリアル回りに関してNetBSD/pc98で独自に拡張し た部分を扱うプログラムです。comctrl プログラムの使用方法は 次の通りです。 comctrl -f [device file] flags device nameはデバイス名です。NetBSD/pc98では、1つのハードウェ アに対して、2つのデバイスファイル名 /dev/tty0? /dev/cua? が用意されています。これらは互いに同等ですが、通常の慣習に従って /dev/tty0? は着信 /dev/cua? は発信 に用いることが多いようです。flagsはstty(1)のman pageのlocal flags に関する全てのflagsとhwfix, softcar, speed(10進の数字)が許され ています。例えば、cua2に対して設定を行う時は comctrl -f /dev/cua2 hwfix -softcar 230400 clocal のように使います。device fileを指定しない時は、/dev/cua0が指定され たものとします。上の意味は、/dev/cua2をhwfix mode、softcarはoff、 speedは230400bps、clocal modeで扱う事を指定しています。また、/dev/cua2 と /dev/tty02を違う設定にするする事も可能です。 2. シリアルデバイスに関する良くある質問とその答え 2-1. softcar や clocalモードはどのように設定するのでしょうか? softcarや、clocalは、/etc/ttys の最後の部分に記述します。例えば tty00 "/usr/libexec/getty std.38400" vsc30 off secure cua0 "/usr/libexec/getty std.38400" vsc30 off secure softcar clocal crtscts ^^^^^^^^^^^^^^^^^^^^^^ のように記述します。 ttyflags -a コマンドを実行するとこの記述 が参照されて設定が有効になります。通常、起動時に/etc/rcの中で ttyflagsコマンドが実行されるので、この設定は有効になっているは ずです。ただし以下の点に注意してください。 (1) /etc/ttysの記述を変更した場合や、pcmcia modem card、PnP Cbus ボードを起動後接続した場合は、ttyflags -aを実行しないと設定が有効 になりません。配布されている、/etc/pcmaia.conf 及び/etc/ipp.confに は、接続時自動的にttyflags -aコマンドを実行するように設定されてい ます。 (2) comctrlコマンドでも設定できます。com.confに設定を記述し、comstart shell scriptを起動時実行するようにする方法もあります。 (3) /etc/ttysに記述できるflagsは、softcar, clocal, crtscts, mdmbuf のみです。初期スピードの設定等はcomctrl もしくは(2)で述べた、 com.conf + comstartで行ってください。 2-2. 家のモデムを発着両用で使いたいのですが可能ですか? 可能です。配布された/etc/ttysは/dev/cua?はsoftcarになるように 設定されています。当然ですが片方が使用中の時は、もう1つは使用 出来ません(使用中とは、真に交信中の状態であって、carrier待ちの 状態は含みません)。一般的な使い方としては、/etc/ttysの/dev/ttyd? でgettyやpppdを有効にしておき、/dev/cua?で発信その他を行う事と なるでしょう。また、両者が同時に使用を要求した場合は、tty0?に 優先権があります。片方が使用終了すると、即座に使用権が他方に譲ら れます。 2-3. 115200に設定した端末を接続しています。logoutすると getty repeated too quickly .... というメッセージがでます。どうしてですか? comはttyとの関係もあって、かならずdevice open時に初期設定に 初期化されます。通常初期設定は9600bpsです。logoutしてgettyがまた 起動されようとする時、gettyは同然115200bpsの設定にしようとcomを openします。ここのopenでは上に述べた初期設定によって9600bpsに スピードが落されます。もちろん、この後gettyはioctlでcomの設定を 115200にしますが、この間のわずかなギャップは、転送レートが互いに 一致しない期間を作って不正な状況をもたらします。 この問題を解決する方法として、comctrlコマンドによって初期設定を 変更する事ができます。ですから、このような問題が発生したら、comctrl コマンドで初期設定を適切に変更してください。 (先にも述べましたが、com.conf + comstartという方法もあります) 2-4. モデムを着信設定にして、gettyは115200で立ち上げています。 なぜか、モデムの転送レートが低い気がするのですが。 これも2-3. と同じ問題です。最近のモデムは自動的にmachine <=> modem 間のスピードを測定してmodem <=> modem間のネゴシエーションをする機能 がデフォルトになっています。gettyはキャリア待ちの為にopenでsleep しています。この時のスピードは初期設定のスピードになっています。 従って、タイミングにもよりますが、モデムは9600bpsと勘違いしてし まうのです。よって、この場合も2-3. と同様の対策を行ってください。 2-5. 私のボードは230400bps以上のスピードがでます。でもBSD系の プログラムは通常115200までしか対応していないようです。 簡単に230400bps以上のスピードで既存のプログラムを使えませ んか? comctrl hwfix 230400 を実行してください。hwfixというのは、 comctrl以外は一切comの設定を変更出来なくするモードです。従って、 programsをだまして、実は高速転送の状態という事が可能です。この モードを抜けるには comctrl -hwfix を実行して下さい。 2-6. /dev/cua0がないのですが、どうすれば良いのでしょうか? NetBSD/pc98(based on NetBSD 1.2)では、 /usr/src.skel/etc/etc.i386/MAKEDEVのallエントリの中にcua0 が含まれていないためです。rootになって、 # cd /dev # sh MAKEDEV cua0 を実行して下さい。 NetBSD/pc98 core team 連絡先 E-Mail:netbsd-98@njk.co.jp