无法为Ubuntu 12.04的USB串行端口设置波特率
我刚刚从Ubuntu 10.04升级到一个项目,该项目通过115,200波特率的USB串行端口连接嵌入式设备。 升级后,它不起作用,但我重新启动并能够连接。 由于关闭并重新启动我的系统,我无法连接。 串行线看起来像是以错误的波特率连接(快速字符串,如:
"'''''''''''''''''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
我一直在Ubuntu 10.04下使用这个设备几个月,并且能够在上周使用它们,但是由于关闭和重新启动,我一直无法使用它。 我在网上看了一下,发现有几个人有类似的问题,但没有解决方案。 我该如何解决这个问题?
我仍然不知道发生了什么,但它现在正在工作。 对于遇到同样问题的任何人,我尝试了“modprobe -r usbserial”(我的想法是查看是否可以使用modprobe -f加载旧驱动程序;它不能),然后重新加载模块“modprobe usbserial” 。 这一次串行工作正常 - 我不知道为什么。
现在当我确实报告时:
~$ 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
和dialout
组也具有写权限( rw
)。
如果你是dialout
组的成员,你可以通过上面提到的stty -F /dev/ttyUSB0 115200
命令来改变速度,而不需要额外的东西,否则你需要使用sudo
。
您可以使用id
命令控制您的成员资格状态。
上一篇: Cannot set baud rate on USB serial port for Ubuntu 12.04