Linux HP WMI 感測器驅動¶
- 版權:
© 2023 James Seo <james@equiv.tech>
描述¶
惠普 (以及一些 HP Compaq) 商用級計算機透過 Windows Management Instrumentation (WMI) 報告硬體監控資訊。 此驅動程式將該資訊公開給 Linux hwmon 子系統,允許諸如 sensors 之類的使用者空間實用程式收集數字感測器讀數。
sysfs 介面¶
載入驅動程式後,它會發現系統上可用的感測器,並在 /sys/class/hwmon/hwmon[X] 中根據需要建立以下 sysfs 屬性
([X] 是取決於其他系統元件的某個數字。)
名稱 |
許可權 |
描述 |
|---|---|---|
|
RO |
電流,單位為毫安 (mA)。 |
|
RO |
電流感測器標籤。 |
|
RO |
風扇轉速,單位為 RPM。 |
|
RO |
風扇感測器標籤。 |
|
RO |
風扇感測器故障指示器。 |
|
RO |
風扇感測器警報指示器。 |
|
RO |
電壓,單位為毫伏 (mV)。 |
|
RO |
電壓感測器標籤。 |
|
RO |
溫度,單位為千分之一攝氏度 (m°C)。 |
|
RO |
溫度感測器標籤。 |
|
RO |
溫度感測器故障指示器。 |
|
RO |
溫度感測器警報指示器。 |
|
RW |
機箱入侵警報指示器。 |
fault屬性將
1而不是0讀取為感測器的fault屬性表示它在執行期間遇到了一些問題,因此不應信任來自它的測量結果。 如果具有故障狀況的感測器稍後恢復,則讀取此屬性將再次返回0。alarm屬性將
1而不是0讀取為感測器的alarm屬性表示已發生以下情況之一,具體取決於其型別fan: 風扇已停止或在執行時已斷開連線。temp: 感測器讀數已達到臨界閾值。 確切的閾值取決於系統。intrusion: 系統的機箱已開啟。
從
alarm屬性讀取1後,該屬性會自行重置,並在後續讀取時返回0。 作為一個例外,intrusion[X]_alarm只能透過手動寫入0來重置。
debugfs 介面¶
警告
debugfs 介面可能會在沒有通知的情況下更改,並且僅在編譯核心時定義了 CONFIG_DEBUG_FS 時才可用。
sysfs 中的標準 hwmon 介面公開了在驅動程式初始化時連線的幾種常見型別的感測器。 但是,WMI 中通常還有其他感測器不符合這些標準。 此外,可能存在許多用於 alarm 屬性的特定於系統的“平臺事件物件”。 因此,提供了一個 debugfs 介面,用於對所有可用的 HP WMI 感測器和平臺事件物件進行只讀訪問。
/sys/kernel/debug/hp-wmi-sensors-[X]/sensor 包含每個感測器的一個編號條目,具有以下屬性
名稱 |
示例 |
|---|---|
|
|
|
|
|
|
|
(一個空字串) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
如果平臺事件物件可用,則 /sys/kernel/debug/hp-wmi-sensors-[X]/platform_events 包含每個物件的一個編號條目,具有以下屬性
名稱 |
示例 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
這些代表底層 HPBIOS_BIOSNumericSensor 和 HPBIOS_PlatformEvents WMI 物件的屬性,這些屬性在不同系統之間有所不同。 有關更多詳細資訊和託管物件格式 (MOF) 定義,請參見 [1]。
已知問題和限制¶
如果已載入用於非商用 HP 系統的現有 hp-wmi 驅動程式,即使在支援它們的系統上,
alarm屬性也將不可用。 這是因為此驅動程式用於alarm屬性的相同 WMI 事件 GUID 用於這些系統上,例如,用於筆記型電腦熱鍵。已經觀察到可疑的感測器硬體和不一致的 BIOS WMI 實現會導致不準確的讀數和奇怪的行為,例如警報無法發生或每次啟動僅發生一次。
到目前為止,僅在實際應用中看到溫度、風扇速度和入侵感測器型別。 因此,對電壓和電流感測器的支援是暫定的。
儘管 HP WMI 感測器可能聲稱是任何型別,但 hwmon 未知的任何奇怪的感測器型別將不受支援。