无法为Ubuntu 12.04的USB串口设置波特率

use*_*090 9 usb ubuntu serial-port usbserial

我刚从Ubuntu 10.04升级到一个项目,该项目通过USB串口以115,200波特连接嵌入式设备.升级后,它没有工作,但我重新启动,并能够连接.由于关闭并重新启动我的系统,我无法连接.串行线看起来像是以错误的波特率连接(快速的字符串如下所示:

"'''''''''''''''''ppppp'''''''''''''''pppppp'''''''''''"...
Run Code Online (Sandbox Code Playgroud)

USB设备正在被识别并设置为/dev/ttyUSB0.当我尝试设置波特率时,stty我得到:

$ sudo stty -F /dev/ttyUSB0 115200
stty: /dev/ttyUSB0: unable to perform all requested operations
Run Code Online (Sandbox Code Playgroud)

如果我尝试设置9600它似乎工作:

$ sudo stty -F /dev/ttyUSB0 9600
Run Code Online (Sandbox Code Playgroud)

但其他事情都失败了:

$ sudo stty -F /dev/ttyUSB0 4800
stty: /dev/ttyUSB0: unable to perform all requested operations
Run Code Online (Sandbox Code Playgroud)

这是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
Run Code Online (Sandbox Code Playgroud)

我可以使用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
Run Code Online (Sandbox Code Playgroud)

最后,这里是设备,以及他们从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
Run Code Online (Sandbox Code Playgroud)

我曾经在Ubuntu 10.04下使用这个设备几个月并且上周能够使用它们,但是由于关闭和重新启动我无法做到.我在网上找了几个有类似问题的人,但没有解决方案.我该如何解决这个问题?

use*_*090 5

我仍然不知道发生了什么,但它现在正在发挥作用。对于遇到同样问题的任何人,我尝试了“modprobe -r usbserial”(我的想法是看看旧驱动程序是否可以用 modprobe -f 加载;它不能),然后重新加载模块“modprobe usbserial” 。这次连续剧工作正常 - 我不知道为什么。

现在,当我执行 stty 时,它会报告:

~$ stty -F /dev/ttyUSB0
speed 115200 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel
-opost
-isig -icanon -iexten -echo
Run Code Online (Sandbox Code Playgroud)

我可以更改波特率(我将其更改为 9600,然后又更改回 115200)。

所以没有令人满意的答案,但显然使用它可以让它工作——就像它在重新启动后第一次开始工作一样。

  • 老线程,但如果你只是重复命令(`stty -F /dev/ttyUSB0`),它就会工作。我不知道为什么需要两次尝试,但这应该可行。 (2认同)