libudev
システムがUSBデバイス接続を検出するプログラムを作成しています。各デバイスがどのタイプに接続されているかを知りたいです。 udevがUSBタイプを明確に指定していないと思います。たとえば、接続されているデバイスがプリンタ、ウェブカメラ、またはキーボードであることを知りたいとします。どうすればいいですか?どんなアイデアがありますか?
答え1
USBデバイスの種類は、関連するUSBプロトコルの仕様に従って値が定義され、bDeviceClass
属性を使用して識別されます。bDeviceSubClass
https://www.usb.org/define-class-codesカテゴリコードのリストを取得します。
USBデバイスに複数の機能がある場合は、プロパティを確認して個々の機能を識別する必要がありbInterfaceClass
ますbInterfaceSubClass
。
クラスコードが「ベンダー固有」を意味することが判明した場合は、そのデバイスが何であるかを確認するために実際のデバイスモデル(使用と属性)を0xff
識別する必要があります。idProduct
idVendor
答え2
私の意見では、udevはUSBタイプが何であるかを明確に明らかにしていないようです。
udevは、デフォルトでは、カーネルがUSBデバイスについて知っているすべてを、ベンダー、製品ID、カテゴリなどの属性の形で報告します。例を見てください。これらの例のルール詳細については、USBデバイスのプロパティを確認してください。
キーボード(HID)USBデバイスやカメラなどの作業にはすでにかなりの自動化が行われているため、何を作成しても、既存のudevルールとカーネル操作に準拠していることを確認してください。