USB: Linux에서 장치 비활성화 및 다시 활성화

USB: Linux에서 장치 비활성화 및 다시 활성화

USB 장치가 가끔 작동하지 않습니다. 플러그를 뽑거나 꽂는 것이 정말 고통스럽기 때문에(책상 아래, 사물 뒤에 있는 케이블...) 가상으로 장치를 뽑거나 꽂을 수 있는 방법이 있습니까? 껐다가 다시 켜는 것처럼요?

감사해요

답변1

ioctl을 사용해 보세요 USBDEVFS_RESET.

시스템에 usbreset유틸리티가 포함 usbutils되어 있지 않은 경우https://github.com/gregkh/usbutils/blob/master/usbreset.c그냥 cc usbreset.c -o usbreset.

내 라우터와 같은 일부 장치에서는 이 기능을 적용하려면 장치가 아닌 연결된 허브를 재설정해야 합니다.

# ./usbreset
Usage:
  usbreset PPPP:VVVV - reset by product and vendor id
  usbreset BBB/DDD   - reset by bus and device number
  usbreset "Product" - reset by product name

Devices:
  Number 001/004  ID 062a:4101  2.4G Keyboard Mouse
  Number 001/006  ID 03f0:e111  DeskJet 2130 series
  Number 001/002  ID 05e3:0608  USB2.0 Hub
  Number 001/005  ID 248a:8514  Wireless Receiver
  Number 001/003  ID 05e3:0608  USB2.0 Hub
$ ./a.out 062a:4101

답변2

허용되는 USBDEVFS_RESET솔루션은 재삽입(커널 메시지 기반)보다 열등합니다. 예를 들어, "포트" 인터페이스를 사용하는 것이 더 좋습니다:

echo 1 > /sys/bus/usb/devices/3-2.1/port/disable

내 웹사이트에서 더 많은 관련 콘텐츠 보기다른 답변.

관련 정보