この質問は2つあります。
まず、USBデバイスからドライバーを手動でデタッチし、別のデバイスをアタッチするにはどうすればよいですか?たとえば、接続時に自動的にusbストレージドライバーを使用するデバイスがあります。
usbview出力
Vendor Id: xxxx
Product Id: xxxx
...
Number of Interfaces: 2
Interface Number: 0
Name: usb-storage
Number of Endpoints: 2
...
Interface Number: 1
Name: (none)
Number of Endpoints: 2
...
usb-storageドライバーを使用したくないので、アプリケーションでlibusb
ライブラリを使用してusb-storageドライバーをデタッチし、インターフェイスを要求します。その後、USBデバイスとホストLinuxシステムで実行されているアプリケーションとの間でデータを送受信できます。
アプリケーションの外部でドライバーを手動でデタッチするにはどうすればよいですか?
次に、デバイスプラグインにアタッチするドライバーを自動的に割り当てる方法を教えてください。現在、デバイスのアクセス許可を自動的に設定するudevルールがセットアップされています。
SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", MODE="0666"
udevルールを使用して、USBデバイスの特定のインターフェイスにドライバーを割り当てることはできますか?たとえば、usb-storageの代わりにインターフェイス0でusbnetモジュールを自動的に使用する場合、udevで可能ですか?
usbnet
は、それを使用できるハードウェアに関する情報がないため、自動的にロードされません。適切なドライバーを見つけて、たとえばを使用してみてください modinfo kalmia
。ではalias
ラインあなたは、ベンダーID XXXXとプロダクトID YYYYをとして表示されますusb:vxxxxpyyyy
。または、ファイル/lib/modules/kernel_version/modules.usbmapを編集し、HWの行を削除できます。HWモジュールのusb-storageを使用するか、適切なネットドライバーでusbstorageを変更します。しかし、depmod -a
この変更が