Archlinux風扇設置


在筆記本(ThinkPad T440)連續兩天因過熱而死機后, 對內核的風扇控制算法果斷失去信心.

風扇的用戶層控制接口是 /proc/acpi/ibm/fan, 但為防止用戶控制不當燒壞機器, 默認情況下並沒有對用戶開放控制權. 這個由內核模塊 thinkpad_acpi 控制, 可在加載該內核模塊時傳遞參數 fan_control=1 打開風扇控制開關. 如果安裝了 thinkfan 的話, 它包含文件 /usr/lib/modprobe.d/thinkpad_acpi.conf, 其文件內容為:

options thinkpad_acpi fan_control=1

這樣以后在開啟啟動加載 thinkpad_acpi 模塊時會自動傳遞參數 fan_control=1 以便打開用戶層控制開關.

然后就可以向 /proc/acpi/ibm/fan 寫如特定數據控制風扇了, 比如說:

  • echo enable/disable > /proc/acpi/ibm/fan: 啟用/禁用風扇;
  • echo level 1-7 > /proc/acpi/ibm/fan: 設置風扇轉速為 1-7 級, 等級越高轉速越大;
  • echo level auto > /proc/acpi/ibm/fan: 由內核模塊控制風扇轉速(這就是默認配置, 燒死機了...);
  • echo level full-speed/disengaged > /proc/acpi/ibm/fan: 風扇啟動最大轉速(要的就是這種情況~~~);

注: /proc/acpi/ibm/fan 還支持其他很多控制參數, 詳情可查閱 thinkpad_acpi 模塊文檔.

上面提到的 thinkfan 就是一個通過傳感器檢測硬件溫度來實現自動控制風扇轉速的工具. 它的配置文件是 /etc/thinkfan.conf, 支持兩種格式:

  1. 簡單模式;
  2. 復雜模式.

1. 簡單模式:

# 配置傳感器
hwmon /sys/devices/virtual/thermal/thermal_zone0/temp

# 配置風扇控制接口(默認是: /proc/acpi/ibm/fan)
tp_fan /proc/acpi/ibm/fan

# 配置風扇等級與溫度之間的關系
(0,     0,      55)
(1,     48,     60)
(2,     50,     61)
(3,     52,     63)
(4,     56,     65)
(5,     59,     66)
(7,     63,     32767)

配置風扇等級與溫度之間的關系時, 每一行分三列, 第一列是風扇轉速等級, 第二列和第三列是啟用當前等級的最低和最高溫度. 注意每一級的最低和最高溫度與上一級的最高溫度和下一級的最低溫度都有重合. 當配置有多個傳感器時, 取值最大(溫度最高)的一個.

這種模式配置簡單, 但只支持配置 1-7 等級的轉速, 不能配置 auto/full-speed.

2. 復雜模式:

復雜模式就要復雜一點, 它支持配置多個傳感器, 支持為每個傳感器設置溫度閾值. 最重要的是, 它支持 auto/full-speed.

為了省電和降溫, 就配置了兩條溫度規則:

# 配置傳感器
hwmon /sys/devices/virtual/thermal/thermal_zone0/temp

# 配置風扇控制接口(默認是: /proc/acpi/ibm/fan)
tp_fan /proc/acpi/ibm/fan

{ "level auto"
        (0)
        (55)
}

{ "level disengaged"
        (50)
        (100)
}

配置 OK 后重啟 thinkfan 服務使之生效.


我最開始用的是 簡單模式, 在最初幾天相安無事, 但后來又發生了過熱死機的問題, 於是切換到 復雜模式 的配置, 就靠上面兩條規則達到低溫省電高溫全速轉起來的效果~~~

參考鏈接:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM