ttyUSB0のシリアルフロー制御の問題

ttyUSB0のシリアルフロー制御の問題

これは以下に関連しています。前のスレッド一ヶ月前に書いたが、返事が来た。

今日、私はBelkin F5U409 USBシリアルアダプタを使用してUbunutu 20を実行しているラップトップでシリアルコンソールログインプロンプトを設定してみました。私は同じ問題に直面しました。大きなテキスト出力が最終的に間違ったテキストに分解されました。ただし、この時間設定はstty ixon問題を解決しません。下記の質問のサンプル出力をご覧ください。

コンテキストでRS232を介してUbuntuノートブックに接続するために使用されるコンピュータはEPSON PX-8です。 PX-8では、TEL.COMという端末エミュレーションソフトウェアを使用しています。以下のPX-8で設定した端末パラメータを参照してください。

USB0でコンソールを有効にするためにsystemdを使用しています。 systemdを使用してフロー制御を設定する必要がありますか? sttyに加えて、ttyUSB0のパラメータを設定する必要がある他の場所はありますか?systemctl start [email protected]

Debian 10を実行している別のラップトップで設定しようとしましたが、同じ動作が発生しました。

PX-8のTEL.COM設定:

Baud: 9600, Char Bits: 8, Parity: NONE, Stop Bits: 2, RTS: ON, Flow Control: ON

コマンド履歴を出力しようとすると、この問題の例は次のとおりです。

albert@t450:/$ history
    1  sudo rasp-config
    2  sudo raspi-config
    3  sudo nano /boot/cmdline.txt
    4  tail /boot/cmdline.txt
    5  sudo shutdown -r now
    6  sudo vim ~/boot/cmdline.txt
    7  cd /./boot
    8  dir
    9  sudo vim cmdline.txt
   10  sudo vim config.txt
   11  sudo shutdown -r now
   12  dfgdf
   13  vim
   14  sudo vim cmdline.txt
   15  cd /./boot
   16  sudo vim cmdline.txt
   17  sudo shutdown -r now
   18  cd /./boot
   19  sudo vim cmdline.txt
   20  sudo shutdown -r now
   21  ping 8.8.8.8
   2 xprt TEM=Vvj9s9ds9j3oin so nat1 machine
  x Rom =vos cngas-2goses9g3
-xtiet n n5
-s oiy
y

Ubuntuシステムのstty構成:

albert@t450:/$ stty -a
speed 9600 baud; rows 40; columns 80; line = 0; intr = ^C; quit = ^\; erase = ^?; 
kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; 
stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; 
time = 0; -parenb -parodd -cmspar cs8 -hupcl cstopb cread -clocal -crtscts -ignbrk 
-brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon ixoff -iuclc -ixany 
-imaxbel iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 
bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop 
-echoprt echoctl echoke -flusho -extproc

これらのパラメータはすべてsttyに設定されています。

ixon
ixoff 
stop = ^S
start = ^Q;
cs8 
cstopb
-parenb

答え1

ベルキン F5U109 かなり古いデザインの機器らしいので、おそらくF5Uではないかと思います。409同じUSBを使うサプライヤー:機器IDも似ています。この場合、IDによって選択されたLinuxドライバはmct_u232.c。私たちはできる.h ファイル~のためフロー制御:

DTR/RTS 設定以外は、フロー制御関連の要求は実装されません。フロー制御がない場合は両方の信号が削除されますが、ハードウェアまたはソフトウェアのフロー制御を使用すると両方の信号が検証されます。

したがって、このドライバにはXON / XOFFソフトウェアフロー制御が実装されていないようで、Windows 98で実行されたUSBコマンドをスニッフィングして得られたものです。おそらく、ハードウェア自体がこの機能を提供していない可能性があります。

ユーザーレベルでフロー制御を実装しようとすることができますが、入出力に先入れ先出しがある可能性があるため、これだけでは不十分です。したがって、XOFFがユーザーレベルに達すると、まだ文字が多すぎるfifoがある可能性があります。キャンセルします。おそらく、PX-8はデータをパッケージ化するために使用できる他のプロトコルを提供しますか?

追加のモデムラインRTSとCTS(9ピンDB9の場合はピン7と8、DB25の場合はピン4と5)を接続して、ハードウェアフロー制御を引き続き使用できます。 PX-8を端末以外のコンピュータに接続している場合は、交換する必要があります。がstty crtscts必要な場合があります-clocal

さらに、Linuxは、メーカーの適切なドキュメントのおかげで、広く使用されているFTDIシリーズなどの他のシリアルUSBデバイスをよりよくサポートできます。 FTDIドライバには次のようです。パスワードデバイスでXONおよびXOFF文字を設定すると、文字が到着してカーネルで認識されるのを待たずに、ハードウェアがXOFF文字の受信にすばやく応答できます。 FTDIチップの違法コピーが存在するため、完全な互換性を確保するために評判の良いブランドから購入することをお勧めします。

関連情報