Un/bind 通过 Python 的 USB 设备(最好通过 PyUSB)
Un/bind a USB device via Python (preferably by PyUSB)
有没有 pyusb 解除绑定 USB 设备的方法?
我知道使用以下 bash
USB 未绑定。
DEVICE=$(grep 064f /sys/bus/usb/devices/*/idVendor | tr '/' ' ' | awk '{ print }')
/bin/bash -c "echo $DEVICE >/sys/bus/usb/drivers/usb/unbind"
但出于各种原因,我喜欢从 bash
转移到 Python,并且最好避免维护我习惯的、复杂的逻辑。所以使用现有的库对我来说很有意义。
中的选定答案建议 detach_kernel_driver
为此目的工作,但我没有在我的环境中看到这种情况;它确实卸载了指定 USB 设备中的卷(通过观察 USB 上的磁盘 space 在 lsblk
的输出中消失来确认)但我仍然看到 OS 检测到 USB 设备。
$ ipython
In [7]: import usb
...: dev = usb.core.find(idVendor=0x064f, idProduct=0x03f3)
In [8]: dev.detach_kernel_driver(0)
$ watch lsusb
:
Bus 002 Device 043: ID 064f:03f3 WIBU-Systems AG CmStick/M (article no. 1011)
环境
Linux(在撰写本文时,Ubuntu 16.04(我知道 EoLed)或 18.04。但环境不应成为限制因素。无论版本如何,都可以使用可用的解决方案。
更新:我的用例需要模拟移除 USB 设备。我们对通常称为 un/bind
的操作很满意,对实现 un/bind
.
的 bash
解决方案也很满意
有没有 pyusb 解除绑定 USB 设备的方法?
我知道使用以下 bash
USB 未绑定。
DEVICE=$(grep 064f /sys/bus/usb/devices/*/idVendor | tr '/' ' ' | awk '{ print }')
/bin/bash -c "echo $DEVICE >/sys/bus/usb/drivers/usb/unbind"
但出于各种原因,我喜欢从 bash
转移到 Python,并且最好避免维护我习惯的、复杂的逻辑。所以使用现有的库对我来说很有意义。
detach_kernel_driver
为此目的工作,但我没有在我的环境中看到这种情况;它确实卸载了指定 USB 设备中的卷(通过观察 USB 上的磁盘 space 在 lsblk
的输出中消失来确认)但我仍然看到 OS 检测到 USB 设备。
$ ipython
In [7]: import usb
...: dev = usb.core.find(idVendor=0x064f, idProduct=0x03f3)
In [8]: dev.detach_kernel_driver(0)
$ watch lsusb
:
Bus 002 Device 043: ID 064f:03f3 WIBU-Systems AG CmStick/M (article no. 1011)
环境
Linux(在撰写本文时,Ubuntu 16.04(我知道 EoLed)或 18.04。但环境不应成为限制因素。无论版本如何,都可以使用可用的解决方案。
更新:我的用例需要模拟移除 USB 设备。我们对通常称为 un/bind
的操作很满意,对实现 un/bind
.
bash
解决方案也很满意