Linux

如何從邏輯上彈出/斷開連接並重新連接 USB 設備(加密狗)?

  • September 20, 2018

我們購買了一個商業應用程序,只有當他們的加密狗 USB 連接到伺服器時才能工作。然而,有時應用程序無法辨識加密狗,因此它不起作用,但如果有人從 USB 埠物理彈出加密狗並重新連接它,它將辨識並正常工作。

伺服器上傳入了 43 個模組,附加/彈出加密狗不會增加/減少模組數量。

此外,在彈出/附加加密狗之前/之後,我在 /dev 中有 usbmon0 、 usbmon1 和 usbmon2 文件,並且 /dev 中的文件數量在彈出/附加加密狗之前/之後**不會改變。

彈出加密狗後的journalctl -f命令:

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

附加加密狗後的journalctl -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

我可以彈出然後在邏輯上附加它嗎?(發出命令,刪除模組等)

在 Internet 上找到的許多答案(包括 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

引用自:https://unix.stackexchange.com/questions/256331