lsusbなしでUSBデバイスツリーをインポートする

lsusbなしでUSBデバイスツリーをインポートする

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

関連情報