[文件]如何在2.6核心中使用硬體監測

Moderator: Forums Team

Post Reply
User avatar
Hydonsingore
Posts: 193
Joined: Wed Jun 09, 2004 10:49 pm
Location: Taiwan
Contact:

[文件]如何在2.6核心中使用硬體監測

Post by Hydonsingore »

這是一篇翻譯,原文是由Master_Of_Disaster所撰寫的How to use your hardware sensors with Kernel 2.6,您可以在http://forums.gentoo.org/viewtopic.php?t=101573看到原文最新的版本。

最後更新 26. 7. 2004

本文件也可以在 http://gentoo-wiki.com/HARDWARE_Sensors 找到。

警告 (請先看這裡)
  • 這些只適用於 Shuttle XPC 的使用者:
    核心(2.6.2-rc2-mm1)中的 it87 模組還沒搞定 reset_it87 開關的功能 (這表示:如果您載入這個模組,您的風扇將會以全速運轉。
    我針對這個問題寫了一個修補檔,在 http://nopaste.php-q.net/49089 可以找到。
    *更新*此風扇問題在2.6.5-rc2-mm4中已經解決, it87.c 有一個參數 reset 來進行這件事。
    此外,在 procfs 中能夠控制您風扇的方式尚未移植到 sysfs...
    如果有哪個人知道如何解決這個問題,我非常想知道....(因為我自己就有一個)
  • 不要同時載入 i2c_viapro 和 VIA686A !!!! 這兩個會打架,然後都沒作用。(感謝 Kow 幫忙加入這條)
警告結束

1. 簡介

許多東西已經整合在新的核心源碼中,其中一項就是 lm_sensors 。這由兩個部份所組成,核心模組和用戶空間的應用程式。它讓您能夠從您主機板上的溫度感測器中讀取溫度、得知並設定風扇轉速、得知並設定溫度警示等等。
在您開始使用這份導覽文件之前,請注意並不是所有的核心模組都已經被轉移或放到核心源碼中了。要獲取更多關於 lm_sensors 由2.4核心轉移到2.6核心的資訊以及被支援的硬體及其驅動程式,請參照 這裡這裡這裡


2. 快速且骯髒的指南
  • 確定您已經讀了這頁,弄出 lm_sensors 的那些人在這一頁告訴您偵測不到您的晶片組時要怎麼辦、您的硬體所需的特殊參數、以及最重要的:您的硬體是否被 2.6.x所支援!
  • 建立 /sys

    Code: Select all

    mkdir /sys
  • 移除廢棄的套件

    Code: Select all

    emerge -C i2c gkrellm-sensors lm-sensors
    I2C已經被整合到核心源碼中,gkrellm-sensors已經廢棄,gkrellm不需要它就可以運作良好。
  • 取得閃亮的新核心源碼

    Code: Select all

    emerge development-sources 或 emerge mm-sources 或 emerge gentoo-dev-sources
    我建議使用 mm-sources,因為比較新的源碼快照通常會被放在這份核心源碼中。
  • 將 /usr/src/linux指向您新的核心源碼位置
  • 將 I2C 編成模組並依您的硬體選擇適當的模組

    Code: Select all

    Device Drivers --->
     I2C support  --->
        <M> I2C support
        <M> I2C device interface
     I2C Hardware Bus support  --->
        <M> Choose the appropriate module for your hardware here
     I2C Hardware Sensors Chip support  --->
        <M> Choose the appropriate module for your sensors here
  • 編譯您的核心

    Code: Select all

    make && make modules_install
    並將編好的核心放到 /boot 中
  • 重新開機
  • 取得 lm_sensors 使用者所需的應用程式

    Code: Select all

    emerge =lm-sensors-2.8.4
    您可能需要將其 unmask ,也許會有更新的版本。
  • 重新安裝 gkrellm 以便使其讀取您的感測器資料。
    載入之。打開 properties 並尋找內建的 "sensors" 項目。您應該可以找到您所有的感測器。
3. 問題解決

如果一切正常,您應該會看到像是下面這種情形:

Code: Select all

fuero@bmfh fuero $ sensors
it87-isa-0290
Adapter: ISA adapter
Algorithm: ISA algorithm
ERROR: Can't get alarm data!
VCore 1:   +1.48 V  (min =  +1.53 V, max =  +1.87 V)
VCore 2:   +1.47 V  (min =  +2.25 V, max =  +2.75 V)
+3.3V:     +6.64 V  (min =  +2.96 V, max =  +3.60 V)
+5V:       +4.86 V  (min =  +4.50 V, max =  +5.48 V)
+12V:     +11.84 V  (min = +11.36 V, max = +13.80 V)
-12V:     -20.38 V  (min = -15.86 V, max = -13.40 V)
-5V:       -2.38 V  (min = -10.13 V, max =  -9.44 V)
Stdby:     +4.77 V  (min =  +4.50 V, max =  +5.48 V)
VBat:      +4.08 V
fan1:     3770 RPM  (min = 3000 RPM, div = 2)
fan2:        0 RPM  (min = 3000 RPM, div = 2)
fan3:        0 RPM  (min = 3000 RPM, div = 2)
M/B Temp:    +54°C  (low  =   +20°C, high =   +60°C)   sensor = thermistor
CPU Temp:    -22°C  (low  =   +20°C, high =   +60°C)   sensor = invalid
Temp3:       +40°C  (low  =   +20°C, high =   +60°C)   sensor = thermistor

fuero@bmfh fuero $ ls /sys/bus/i2c/devices/
0-0290

fuero@bmfh fuero $ ls /sys/bus/i2c/devices/0-0290/
alarms        fan_div1      fan_min1      in_input3     in_input7     in_max3       in_max7       in_min3       in_min7       pwm1          sensor2       temp_max2
beep_enable   fan_div2      fan_min2      in_input4     in_input8     in_max4       in_max8       in_min4       in_min8       pwm2          temp_input1   temp_min1
beep_mask     fan_input1    in_input0     in_input5     in_max0       in_max5       in_min0       in_min5       name          pwm_enable2   temp_input2   temp_min2
detach_state  fan_input2    in_input2     in_input6     in_max2       in_max6       in_min2       in_min6       power         sensor1       temp_max1
如果您無法看到這些東西,表示載入的模組是錯的。請嘗試將他們全部啟動然後執行 sensors-detect 。
  • "我的感測器沒有出現!"、"我的感測器沒被偵測到!",請問該怎麼辦?
    RTFM 這裡這裡這裡,並檢視錯誤回報。如果這些都幫不了你,我恐怕也是愛莫能助...您可以試驗模組和其參數(這些本來是 sensors-detect 應該為你作的),或是向 lm_sensors 那些人提出錯誤報告。
  • "我的感測器顯示的溫度老是多出10度!"、"我的感測資訊應該要除以二!",請問該怎麼辦?
    如果您安裝了 lm_sensors 且想由指令'sesnors'看到正確的輸出,請編輯 /etc/sensors.conf 並依您的需要調整。
    如果您使用 gkrellm 時發生問題,您可以在'Properties'視窗中的'Offset'和'Factor'輸入框中輸入數值來解決之。
  • sensors-detect 蹦出"No i2c device files found. Use prog/mkdev/mkdev.sh to create them"!該怎麼辦?

    Code: Select all

    modprobe i2c-dev ; sensors-detect
  • sensors-detect 沒辦法找到某些模組! / 為什麼這些模組會消失呢?
    請確定在您設定核心時啟動了相關的選項,還有記得讀 1.!
祝你好運!
Post Reply