首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Ubuntu 12.04的USB串行端口上设置波特率

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

Stack Overflow用户
提问于 2012-11-19 16:17:13
回答 2查看 40.9K关注 0票数 9

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

代码语言:javascript
复制
"'''''''''''''''''ppppp'''''''''''''''pppppp'''''''''''"...

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

代码语言:javascript
复制
$ sudo stty -F /dev/ttyUSB0 115200
stty: /dev/ttyUSB0: unable to perform all requested operations

如果我尝试设置为9600,它似乎可以工作:

代码语言:javascript
复制
$ sudo stty -F /dev/ttyUSB0 9600

但其他任何东西都失败了:

代码语言:javascript
复制
$ sudo stty -F /dev/ttyUSB0 4800
stty: /dev/ttyUSB0: unable to perform all requested operations

下面是stty看到的:

代码语言:javascript
复制
$ 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设置波特率,但不是从命令行,所以我得到了Minicom并尝试了一下,但我得到了同样的结果(似乎是错误的波特率)。

我也尝试了setserial,但也拒绝接受/dev/ttyUSB设备:

代码语言:javascript
复制
$ 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中的设置:

代码语言:javascript
复制
$ 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下使用这个设备几个月了,上周我可以使用它们了,但自从关机和重启后,我就一直无法使用它们。我在网上找到了一些有类似问题的人,但没有一个人有解决方案。我如何解决这个问题?

EN

回答 2

Stack Overflow用户

发布于 2012-11-20 08:38:07

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

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

代码语言:javascript
复制
~$ stty -F /dev/ttyUSB0
speed 115200 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel
-opost
-isig -icanon -iexten -echo

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

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

票数 4
EN

Stack Overflow用户

发布于 2014-01-09 23:39:12

需要设备文件的写权限才能更改设置。你可以通过简单的列表来控制它。例如:

代码语言:javascript
复制
$ 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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13449912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档