首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查给定的驱动程序内核模块是否支持给定的设备?

如何检查给定的驱动程序内核模块是否支持给定的设备?
EN

Unix & Linux用户
提问于 2018-02-17 18:06:54
回答 1查看 2.6K关注 0票数 1

我正试图为USB WiFi适配器找到一个合适的驱动程序,该驱动程序由lsusb报告为

代码语言:javascript
复制
0bda:a811 Realtek Semiconductor Corp.

WikiDevi上,它被称为"Realtek RTL8811AU无线802.11ac1x1USB2.0“。

有多个存储库似乎为RTL8811AU提供了驱动程序,例如 one (它基于声称支持rtl8811AU的 one )。但是,在尝试将其安装到内核之前,我想检查编译后的模块是否支持该设备(我试图处理的是其他人的系统)。

通过在线搜索,我得出的结论是,驱动程序模块的modinfo命令的输出应该返回同类行。

代码语言:javascript
复制
alias:          usb:v0BDApA811d*dc*dsc*dp*ic*isc*ip*in*

它将包含正确的供应商ID (0BDA)和正确的产品ID (A811)。

这种检查驱动程序与设备兼容性的方法是否可靠?内核就是这样选择驱动程序的吗?

供应商和设备Is是否需要完全匹配?例如,我首先尝试使用rtl8812au-dkms (在Ubuntu上)安装apt-get包。然而,modinfo 8812au | grep A811的输出是

代码语言:javascript
复制
alias:          usb:v7392pA811d*dc*dsc*dp*ic*isc*ip*in*

-设备ID正常,但供应商ID不匹配。这是否意味着这个驱动程序不能使用这个设备?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-02-17 18:28:56

此方法是可靠的,这就是内核(或udevkmod)如何选择要加载的模块:当一个新设备出现时(包括在启动时,所有设备都被探测到),它将查找一个具有与设备描述符匹配的modalias的模块。

如果modinfo列出了与您的设备匹配的模块的别名,那么这意味着该模块声称支持该设备。在您的示例中,该模块支持匹配7392:A 811的设备(以及可能与您的grep不匹配的其他设备),但不支持您的设备,因此rtl8812au-dkms似乎没有多大帮助(至少在当前状态下是这样).Linux注册表目前处于脱机状态,因此我无法进一步检查。注意,别名是过滤的第一层,不能绝对保证支持--模块在初始化时使用自己的探测函数,并且可以使用其他信息。有关更多详细信息,请参见这个问题;有关别名中所有功能的信息,请参见内核文档

(标识符的相似性确实表明驱动程序也可以支持您的设备,因此您可以尝试将ids添加到模块以查看发生了什么。)

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/424839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档