特定のドライバカーネルモジュールが特定のデバイスをサポートしているかどうかを確認する方法は?

特定のドライバカーネルモジュールが特定のデバイスをサポートしているかどうかを確認する方法は?

lsusb報告しているUSB WiFiアダプタに適したドライバを見つけようとします。

0bda:a811 Realtek Semiconductor Corp.

存在するウィキペディアこれは説明する「Realtek RTL8811AUワイヤレス802.11ac 1x1 USB 2.0」です。

RTL8811AU用のドライバを提供すると思われる複数のリポジトリがあります。これa(それに基づいてこれrtl8811AUをサポートすると主張する)。しかし、カーネルにデバイスをインストールする前に、コンパイルされたモジュールがデバイスをサポートしていることを確認したいと思います(これは私が混乱させようとしている他の人のシステムです)。

modinfoオンライン検索では、ドライバモジュールのコマンド出力が次の行を返すだけで十分であるという結論に達しました。

alias:          usb:v0BDApA811d*dc*dsc*dp*ic*isc*ip*in*

これには、正しいベンダーID(0BDA)と正しい製品ID(A811)が含まれます。

ドライバとデバイスの互換性を確認するこの方法はどのくらい安定していますか?これはカーネルがドライバを選択する方法ですか?

ベンダーIDとデバイスIDは正確に一致する必要がありますか?たとえば、まず(on Ubuntu)を使用してパッケージをインストールしようとしましたrtl8812au-dkmsapt-getしかし、出力modinfo 8812au | grep A811

alias:          usb:v7392pA811d*dc*dsc*dp*ic*isc*ip*in*

- デバイスIDは正しいですが、ベンダーIDは一致しません。これは、ドライバがデバイスに適していないという意味ですか?

答え1

このアプローチは信頼できます。これは、カーネル(またはudevおよびkmod)がロードするモジュールを選択する方法です。新しいデバイスが表示されたら(起動時に含め、すべてのデバイスが検出されたときを含む)、デバイス記述子と一致するモジュールを見つけますmodalias

modinfoデバイスと一致するモジュールのエイリアスがリストされている場合、モジュールはそのデバイスをサポートすると主張することを意味します。あなたの場合、モジュールは7392:A811(およびあなたと一致しない他のデバイス)と一致するデバイスをサポートしていますが、あなたのデバイスはサポートしていないので(少なくとも現在の状態では)あまり役に立たないと思いますgrep...rtl8812au-dkmsLinux USBレジストリ現在はオフラインになっているため、もう確認できません。エイリアシングはフィルタリングの最初のレベルであり、サポートは絶対に保証されません。モジュールは初期化時に独自のプローブ機能を使用し、これらの機能は追加情報を使用できます。バラよりこの問題詳しくはこちらをご覧くださいカーネル文書エイリアスに表示できるすべての情報。

(識別子の類似性は、ドライバがあなたのデバイスもサポートできることを示唆しているので、モジュールにIDを追加し、何が起こるかを確認できます。)

関連情報