试图解决 this problem (ttyUSB0 正常工作而不是在大约 1 小时后停止工作)我在考虑断开并重新连接 USB 设备是否是一个很好的解决方案。
那么,是否可以切断 USB 设备的电源并以编程方式(bash)重新启动它?
# lsusb -t
1-1:1.0: No such file or directory
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=musb-hdrc/1p, 480M
|__ Port 1: Dev 2, If 0, Class=vend., Driver=, 12M
|__ Port 1: Dev 2, If 1, Class=vend., Driver=cp210x, 12M
在 am335x 上,内核 3.2.0,ubuntu 核心 armhf。
[ 1.784332] usb 1-1: cp210x converter now attached to ttyUSB0
目前我需要一个完整的电源循环才能恢复
ttyUSB0
。 最佳答案
这是解决方案:
# tree /sys/bus/usb/drivers/cp210x/
/sys/bus/usb/drivers/cp210x/
|-- 1-1:1.1 -> ../../../../devices/platform/omap/musb-ti81xx/musb-hdrc.1/usb1/1-1/1-1:1.1
|-- bind
|-- module -> ../../../../module/cp210x
|-- remove_id
|-- uevent
-- unbind
所以
1-1:1.1
是我的 ttyUSB0
的标识符(也可以通过 dmesg
发现)。# echo -n "1-1:1.1" > /sys/bus/usb/drivers/cp210x/unbind
# echo -n "1-1:1.1" > /sys/bus/usb/drivers/cp210x/bind
此时我有相同的设备,但名称不同,现在是 ttyUSB1 而不是 ttyUSB0。
- 为了避免这种情况,我通过使用以下行创建一个名为
/etc/udev/rules.d/
的新文件在 99-usb-serial.rules
中添加了一个新规则:SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea70", ATTRS{serial}=="002DCFAF", SYMLINK+="sameName", MODE:="0666"
其中
idVendor
、 idProduct
和 serial 必须是您设备的值。此规则将创建一个名为 sameName
的新设备,该设备链接到通常从操作系统生成的 ttyUSB*
设备。关于linux - 在 Linux 中以编程方式断开和重新连接 ttyUSB0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21580750/