hwmon 驱动程序正在工作,但不工作

hwmon 驱动程序正在工作,但不工作

尝试让 hwmon 在具有 ASRock Z3​​70M Pro4 的系统上更充分地工作。 coretemp 和drivetemp 驱动程序似乎没问题。不过,该主板还具有 Nuvoton NCT6683 芯片,用于通常的电压、风扇速度和温度监控。这就是sensors-detect出现的结果,当模块加载时,它看起来(有点)成功:

[    3.520633] nct6683: Forcibly enabling EC access. Data may be unusable.
[    3.521769] nct6683: Found NCT6683D or compatible chip at 0x2e:0xa10

但是,它没有显示为传感器设备,原因似乎是它没有在 hwmon 中注册:

$ ls -l /sys/class/hwmon
total 0
lrwxrwxrwx 1 root root 0 Jul 12 07:19 hwmon0 -> ../../devices/platform/coretemp.0/hwmon/hwmon0
lrwxrwxrwx 1 root root 0 Jul 12 07:19 hwmon1 -> ../../devices/pci0000:00/0000:00:17.0/ata1/host0/target0:0:0/0:0:0:0/hwmon/hwmon1
lrwxrwxrwx 1 root root 0 Jul 12 07:19 hwmon2 -> ../../devices/pci0000:00/0000:00:17.0/ata2/host1/target1:0:0/1:0:0:0/hwmon/hwmon2
lrwxrwxrwx 1 root root 0 Jul 12 07:19 hwmon3 -> ../../devices/pci0000:00/0000:00:17.0/ata3/host2/target2:0:0/2:0:0:0/hwmon/hwmon3
lrwxrwxrwx 1 root root 0 Jul 12 07:19 hwmon4 -> ../../devices/pci0000:00/0000:00:17.0/ata4/host3/target3:0:0/3:0:0:0/hwmon/hwmon4

但为什么?我可能在某个地方错误配置了内核吗?如果我需要调试 hwmon 注册,我该怎么做?

请注意,固件设置能够很好地获取传感器读数,因此我知道硬件可以正常工作。

编辑:

发行版是 Gentoo,Linux 版本为 5.13.2,具有自定义配置。这是当前的配置

答案1

看起来NCT6683芯片包含了不同OEM厂商的“客户ID”,华擎最近也被分配了自己的ID。

2021 年 1 月提交的这个补丁可能是必要的。它似乎包含在 Linus 当前的 5.12.x 和更新内核中,但不包含在 5.10.50 中,5.10.50 是撰写本文时最新的长期支持的内核版本。

如果实际的芯片版本是NCT6686D,还需要另一个更新的补丁:该产品于 2021 年 3 月上旬开发。NCT6686D 具有相同的传感器组,并且显然与 NCT6683D 的访问方式完全相同,但芯片 ID 不同。

除非您使用的发行版使用非常新的内核版本,否则当前内核中的驱动程序可能nct6683太旧,无法包含这些补丁。

答案2

好吧,事实证明我所要做的就是加载模块force=1。我拒绝了这种可能性,因为它应该是针对“未知供应商”的,而华擎是已知供应商之一。另外,它似乎能够识别该芯片。但阅读源代码后,我不得不得出结论,这个代码不知道华擎的客户 ID。

如果有人对此有所了解(尽管此时与内核人员交谈可能会更好),内核日志中现在有一行附加内容:

[406090.428581] nct6683 nct6683.2576: NCT6683D EC firmware version 1.0 build 07/18/16

我还发现客户 ID 是0xe1b(必须调整代码才能将其写入日志中)。与公认的华擎 (0xe2c) 相差不远,但也许这只是巧合。

相关内容