Linux

hwmon 驅動程序工作,但不工作

  • July 24, 2021

試圖讓 hwmon 在帶有華擎 Z370M 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 註冊,我該怎麼做?

請注意,韌體設置能夠很好地獲取感測器讀數,所以我知道硬體可以正常工作。

編輯:

Distro 是 Gentoo,帶有 Linux 版本 5.13.2,具有自定義配置。這是目前配置

好吧,事實證明我所要做的就是用force=1. 我排除了這種可能性,因為它應該是針對“未知供應商”的,而華擎是已知供應商之一。另外,它似乎可以辨識晶片。但是閱讀原始碼,我不得不得出結論,這個沒有它知道的華擎客戶 ID。

如果有人對此有所了解(儘管此時與核心人員交談會更好),現在核心日誌中還有一行:

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

我還發現客戶 ID 是0xe1b(必須調整程式碼以將其寫入日誌)。與公認的華擎 (0xe2c) 相距不遠,但也許這只是巧合。

看起來 NCT6683 晶片包含不同 OEM 的“客戶 ID”,華擎最近被分配了自己的 ID。

2021 年 1 月送出的這個更新檔可能是必要的。它似乎包含在來自 Linus 的目前 5.12.x 和更新的核心中,但沒有包含在 5.10.50 中,這是撰寫本文時最新的長期支持的核心版本。

如果實際晶片版本是NCT6686D則還需要另一個更新的更新檔:這是在 2021 年 3 月上旬開發的。NCT6686D 具有相同的感測器集,並且訪問方式顯然與 NCT6683D 完全相同,但具有不同的晶片ID。

除非您使用的發行版使用非常新的核心版本,否則nct6683您目前核心中的驅動程序可能太舊而無法包含這些更新檔。

引用自:https://unix.stackexchange.com/questions/658665