rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

USB接続機器の抜き挿しをソフトウェアで行う Linux

2020 Jul. 23.


出典元
https://server-setting.info/blog/usb-reset-for-command.html

全体の流れ

"lsusb"(オプション無し)でUSB機器のBus番号とデバイス番号を把握。
"lsusb -t"によるツリー表示で、Bus番号・デバイス番号をキーとして、ポート番号を把握。
下記コマンドでUSB機器を切り離し、接続。
 # echo -n "BUS番号-[HUBポート番号.]当該機器ポート番号" > /sys/bus/usb/drivers/usb/[un]bind

USB接続機器の確認

# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 004: ID 05af:0507 Jing-Mold Enterprise Co., Ltd
Bus 002 Device 003: ID 248a:8514
Bus 002 Device 002: ID 04e6:511a SCM Microsystems, Inc.
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

USB接続機器のBus, Port, Device番号の確認

USB接続状況をツリー表示する
# lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/10p, 12M
|__ Port 3: Dev 2, If 0, Class=Vendor Specific Class, Driver=, 12M
|__ Port 8: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 8: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 9: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 9: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/10p, 480M

例)"SCM Microsystems, Inc."USB機器のソフトウェアによる抜き取り

"Bus 002 Device 002: ID 04e6:511a SCM Microsystems, Inc. "から
Bus番号が2、デバイス番号が2とわかる。

ツリー表示から
Bus番号が2、デバイス番号が2の機器は
"Port 3: Dev 2, If 0, Class=Vendor Specific Class, Driver=, 12M" であり、
そのポート番号は3とわかる。

Bus番号が2、ポート番号が3のUSB接続機器の取り外し

# echo -n "2-3" > /sys/bus/usb/drivers/usb/unbind

Bus番号が2、ポート番号が3のUSB接続機器の接続

# echo -n "2-3" > /sys/bus/usb/drivers/usb/bind

USB機器の前にHUBが挟まれている時は、ハイフン直後にHUBのポート番号、その後にドット、その後に当該ポート番号となる。
echo -n "BUS番号-HUBポート番号.当該ポート番号" > /sys/bus/usb/drivers/usb/[un]bind