!! USB のリセットの仕方 *https://billauer.co.il/blog/2013/02/usb-reset-ehci-uhci-linux/ #!/bin/bash if [[ $EUID != 0 ]] ; then echo This must be run as root! exit 1 fi for xhci in /sys/bus/pci/drivers/?hci_hcd ; do if ! cd $xhci ; then echo Weird error. Failed to change directory to $xhci exit 1 fi echo Resetting devices from $xhci... for i in ????:??:??.? ; do echo -n "$i" > unbind echo -n "$i" > bind done done ---- *https://www.01signal.com/ja/other/usb-device-stuck-reset/ $ gcc -O3 -Wall -g usbreset.c -o usbreset $ gcc -O3 -Wall -g hubpower.c -o hubpower $ ./usbreset Usage: usbreset PPPP:VVVV - reset by product and vendor id usbreset BBB/DDD - reset by bus and device number usbreset "Product" - reset by product name Devices: Number 001/004 ID 045e:07b2 Microsoft® Nano Transceiver v1.0 Number 001/002 ID 04f3:0103 $ ./usbreset 001/004 Resetting Microsoft® Nano Transceiver v1.0 ... can't open [Permission denied] $ sudo ./usbreset 001/004 Resetting Microsoft® Nano Transceiver v1.0 ... ok $ sudo ./usbreset 045e:07b2 Resetting Microsoft® Nano Transceiver v1.0 ... ok ---- *https://server-setting.info/blog/usb-reset-for-command.html ! unbind && bind する [ unbind ] # USB番号 1-2.1 を指定して unbind します。 $ echo -n "1-2.1" > /sys/bus/usb/drivers/usb/unbind # USB 1-2.1 ポートが非表示になったことを確認します。 $ lsusb -treturn ... /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 480M |__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/3p, 480M [ bind ] # USB番号 1-2.1 を指定して bind します。 $ echo -n "1-2.1" > /sys/bus/usb/drivers/usb/bind ! usb_modeswitch # あるいは、USB のベンダー番号 1、プロダクト番号 9 を指定して リセット します。 $ usb_modeswitch -v 0x152d -p 0x2338 --reset-usbreturn Look for default devices ... product ID matched Found devices in default mode (1) Access device 009 on bus 001 Current configuration number is 1 Use interface number 0 USB description data (for identification) ------------------------- Manufacturer: JMicron Product: USB to ATA/ATAPI bridge Serial No.: 45342D6D2A72 ------------------------- Warning: no switching method given. See documentation Reset USB device . Device was reset -> Run lsusb to note any changes. Bye! # 同じUSBが 2つ以上挿してある場合、 # さらに、USB のバス番号 1、デバイス番号 9 を指定して リセット します。 $ usb_modeswitch -v 0x152d -p 0x2338 -b 1 -g 9 --reset-usbreturn ... # USB 1-2.1 ポートが表示になったことを確認します。 $ lsusb -treturn ... /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 480M |__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/3p, 480M |__ Port 1: Dev 9, If 0, Class=Mass Storage, Driver=usb-storage, 480M