无法在Ubuntu 12.04的USB串行端口上设置波特率

无法在Ubuntu 12.04的USB串行端口上设置波特率,ubuntu,serial-port,usb,usbserial,Ubuntu,Serial Port,Usb,Usbserial,我刚刚从Ubuntu10.04升级了一个项目,该项目通过一个115200波特的串行端口连接一个嵌入式设备。升级后,它没有工作,但我重新启动并能够连接。自从关闭并重新启动系统后,我一直无法连接。串行线看起来是以错误的波特率连接的(快速字符串,如: "'''''''''''''''''ppppp'''''''''''''''pppppp'''''''''''"... USB设备被识别并设置为/dev/ttyUSB0。当我尝试用stty设置波特率时,我得到: $ sudo stty -F /dev/

我刚刚从Ubuntu10.04升级了一个项目,该项目通过一个115200波特的串行端口连接一个嵌入式设备。升级后,它没有工作,但我重新启动并能够连接。自从关闭并重新启动系统后,我一直无法连接。串行线看起来是以错误的波特率连接的(快速字符串,如:

"'''''''''''''''''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、echo等)更改其他值,但不能更改波特率

我在网上看到一条评论,有人可以设置波特率,但不是从命令行,所以我得到了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下使用这个设备已经有几个月了,上周已经可以使用了,但是自从关闭和重新启动后,我一直无法使用。我在网上查找,发现一些人有类似的问题,但没有找到解决方案。我如何解决这个问题呢?

我仍然不知道发生了什么,但它正在工作现在,对于遇到相同问题的任何人,我尝试了“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
我可以改变波特率(我把它改为9600,然后又改回115200)


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

更改设置需要对设备文件的写入权限。您可以控制它 用简单的列表

$ ls -l
crw-rw-r-T 1 root dialout 188, 0 jan    9 16:16 /dev/ttyUSB0
在上述情况下,每个人都有读取权限(
r
)超级用户
root
而且,
拨出
组也有写入权限(
rw

如果您是
拨号组的成员,您可以更改速度
上述
stty-F/dev/ttyUSB0 115200没有任何额外内容
命令,否则您需要使用
sudo


你可以用
id
命令来控制你的成员身份。

你试过使用setserial吗?是的,setserial调用/dev/ttyUSB0是一个“无效参数”(见问题的结尾)旧线程,但是如果你只是重复这个命令(
stty-F/dev/ttyUSB0
),它会工作的。我不知道为什么它需要两次尝试,但应该可以。