USB 장치가 있고 해당 장치의 상위 장치가 무엇인지, 즉 어떤 허브에 연결되어 있는지 확인하고 싶습니다. 그 이유는 절전 모드 관련 문제를 디버깅하고 있기 때문입니다. 그러나 이것은 임베디드 플랫폼(Android)에 있고 내 lsusb 구현은 toybox에서 제공되므로 이를 사용하여 트리를 표시할 수 없습니다. lsusb를 크로스 컴파일하지 않고 이 정보를 어떻게 찾을 수 있나요?
예를 들어, /sys/bus/usb/devices/3-1/...을 보려고 하는데, 어떤 /sys/bus/usb/devices/usb를 찾으려고 합니까? 연결된(내부) 허브에 해당합니다.
답변1
장치 트리에서 숫자 인코딩을 반환합니다. 예를 들어, 내 웹캠은 /sys/bus/usb/devices/3-1.1.2
버스 3에 있습니다. 이는 버스 3에 있고, 버스 루트 허브의 포트 1, 루트 허브 아래 허브의 포트 1, 그리고 다른 허브의 포트 1에 있는 마지막 허브에 있음을 의미합니다.
또는 다음을 사용하여 lsusb -t
:
$ lsusb -t
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
|__ Port 1: Dev 102, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 2: Dev 103, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 2: Dev 103, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 2: Dev 103, If 3, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 2: Dev 103, If 1, Class=Video, Driver=uvcvideo, 480M
따라서 3-1
버스 3 루트 허브의 포트 1에 있게 됩니다.