【Linux Mint】USBの抜き差しをコマンドで

PC&スマートフォンの記事

本記事はアフィリエイト広告およびリンクを含みます。

無線のマウスを使っているのですが、サスペンド復帰時に毎回動かなくなるんですよね。
その度にUSBに刺してあるレシーバーを抜き差ししているのですが、これがめんどい!

メーカー名や型番などの記載もない安物マウス(これです↓)なので、原因も探りづらいし、、

ということで、コマンドにて抜き差しが出来ないか調べてみることに。

調べた結果

コマンドで USB をリセットしてみる : レンタルサーバー・自宅サーバー設定・構築のヒント
linuxでのusbの抜き差しをコマンドで実施する : えむけいプラン(公式)

普通にできそうな感じ。

やってみた結果

lsusb コマンドで現在のUSBのデバイスリストが表示。

$ lsusb
Bus 002 Device 002: ID 056e:8007 Elecom Co., Ltd USB3.0 Card Reader
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 014: ID 0581:0105 Racal Data Group 
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 003: ID 04bb:014a I-O Data Device, Inc. HDCL-UT
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 413c:2105 Dell Computer Corp. Model L100 Keyboard
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Linux Foundation ~ って書いてあるやつが多分使っていないUSBポート。
Elecom Co., Ltd USB3.0 Card Reader がmicrosdを読み込むためのカードリーダー。
Data Device, Inc. HDCL-UT がHDD。
Dell Computer Corp. Model L100 Keyboard がキーボード。

となると、Racal Data Group がマウスってことになります。

lsusb -t コマンドでツリーリスト表示に。

$ lsusb -t
/:  Bus 08.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 07.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 2: Dev 14, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
    |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
    |__ Port 6: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 480M

Bus 006 Device 014 がマウスなので、
Bus 06.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
Port 2: Dev 14, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
が重要。

次にマウスを unbind する。
Bus 06 で port 2 なので、6-2になるらしい。

port の下にさらに port がくっついている場合もあるので、詳しく知りたい方はこちらを参考にされたし。
コマンドで USB をリセットしてみる : レンタルサーバー・自宅サーバー設定・構築のヒント

$ echo -n "6-2"  > /sys/bus/usb/drivers/usb/unbind
bash: /sys/bus/usb/drivers/usb/unbind: 許可がありません

「許可がありません」と怒られる。

リダイレクト処理が一般ユーザー権限で行われているのが原因らしいです。
sudoでリダイレクトするとエラーが出た時の解決法 : LFI

上記サイトから tee コマンドを使って回避。

$ echo -n "6-2" | sudo tee /sys/bus/usb/drivers/usb/unbind

これでマウスが動かなくなったのを確認出来ました。

bind で再接続。

$ echo -n "6-2" | sudo tee /sys/bus/usb/drivers/usb/bind

マウスが動くことを確認。

これでUSBの抜き差しから開放されました!