无法更改 USB 串行设备上的波特率

rus*_*ell 5 ubuntu usb serial-port

我最近从 10.04 升级到 ubuntu 12.04。在 10.04 下,我使用 usbserial 驱动程序通过串口连接到设备没有问题。升级后通常我无法重置波特率:它被初始化为 9600,但我的设备需要 115200。当我尝试重置速度时,我得到:

$ sudo stty -F /dev/ttyUSB0 
speed 9600 baud; line = 0;
-brkint -imaxbel
$ sudo stty -F /dev/ttyUSB0 115200
stty: /dev/ttyUSB0: unable to perform all requested operations
$ sudo setserial -av /dev/ttyUSB0
Cannot get serial info: Invalid argument
$ ls -l /dev/ttyUS*
crw-rw---- 1 root dialout 188, 0 Nov 26 10:21 /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 1 Nov 26 10:21 /dev/ttyUSB1
Run Code Online (Sandbox Code Playgroud)

最奇怪的是,我有时会使用它。我第一次重新启动系统,它工作。关机后它有同样的问题,重新启动不起作用,但重新加载驱动程序。不幸的是,这并没有奏效,因为:

$ sudo modprobe -r usbserial
$ sudo modprobe usbserial vendor=0x0403 product=0x6001
$ sudo stty -F /dev/ttyUSB0 115200
stty: /dev/ttyUSB0: unable to perform all requested operations
Run Code Online (Sandbox Code Playgroud)

rus*_*ell 2

我想我找到了解决方案,以防将来有人用谷歌搜索它。我的 10.04 默认情况下没有加载 usbserial,所以我必须使用 来加载 usbserial modprobe usbserial vendor=0x0403 product=0x6001,我将其添加到/etc/modules. 我升级后,我的12.04ftdi_sio默认加载驱动程序,这是针对我正在使用的嵌入式设备的。我没有改变我的/etc/modules背部,所以usbserial也被加载了,并且可能引起某种冲突。我删除usbserial/etc/modules重新启动,它起作用了。

如果我对这个解决方案真的有信心,我会通过再次重新启动我的机器并查看串行端口是否正常启动来确认它 - 但如果我重新启动并失去连接,我会觉得很愚蠢,因为我确实需要在同时完成工作我有。