我目前正在使用PyUSB。由于我是USB的新手,我不知道该怎么做。
我已经成功地从PythonPyUSB连接到我的USB设备硬件。在代码中,我需要重置USB设备硬件。我通过向硬件发送命令来完成。现在硬件重置后,我想从PythonPyUSB中释放当前的USB设备。然后我想在USB设备硬件重置后再次连接到它。
请告诉我,我如何释放USB设备连接和接口等,以便重新连接?
事先非常感谢。
my_device = usb.core.find(...)
# necessary to allow further claim_interface calls
# (bulk read), generally not needed
usb.util.dispose_resources(my_device)
#!/usr/bin/python
from usb.core import find as finddev
dev = finddev(idVendor=0x1234, idProduct=0x5678)
dev.reset()
虽然上面的答案完全正确,但我多次遇到重置USB设备不够的情况。
处理这些问题的一个好方法是断开USB控制器的电源,迫使它们重新启动,就好像它们已经插上电源一样。
TL;DR:我已经构建了一个小的python脚本来重置usb设备或usb控制器。查看此链接在没有其他重置解决方案的情况下对我有效(一些坏的USB UPSe)用法:
usb_reset --reset
#or
usb_reset --list && usb_reset -d 1234:1234
使用bash的原始想法来自这里
for i in /sys/bus/pci/drivers/[uoex]hci_hcd/*:*; do
[ -e "$i" ] || continue
echo "Resetting ${i%/*}/${i##*/}"
echo "${i##*/}" > "${i%/*}/unbind"
echo "${i##*/}" > "${i%/*}/bind"
done