我正试图为USB WiFi适配器找到一个合适的驱动程序,该驱动程序由lsusb报告为
0bda:a811 Realtek Semiconductor Corp.在WikiDevi上,它被称为"Realtek RTL8811AU无线802.11ac1x1USB2.0“。
有多个存储库似乎为RTL8811AU提供了驱动程序,例如这 one (它基于声称支持rtl8811AU的这 one )。但是,在尝试将其安装到内核之前,我想检查编译后的模块是否支持该设备(我试图处理的是其他人的系统)。
通过在线搜索,我得出的结论是,驱动程序模块的modinfo命令的输出应该返回同类行。
alias: usb:v0BDApA811d*dc*dsc*dp*ic*isc*ip*in*它将包含正确的供应商ID (0BDA)和正确的产品ID (A811)。
这种检查驱动程序与设备兼容性的方法是否可靠?内核就是这样选择驱动程序的吗?
供应商和设备Is是否需要完全匹配?例如,我首先尝试使用rtl8812au-dkms (在Ubuntu上)安装apt-get包。然而,modinfo 8812au | grep A811的输出是
alias: usb:v7392pA811d*dc*dsc*dp*ic*isc*ip*in*-设备ID正常,但供应商ID不匹配。这是否意味着这个驱动程序不能使用这个设备?
发布于 2018-02-17 18:28:56
此方法是可靠的,这就是内核(或udev和kmod)如何选择要加载的模块:当一个新设备出现时(包括在启动时,所有设备都被探测到),它将查找一个具有与设备描述符匹配的modalias的模块。
如果modinfo列出了与您的设备匹配的模块的别名,那么这意味着该模块声称支持该设备。在您的示例中,该模块支持匹配7392:A 811的设备(以及可能与您的grep不匹配的其他设备),但不支持您的设备,因此rtl8812au-dkms似乎没有多大帮助(至少在当前状态下是这样).Linux注册表目前处于脱机状态,因此我无法进一步检查。注意,别名是过滤的第一层,不能绝对保证支持--模块在初始化时使用自己的探测函数,并且可以使用其他信息。有关更多详细信息,请参见这个问题;有关别名中所有功能的信息,请参见内核文档。
(标识符的相似性确实表明驱动程序也可以支持您的设备,因此您可以尝试将ids添加到模块以查看发生了什么。)
https://unix.stackexchange.com/questions/424839
复制相似问题