/sysのUSBデバイスをDmidecodeの特定のUSBコネクタに接続できますか?

/sysのUSBデバイスをDmidecodeの特定のUSBコネクタに接続できますか?

オンラインで検索した結果、おそらく「いいえ」と答えるようです。しかし、次のようになります。

sysfsでUSBデバイスに対応するUSB​​ポートの説明(dmidecodeに準拠)を見つけることはできますか?

すべてのUSBハブとデバイスを一覧表示して列挙できます/sys/bus/usb/devices。たとえば、

lrwxrwxrwx 1 root root 0 May 18 09:40 1-2 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-2
lrwxrwxrwx 1 root root 0 May 18 09:40 1-2:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0
lrwxrwxrwx 1 root root 0 May 18 09:36 2-0:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb2/2-0:1.0
lrwxrwxrwx 1 root root 0 May 18 09:36 2-3 -> ../../../devices/pci0000:00/0000:00:14.0/usb2/2-3
lrwxrwxrwx 1 root root 0 May 18 09:36 2-3:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.0
lrwxrwxrwx 1 root root 0 May 18 09:36 usb1 -> ../../../devices/pci0000:00/0000:00:14.0/usb1
lrwxrwxrwx 1 root root 0 May 18 09:36 usb2 -> ../../../devices/pci0000:00/0000:00:14.0/usb2

...以下を実行して、システムに組み込まれているすべてのUSBポートを一覧表示できますdmidecode -t connector。たとえば、他の多くのコネクタで次のように表示されます。

Handle 0x000D, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: USB REAR
    Internal Connector Type: Proprietary
    External Reference Designator: Rear: USB-1
    External Connector Type: Access Bus (USB)
    Port Type: USB

[...]

Handle 0x0014, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: USB 3.0 REAR
    Internal Connector Type: Proprietary
    External Reference Designator: Rear: USB 1
    External Connector Type: Access Bus (USB)
    Port Type: USB

(マイコンピュータでは、各USBポートが「USB」と「USB 3.0」として2回表示されるように見えます。)

特定のUSBデバイス(「Rear:USB 1」)に対応するコネクタの説明を表示したいのですが、/sys/bus/USBデバイスをdmidecodeコネクタに接続する安定した方法がないようです。それはそこですか?

(私の特別な場合は、バスの「usb1」をDmidecodeの「USB 1」に関連付けるのは簡単ですが…偶然の一致と言います。)

編集:またはdmidecodeでない場合は、ポートの外部記述を提供できる他のツールです。

ベストアンサー1

出力はdmidecodeSMBIOSデータに基づいています。

この記事を書いた時点で、これはSMBIOS仕様の最新バージョンであるようです。

70ページの下部には、ポートコネクタ情報のデータ構造が記載されています。唯一の意味のある値は、DMI構造ハンドル(単純な16ビット数字)、内部コネクタと外部コネクタタイプの値、それぞれシステム基板とシャーシの外部コネクタ識別子を記述する2つの文字列です。

ハンドル番号だけが特定のコネクタに固有であるため、特定のUSBデバイスをSMBIOS / DMIコネクタ情報に関連付ける識別子として使用できます。しかし、どのコネクタがどのデバイスに属しているかを示すために、この番号を参照するUSB​​ハードウェア側には何もないようです。

usb1また、リストusb2/sys/bus/usb/devices単一のコネクタ以外のコネクタを参照します。USBバス。 USB 3.xシステムには常に少なくとも2つのバスがあります。 1 つは USB 2 以前の速度を処理し、もう 1 つは USB 3+ 速度を処理します。これは、以前の速度が1つのデータラインセットを使用するのに対し、最新のUSB3.x超高速転送モードは別のデータラインセットを使用するという事実を反映しています。各バスには、通常、さまざまな数のUSBコネクタを持つことができる独自のルートハブがあります。

したがって、特定のDMIコネクタ情報構造を特定のUSBポートデバイスにバインドするには、USBハブ記述子に適切なDMI構造ハンドルを指定するデータフィールドが必要です。

あるいは、USBコントローラのPCIデバイス情報には、そのコントローラに属するDMIハンドルのリストを含める必要がありますが、これは特定のポートの一意の識別ではなく、どのUSBポートセットがどのコントローラに属しているかを識別するだけです。

残念ながら、USBまたはPCIバス情報にDMIハンドルまたは同等のポート記述を含むデータフィールドが見つかりません。したがって、答えは「いいえ。現時点では、物理ポート識別子を個々のLinux USBバス/ポートオブジェクトに関連付けることはできません」と思われます。

いくつかの有名ブランドシステム可能実際、この情報を含む一部のベンダー固有のバスデータ拡張がありますが、信頼できる広く採用されている標準的な慣行がない限り、一般的な答えはまだ「いいえ、その情報は利用できません」です。

おすすめ記事