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になります。