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/

관련 정보