如何从逻辑上弹出/断开连接并重新连接 USB 设备(加密狗)?

如何从逻辑上弹出/断开连接并重新连接 USB 设备(加密狗)?

我们购买了一个商业应用程序,该应用程序仅在其加密狗 USB 连接到服务器时才工作。然而,有时应用程序无法识别加密狗,因此它无法工作,但如果有人从 USB 端口物理弹出加密狗并再次连接它,它将识别并正常工作。

服务器上加载了 43 个模块,连接/弹出加密狗不会增加/减少模块数量。

我还有usbmon0,usbmon1usbmon2文件在/dev 弹出/附加加密狗之前/之后以及其中的文件数量/dev在弹出/连接加密狗之前/之后不会改变。

日志ctl -f弹出加密狗后命令:

Jan 19 18:10:28 iwr kernel: usb 2-2.1: USB disconnect, device number 5

日志ctl -f连接加密狗后的命令:

Jan 19 18:11:11 iwr kernel: usb 2-2.1: new full-speed USB device number 6 using uhci_hcd
Jan 19 18:11:11 iwr kernel: usb 2-2.1: New USB device found, idVendor=0403, idProduct=c580
Jan 19 18:11:11 iwr kernel: usb 2-2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Jan 19 18:11:11 iwr kernel: usb 2-2.1: Product: HID UNIKEY
Jan 19 18:11:11 iwr kernel: usb 2-2.1: Manufacturer: OEM
Jan 19 18:11:11 iwr kernel: usbhid 2-2.1:1.0: couldn't find an input interrupt endpoint

我可以弹出然后逻辑连接吗? (发出命令、删除模块等)

答案1

在互联网上找到的许多答案(包括 TNW 评论中的答案)都依赖于/sys/bus/usb/devices/2-2/power/level/sys/bus/usb/devices/2-2/power/control自 2.6.something 内核以来已弃用的答案。对于较新的内核,建议的程序是解除绑定并重新绑定其驱动程序,这通常会导致电源循环:

# Find out which driver to unbind
tree /sys/bus/usb/devices/2-2.1 | grep driver
|-- driver -> ../../../../../../bus/usb/drivers/whatever

# Unbind the driver
echo 2-2.1 > /sys/bus/usb/drivers/whatever/unbind

# Rebind the driver
echo 2-2.1 > /sys/bus/usb/drivers/whatever/bind

相关内容