USBデバイスのデバイスノード(例:/ dev / sdb)を取得しようとしています。
USBデバイスが関連付けられている特定のデバイスノードを提供するlibusbAPIがあるかどうか疑問に思いました。
APIがない場合、これを実現する他の代替手段はありますか?これに関する洞察は本当に役に立ちます。
前もって感謝します。
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 にこのような実装があればよかったのですが、そうではありません。とにかく、頑張ってください!