Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

debian系OSでUSBデバイスをソフトウェア的に抜き差しする

node-redでUSBカメラを使おうとしたところ、
おそらくUIの方に握られてInjectの時刻毎の実行ができないケースに遭遇しました

一応抜き差しで何とかはなったものの、最終的にはリモートで操作したいので……これを機にコマンドでやる方法を調べる事に

実際のところ

実際の作業

起動時の状態はこんな感じ
今回紹介する方法で抜き差しする場合でもDevice番号は都度加算されるので注意

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 046d:0825 Logitech, Inc. Webcam C270
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

”/sys/bus/usb/drivers/usb/unbind”に対象のポートを書き込む事で実施できます
今回のケースではターゲットのC270カメラ以外なにも入ってないので……前面パネル全部である"1-1"を指定する侠気スタイル

$ echo "1-1" | sudo tee /sys/bus/usb/drivers/usb/unbind

改めて接続する際は

$ echo "1-1" | sudo tee /sys/bus/usb/drivers/usb/bind

というわけで、抜き差しはこんなコマンドになります

$ echo "1-1" | sudo tee /sys/bus/usb/drivers/usb/unbind; \
sleep 1; \
echo "1-1" | \
sudo tee /sys/bus/usb/drivers/usb/bind