USBコントローラをリセットする方法は?

USBコントローラをリセットする方法は?

マウスとキーボードが接続されている名前のないUSB 2.0ハブを接続すると、コンピュータのUSBポートが機能しなくなります。ここに接続されているデバイスは、ハブを介して直接であっても直接検出されなくなります。

システムを再起動するとポートが再び動作する可能性がありますが、あまり大胆でないアプローチをとり、USBコントローラを「リセット」することをお勧めします。

ベストアンサー1

私は私に合ったスクリプトを書いています(Debian 11で):

#!/usr/bin/env bash
# Resets all USB host controllers of the system.
# This is useful in case one stopped working
# due to a faulty device having been connected to it.

base="/sys/bus/pci/drivers"
sleep_secs="1"

# This might find a sub-set of these:
# * 'ohci_hcd' - USB 3.0
# * 'ehci-pci' - USB 2.0
# * 'xhci_hcd' - USB 3.0
echo "Looking for USB standards ..."
for usb_std in "$base/"?hci[-_]?c*
do
    echo "* USB standard '$usb_std' ..."
    for dev_path in "$usb_std/"*:*
    do
        dev="$(basename "$dev_path")"
        echo "  - Resetting device '$dev' ..."
        printf '%s' "$dev" | sudo tee "$usb_std/unbind" > /dev/null
        sleep "$sleep_secs"
        printf '%s' "$dev" | sudo tee "$usb_std/bind" > /dev/null
        echo "    done."
    done
    echo "  done."
done
echo "done."

メモ:

  • コントローラをリセットするには、ルートアクセスが必要です。

以下から得たアイデア: https://www.linux.org/threads/resetting-the-usb-subsystem.10404/

おすすめ記事