- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!! 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