私はドライバーを知っているUSBハードウェアを持っています。ただし、ベンダーIDと製品IDが、ドライバーに登録されているVIDとPIDのペアと一致しません。 Linuxで、ドライバーを既知のデバイスに強制的に関連付ける方法はありますか?これには、PID/VIDペアを追加するためのカーネルモジュールの再コンパイルは含まれませんか?
Sysfsツリーでモジュールを見つけます。この場合、
/sys/bus/usb-serial/drivers/cp2101
このディレクトリには、次のようにVIDPIDペアを動的に追加するために使用できるnew_id
ファイルエントリがあります。
echo VID PID >new_id
ここに LWNエントリ この機能について
実際にカーネル全体を再コンパイルする必要はありません。 this 回答がカーネルで機能しない場合は、更新された一致テーブルを使用して関連するカーネルモジュールのみを再コンパイルするだけで十分です。
この変更を永続的にし、特定のドライバーをデバイス(VID、PID)に割り当てたい場合は、 this 回答が役立つことがあります。
たとえば、次の内容で新しいfile _/etc/udev/rules.d/98-joystick.rules
_を作成します。
ACTION == "add"、ATTRS {idVendor} == "1345"、ATTRS {idProduct} == "6005"、RUN + = "/ sbin/modprobe xpad" RUN + = "/ bin/sh -c'echo 1345 6005>/sys/bus/usb/drivers/xpad/new_id '"
_1345
_をVIDに、_6005
_をPIDに置き換えます。
xpad
を適切なドライバーに置き換えます。
次のコマンドを実行します。
$ Sudoudevadmコントロール--reload
デバイスのプラグを抜き差しして、新しいドライバーがロードされているかどうかを確認します。
ここに示す例は、Speedlink Strike FX Gamepad (SL-6537-BK)
に関するドライバーの問題を修正するためのものです。