1

USBデバイスのデバイスノード(例:/ dev / sdb)を取得しようとしています。

USBデバイスが関連付けられている特定のデバイスノードを提供するlibusbAPIがあるかどうか疑問に思いました。

APIがない場合、これを実現する他の代替手段はありますか?これに関する洞察は本当に役に立ちます。

前もって感謝します。

4

1 に答える 1

2

Linux では、接続された USB デバイスとそのプロパティを調べる最も簡単な方法は、単純にディレクトリをスキャンすることです/sys/bus/usb/devices。この仮想ディレクトリには、接続されているすべてのデバイスが一覧表示されます。各エントリの構造は非常に単純で、スレーブが接続されているすべてのデバイス (ハブ経由で接続されているデバイスなど) には、仮想サブディレクトリがあります。一般に、製造元やシリアル番号などの多くのデバイス プロパティを読み取るために root になる必要がないことも素晴らしいことです。

このインターフェイスのもう 1 つの非常に優れた特性は、半安定であることです。つまり、すべてのデバイスにはa-b.c.d.e:x.y(a - バス番号、b、c - ルート ハブ、次のハブ、ポートなど、x、y - 関数、サブ関数) のような一意の ID があり、このデバイスの列挙が突然シフトすることはありません。 1 つのデバイスが接続または切断されている場合、すべてのデバイスに対して。

これらのデバイス ID を libusb スタイルのバス/デバイス番号に簡単にマップすることもできます (ただし、これらは安定していません)。

残念ながら、これは Linux 固有のものであり、他のオペレーティング システムでは利用できないようです。libusb にこのような実装があればよかったのですが、そうではありません。とにかく、頑張ってください!

于 2012-10-30T05:01:11.460 に答える