
dev
통계, 배터리 등을 파일 시스템에 보고 할 수 있도록 드라이버를 개발하려는 임의의 스피커가 있습니다 . 그러나 드라이버와 올바르게 연결하기 위해 스피커의 공급업체 및 장치 ID를 찾는 데 문제가 있습니다.
제조업체가 누구인지도 모르고, 내 Linux 컴퓨터에서는 이를 감지하지 못합니다( lsusb
및 기타 유틸리티). T&G에는 나와 똑같은 스피커가 있지만 내 로고는 다릅니다(주황색 꽃). T&G는 아님 그들 중 하나.
각 장치에는 이와 관련된 공급업체 및 제품 ID가 있습니까?
그렇다면, 자신의 장치도 모르고, 기기도 인식하지 못하는 경우 어떻게 찾나요?
USB 카드와 함께 사용되어야 한다고 생각되는 스피커의 USB 포트를 통해 내 컴퓨터에 배터리 및 기타 통계를 보고하는 것이 가능합니까?
답변1
USB를 통해 통신하는 모든 장치에는 VID(공급업체 ID)와 PID(제품 ID)가 있습니다. 공급업체 ID는 USB Implementers Forum(USB.org)을 통해 얻어지며, 이는 고유성을 어느 정도 보장합니다.
USB 장치를 연결하면 dmesg
해당 장치가 지원되지 않더라도 출력에 표시되어야 합니다. 아직까지 이런 식으로 나타나지 않는 USB 장치를 본 적이 없습니다.
또 다른 옵션은 장치가 USB를 통해 전혀 통신하지 않고 충전용으로 USB 커넥터만 사용한다는 것입니다.
답변2
각 "USB 장치"에는 공급업체 ID와 제품 ID가 있습니다. 그러나 "USB 장치"가 무엇을 의미하는지 주의해야 합니다. USB 포트가 있는 모든 장치가 "USB 장치"는 아닙니다.
첫째, USB 호스트는 "장치"로 간주되지 않습니다. 원칙적으로(현재 USB C는 무시) 호스트에는 A 커넥터가 있어야 하고, 장치에는 B 커넥터가 있어야 하며, 두 가지 역할을 모두 수행할 수 있는 장치에는 AB 커넥터가 있어야 합니다. 실제로 이것은 종종 간과됩니다.
둘째, 많은 것들이 단순히 USB 커넥터를 충전용 전원 포트로 사용하고 USB 호스트나 장치로 전혀 작동하지 않습니다.
lsusb에 표시되지 않으면 USB 장치가 아닌 것이 거의 확실합니다.
USB C는 호스트, 장치 및 "이중 역할 장치"(호스트와 장치 역할을 모두 수행할 수 있는 장치)에 사용할 수 있는 커넥터를 사용하여 상황을 더욱 혼란스럽게 만듭니다.
가장 간단한 수준에서 장치 모드에서만 작동하는 C 포트는 "CC" 핀의 저항기를 사용하여 이 사실을 나타낼 수 있습니다. 고정 호스트 포트는 다른 쪽 끝에 장치가 연결되어 있지 않으면 전원을 공급하지 않아야 하기 때문에 조금 더 복잡하지만 여전히 비교적 간단합니다. IIRC 이중 역할 포트는 호스트 포트 역할과 장치 포트 역할 사이를 빠르게 전환해야 합니다.
그러나 USB C에는 "CC" 핀에서 활성 협상을 사용할 수 있는 옵션도 있습니다. 이는 더 높은 전력 수준을 협상하고, 데이터와 반대 방향으로 전력 전송을 협상하고, USB 이외의 프로토콜 사용을 협상하는 데에도 사용할 수 있습니다.
답변3
각 USB 장치는 VID 및 PID 필드에 16비트 값이 포함된 패킷을 사용하여 자신을 식별해야 합니다. USB 장치를 생산하는 기업이 65,535개 이상일 수 있다는 점을 고려하면 USB 장치를 생산하는 모든 기업이 이와 관련된 고유한 VID를 가질 가능성은 없습니다.
대부분의 경우 USB 컨트롤러 칩 공급업체에서는 해당 칩을 사용하는 장치가 공급업체별 이름으로 프로그래밍되지만 제조업체의 기본 VID/PID 조합을 사용하여 보고하도록 장치를 구성할 수 있습니다. 이를 통해 공급업체에서 제공한 드라이버를 수정 없이 장치와 함께 사용할 수 있지만 소프트웨어가 장치 이름을 검사하여 통신을 시도해야 하는 장치를 결정해야 합니다.
USB가 개발되던 1990년대에는 16비트 VID/PID를 사용하는 것이 거의 합리적이었을 것입니다. 그러나 공급업체와 제품의 수로 인해 현재는 의도한 용도에 적합하지 않습니다.
답변4
dmesg
다른 사람들은 열거가 완료되면 연결된 USB 장치의 VID/PID가 보고된다고 언급했습니다 .
dmesg
USB 장치를 열거할 수 없는 경우 오류를 보고하는 것도 가능합니다.
예를 들어 방금 Ubuntu 18.04에서 USB 2 장치를 연결하려고 했는데 장치가 표시되지 않았습니다 . 확인한 후 다음 오류가 lsusb
발견되었습니다 .dmesg
[19852.532042] usb 3-6: new high-speed USB device number 6 using xhci_hcd
[19858.240057] usb 3-6: device descriptor read/64, error -110
[19874.656054] usb usb3-port6: Cannot enable. Maybe the USB cable is bad?
[19875.624047] usb usb3-port6: Cannot enable. Maybe the USB cable is bad?
[19875.624099] usb usb3-port6: attempt power cycle
[19876.668040] usb usb3-port6: Cannot enable. Maybe the USB cable is bad?
[19877.636052] usb usb3-port6: Cannot enable. Maybe the USB cable is bad?
[19877.636127] usb usb3-port6: unable to enumerate USB device
USB 장치를 분리했다가 다시 연결합니다. 이번에는 장치가 출력에 나타나고 lsusb
VID dmesg
/PID도 보고됩니다.
[20158.004079] usb 3-6: new high-speed USB device number 18 using xhci_hcd
[20158.152321] usb 3-6: New USB device found, idVendor=03fd, idProduct=0008
[20158.152324] usb 3-6: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[20158.152327] usb 3-6: Product: XILINX
[20158.152329] usb 3-6: Manufacturer: XILINX