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
내 웹사이트에서 더 많은 관련 콘텐츠 보기다른 답변.