CentOS 7 서버에 연결된 내 USB 장치(OnePlus 10T 스마트폰)가 가끔 "오류"를 표시합니다(Google) 공급업체: 제품 IDLSSB다시 시작한 후 출력:
Bus 002 Device 003: ID 18d1:4ee8 Google Inc. Nexus/Pixel Device (MIDI)
USB 케이블을 분리했다가 다시 연결하면 일반적으로 올바른 케이블(22d9:2765 OPPO)로 변경되지만, 다음과 같은 방법을 사용하여 자동으로 올바른 케이블을 강제로 연결하는 방법이 있습니까?우데브? USB 포트를 재설정합니다(예: 다음과 같은 방법 사용).USBreset,uhubctl등) 별 도움이 안 되는 것 같습니다.
미리 감사드립니다!
답변1
아니요, 그렇게 할 수는 없습니다. 이 정보는 장치 식별 중에 하드웨어가 장치에서 읽은 다음 커널에 제공됩니다.
당신이 할 수 있는 일은 특정 드라이버가 장치를 인식하도록 하는 것입니다:
echo 2-7:1.0 > /sys/bus/usb/drivers/<drivername>/bind
이는 2-7:1.0
장치의 USB 버스 주소입니다.미루다lsusb -t
그것은 출력 에서 나옵니다 . 이 작업을 자동으로 수행하기 위해 udev 규칙을 만들 수도 있습니다.
그러나 이는 도움이 되지 않을 수 있습니다. 귀하의 휴대폰은 다른 모드에서 초기화되었고 실제로는 다른 장치이기 때문에 예상된 PID:VID 쌍을 제공하지 않는 것 같습니다. 예를 들어, 내 전화기가 내 컴퓨터에 연결되어 있음을 발견하면 "USB 저장소", "MTP 장치" 또는 "충전 전용" 옵션과 함께 "어떤 모드에서 실행"인지 묻고 컴퓨터에 다른 방식으로 표시합니다. 다른 드라이버에 바인딩합니다. 제 경우에는 자동으로 바인딩된 드라이버 대신 장치를 다른 드라이버에 강제로 바인딩하는 것이 작동하지 않았습니다.
휴대폰이 때때로 잘못된 방식으로 초기화되는 이유는 완전히 다른 질문입니다. 억지로 일이 일어나도록 하기보다는 문제를 해결하는 것이 더 좋습니다.
답변2
당신은 할 수 없습니다. 이는 USB 장치의 기본 속성입니다. 이는 귀하의 컴퓨터에 의해 제어되지 않습니다.
당신이 할 수 있는 일은 udev 규칙을 사용하여 버스를 재설정하여 장치가 다시 등록되도록 하는 것입니다. 그러나 이는 일반적으로 해당 버스의 다른 모든 장치를 폐기하고 저장 미디어 등의 경우 데이터 손실을 일으킬 수 있으므로 매우 나쁜 생각처럼 들립니다.
요약하자면, USB 장치가 실제와 다르게 작동하도록 하려면 호스트의 소프트웨어가 아닌 장치의 펌웨어를 변경해야 합니다.