linux制御USBのバインド/バインド解除
1639 ワード
今日仕事の中で1つの問題に出会って、コードでUSBのenableとdisableを実現します.グーグルは、最終的に理想の答えを見つけて、私はここで短いportingをします.出典:壁外某博まずlsusb-tを介してUSBポート情報を表示する:
(注:制御するUSBを挿抜して、どのBUSのどのportなのかを確認することができます.)ここではBUS 02のport 1のport 6を操作します.以下command去unbindこのUSB: を実行
実はteeを使わなくてもいいです.直接リダイレクトしてもいいです.注意すべきは、echoの文字列:再bindのcommandは、上のcommandのunbindをbindに変更するだけです.
That's it.
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
|__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/8p, 480M
|__ Port 6: Dev 78, If 0, Class=vend., Driver=, 480M
|__ Port 6: Dev 78, If 1, Class=vend., Driver=usbfs, 480M
|__ Port 6: Dev 78, If 2, Class=comm., Driver=cdc_acm, 480M
|__ Port 6: Dev 78, If 3, Class=data, Driver=cdc_acm, 480M
|__ Port 6: Dev 78, If 4, Class=comm., Driver=cdc_acm, 480M
|__ Port 6: Dev 78, If 5, Class=data, Driver=cdc_acm, 480M
|__ Port 6: Dev 78, If 6, Class=comm., Driver=cdc_acm, 480M
|__ Port 6: Dev 78, If 7, Class=data, Driver=cdc_acm, 480M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
|__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
|__ Port 1: Dev 6, If 0, Class=HID, Driver=usbhid, 1.5M
|__ Port 1: Dev 6, If 1, Class=HID, Driver=usbhid, 1.5M
|__ Port 3: Dev 9, If 0, Class=HID, Driver=usbhid, 1.5M
(注:制御するUSBを挿抜して、どのBUSのどのportなのかを確認することができます.)ここではBUS 02のport 1のport 6を操作します.
echo '2-1.6' | sudo tee /sys/bus/usb/drivers/usb/unbind
実はteeを使わなくてもいいです.直接リダイレクトしてもいいです.注意すべきは、echoの文字列:
"$bus_num"-"$port1_num"."$port2_num"
はこのようなformatである.echo '2-1.6' | sudo tee /sys/bus/usb/drivers/usb/bind
That's it.