web-dev-qa-db-ja.com

Ubuntu12.04のUSBシリアルポートにボーレートを設定できません

[〜#〜] usb [〜#〜] シリアルポートを115,200ボーで接続するプロジェクトでUbuntu10.04からアップグレードしました。これをアップグレードした後、動作しませんでしたが、再起動して接続できました。システムをシャットダウンして再起動してから、接続できませんでした。シリアルラインは、間違ったボーレートで接続されているように見えます(次のような文字列が高速です:

"'''''''''''''''''ppppp'''''''''''''''pppppp'''''''''''"...

USBデバイスが認識され、/dev/ttyUSB0として設定されています。 sttyでボーレートを設定しようとすると、次のようになります。

$ Sudo stty -F /dev/ttyUSB0 115200
stty: /dev/ttyUSB0: unable to perform all requested operations

9600に設定しようとすると、うまくいくようです。

$ Sudo stty -F /dev/ttyUSB0 9600

しかし、他のものは失敗します:

$ Sudo stty -F /dev/ttyUSB0 4800
stty: /dev/ttyUSB0: unable to perform all requested operations

Sttyが見るものは次のとおりです。

$ stty -F /dev/ttyUSB0
speed 9600 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel
-opost -onlcr
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke

Stty(echo、echoeなど)を使用して他の値を変更できますが、ボーレートは変更できません。

誰かが Minicom でボーを設定できるというコメントをオンラインで見ましたが、コマンドラインからではなかったので、Minicomを入手して試してみましたが、同じ結果が得られました(ボーレートが間違っているようです) )。

Setserialも試しましたが、/dev/ttyUSBデバイスの受け入れも拒否されます。

$ Sudo setserial  /dev/ttyUSB0 -a
Cannot get serial info: Invalid argument
$ Sudo setserial  /dev/ttyS0 -a
/dev/ttyS0, Line 0, UART: 16550A, Port: 0x03f8, IRQ: 4
    Baud_base: 115200, close_delay: 50, divisor: 0
    closing_wait: 3000
    Flags: spd_normal skip_test

最後に、デバイスとdmesgからのセットアップを次に示します。

$ ls -l /dev/ttyUSB*
crw-rw-rw- 1 root dialout 188, 0 Nov 19 15:53 /dev/ttyUSB0
crw-rw-rw- 1 root dialout 188, 1 Nov 19 16:00 /dev/ttyUSB1
$ dmesg | grep ttyUSB
[   32.444445] usb 4-1: generic converter now attached to ttyUSB0
[   32.444549] usb 8-2: generic converter now attached to ttyUSB1

私はUbuntu10.04でこのデバイスを数か月使用していて、先週は使用できましたが、シャットダウンして再起動してから使用できませんでした。私はオンラインで調べて、同様の問題を抱えている人を何人か見つけましたが、解決策を持っている人はいません。この問題を解決するにはどうすればよいですか?

9
user1835090

何が起こったのかはまだわかりませんが、現在は機能しています。同じ問題が発生した場合は、「modprobe -r usbserial」(古いドライバーをmodprobe -fでロードできるかどうかを確認することを考えていましたが、ロードできませんでした)を試し、モジュール「modprobeusbserial」をリロードしました。 。今回はシリアルが正しく機能しました-理由はわかりません。

今私がsttyをするとき、それは報告します:

~$ stty -F /dev/ttyUSB0
speed 115200 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel
-opost
-isig -icanon -iexten -echo

ボーレートを変更できます(9600に変更してから115200に戻しました)。

したがって、満足のいく答えはありませんが、再起動後に初めて機能し始めたのと同じように、それで遊んでみると機能するようです。

4
user1835090

設定を変更するには、デバイスファイルへの書き込み権限が必要です。あなたは簡単なリストでそれを制御することができます。例えば。

$ ls -l
crw-rw-r-T 1 root dialout 188, 0 jan    9 16:16 /dev/ttyUSB0

上記の場合、全員に読み取り権限(r)があり、スーパーユーザーrootdialoutグループにも書き込み権限(rw)があります。

dialoutグループのメンバーである場合は、上記のstty -F /dev/ttyUSB0 115200コマンドを使用して、何も追加せずに速度を変更できます。それ以外の場合は、Sudoを使用する必要があります。

idコマンドを使用してメンバーシップステータスを制御できます。

0
kaliczp