![华硕 FX503 笔记本电脑上无法加载华硕笔记本电脑模块(没有此类设备)](https://linux22.com/image/136528/%E5%8D%8E%E7%A1%95%20FX503%20%E7%AC%94%E8%AE%B0%E6%9C%AC%E7%94%B5%E8%84%91%E4%B8%8A%E6%97%A0%E6%B3%95%E5%8A%A0%E8%BD%BD%E5%8D%8E%E7%A1%95%E7%AC%94%E8%AE%B0%E6%9C%AC%E7%94%B5%E8%84%91%E6%A8%A1%E5%9D%97%EF%BC%88%E6%B2%A1%E6%9C%89%E6%AD%A4%E7%B1%BB%E8%AE%BE%E5%A4%87%EF%BC%89.png)
我正在跟踪 4.17.1 的华硕笔记本电脑驱动程序,因为我的键盘背光控制键不起作用。而且,我发现驱动程序无法加载,总是报“No such device”。然后我发现这是因为acpi驱动的add()方法(asus_acpi_add)从未进入。至少一些以前的内核版本如4.4.14也有同样的问题,我还没有找到工作版本。
有人有线索吗?谢谢。 -木质
答案1
加载模块后,如果固件指示系统包含 PNP ID 为或 的设备,asus_acpi_add
则 ACPI 子系统应调用该函数。这是由以 的地址作为参数的模块初始化调用来安排的。该结构包括该驱动程序识别的 PNP/ACPI ID 表作为其元素。ATK0100
ATK0101
acpi_bus_register_driver
static struct acpi_driver asus_acpi_driver
.ids
因此,首先要检查的是,您的系统是否有 ATK0100 或 ATK0101 设备 ID。
请运行:
cat /sys/bus/pnp/devices/*/id
结果应该是 PNP ID 列表,每行一个。如果列表不包含ATK0100
nor ATK0101
,那么该模块未加载的一个充分理由是:ACPI 固件未声明具有该模块将使用的接口。
在您关于 Stack Overflow 的其他问题中,您提到该asus_wmi
模块确实会在您的笔记本电脑上自动检测到。该模块访问的WMI接口似乎有很多杂项功能,包括键盘背光控制。硬件支持的功能显然是由SFUN值指示的;然而,开发人员只知道 SFUN 值的少数位的含义asus_wmi
。
因此,asus-nb-wmi.c
源代码文件中包含了华硕笔记本型号的列表以及每个型号的控制键驱动程序的具体设置。看来 FX503 尚未列出;如果您可以编译自己的内核,您可以尝试将您的笔记本型号添加到列表中,并测试其他具有类似功能的华硕笔记本型号的怪异值;如果运气好并坚持不懈,如果硬件/固件实现没有太大不同,您可能会找到可行的设置。
如果您成功做到这一点,请将您的结果报告给asus_wmi
驱动程序的作者:这样您的工作也将使与您具有相同型号的其他人受益。您的名字还将被添加到 Linux 内核贡献者的长名单中。
您可能还想向该驱动程序的开发人员发送电子邮件以寻求建议:如果您愿意付出努力,他/她可能可以建议更具体的尝试。