下一页 上一页 目录

3. 主板的传感器

3.1 lm-sensors

获取驱动程序

获取 lm_sensors 2.6.2 或更新版本:http://www.lm-sensors.nu/archive/lm_sensors-2.6.2.tar.gz 你也需要内核源代码来编译它。

安装它们

tar -xzvf i2c-2.6.2.tar.gz

cd i2c-2.6.2

make && make install

然后我在进行安装时遇到了问题,所以如果它不起作用,请执行以下操作

cp kernel/i2c-core.o /lib/modules/`uname -r`/misc/i2c-core.o

cp kernel/i2c-proc.o /lib/modules/`uname -r`/misc/i2c-proc.o

现在让我们复制特定的驱动程序

cp kernel/chips/it87.o /lib/modules/`uname -r`/misc/it87.o

好的,现在

cp prog/sensors/sensors /usr/bin/sensors

--------------------------------------------------------------------

编辑 /etc/modules.conf 并添加以下行

alias char-major-89 i2c-dev
options it87 temp_type=0x31

现在

modprobe i2c-proc

modprobe it87

modprobe i2c-isa

sensors

应该输出一些数据

当它工作时,你可以把它写入到一个文件,该文件将在启动时自动加载。在 SuSE 下,该文件是:/etc/init.d/boot.local (以前是 /sbin/init.d/),你应该 просто 添加:sensors -s 在 Mandrake 下,安装应该已经创建了该文件:/etc/init.d/sensors,你可以自由编辑它,sensord 只是一个守护进程,用于监视温度和风扇速度,我假设没有人会为她/他自己的机器需要这样的东西。

Paolo 报告说,为了在启动时启动 sensord,他将其放在 /etc/sysconfig/sensors 中

MODULE_0=i2c-proc
MODULE_1=it87
MODULE_2=i2c-isa

现在以 root 用户身份,你应该编辑你的 /etc/sensors.conf,搜索这一行:chip "it87-*",在下面你应该能够修改一切以获得正确的数据,这是我在那里的副本:(请注意,temp1 是垃圾,只有 temp2 和 temp3 应该保留)

--------------------------------------------------------------------

3.2 lm-sensors 的 Debian 方式

这次你将被迫编译模块。安装源代码和程序

apt-get install lm-sensors lm-sensors-source

 The upstream lm-sensors maintainers know of a problem using 
 lm-sensors with IBM ThinkPad computers, resulting in 
 firmware corruption.  If you are installing this package on 
 a ThinkPad, you should wait until the upstream maintainers 
 have solved this problem before building modules from it.
 For more information, see 
 /usr/share/doc/lm-sensors-source/README.thinkpad.
 IBM ThinkPad brokenness -- really install lm-sensors?
对这个问题回答 yes,据我所知,你不能在同一个盒子中同时拥有 IBM thinkpad 和 k7s5a!

cd /usr/src

tar xzvf lm-sensors.tar.gz

cd modules/lm-sensors/

make && make install

然后你应该让 modutils 接受一些参数,最好的方法可能是使用一个新文件,例如:/etc/modutils/sensors,内容如下

alias char-major-89 i2c-dev
options it87 temp_type=0x31
运行

update-modules

modprobe i2c-isa it87

你现在可以输入 sensors 来访问信息(请注意,你应该编辑 sensors.conf,否则你会看到奇怪和不准确的东西 :])

你也可以把 i2c-isa 和 it87 放在 /etc/modules 中(每行一个!)以便在启动时自动加载它们,我还不清楚是否可以使用 /etc/modules.conf 进行一些自动加载/删除过程

3.3 K7s5a 的 Sensors.conf

#David Thorarinsson explained me that all the 'set' lines should be after the compute ones,
#this is now fixed,
chip "it87-*"

# The values below have been tested on Asus CUSI, CUM motherboards.
# Voltage monitors as advised in the It8705 data sheet

    label in0 "VCore"
    label in1 "Vcc2.5V"
    label in2 "+3.3V"
    label in3 "+5V"
    label in4 "+12V"
    label in5 "-12V"
    label in6 "-5V"
    label in7 "SB 5V"
    label in8 "V battery"

    # vid not monitored by IT8705F
    ignore  vid

# For this family of chips the negative voltage equation is different from
# the lm78.  The chip uses two external resistor for scaling but one is
# tied to a positive reference voltage.  See ITE8705/12 datasheet (SIS950
# data sheet is wrong)

# Vs = (1 + Rin/Rf) * Vin - (Rin/Rf) * Vref.
# Vref = 4.096 volts, Vin is voltage measured, Vs is actual voltage.

#    compute in2 (1 + 1)*@ ,       @/(1 + 1)
    compute in3 ((6.8/10)+1)*@ ,  @/((6.8/10)+1)
    compute in4 ((30/10) +1)*@  , @/((30/10) +1)

# The next two are negative voltages (-12 and -5).
# The following formulas must be used. Unfortunately the datasheet
# does not give recommendations for Rin, Rf, but we can back into
# them based on a nominal +2V input to the chip, together with a 4.096V Vref.

# Formula:
#    actual V = (Vmeasured * (1 + Rin/Rf)) - (Vref * (Rin/Rf))
#    For -12V input use Rin/Rf = 6.68
#    For -5V input use Rin/Rf = 3.33
# Then you can convert the forumula to a standard form like:

    compute in5 -(36/10)*@, -@/(36/10)
#(7.67 * @) - 27.36  ,  (@ + 27.36) / 7.67
    compute in6 -(56/10)*@, -@/(56/10)
#(4.33 * @) - 13.64  ,  (@ + 13.64) / 4.33
    compute in7 ((6.8/10)+1)*@ ,  @/((6.8/10)+1)

    set in0_min 1.7 * 0.95
    set in0_max 1.7 * 1.05
    set in1_min 2.4
    set in1_max 2.6
    set in2_min 3.3 * 0.95
    set in2_max 3.3 * 1.05
    set in3_min 5.0 * 0.95
    set in3_max 5.0 * 1.05
    set in4_min  12 * 0.95
    set in4_max  12 * 1.05
    set in5_min -12 * 0.95
    set in5_max -12 * 1.05
    set in6_min  -5 * 0.95
    set in6_max  -5 * 1.05
    set in7_min   5 * 0.95
    set in7_max   5 * 1.05

# Temperature

    label temp3       "Processor"
    set   temp3_over  40
    set   temp3_hyst  20
    label temp2       "Mainboard"
    set   temp2_over  45
    set   temp2_hyst  25
    ignore temp1

# Fans

    label fan1"Processor's Fan"
    set fan1_min 2000
    ignore fan3
    ignore fan2
#
#  If you have a system fan, comment 'ignore fan2'
#  and uncomment the following lines :
#  Thanks to gro.reirual@erreip
#
#    label fan2        "System Fan"
#    set   fan2_min    3000
#    set   fan2_div    4

3.4 2.6 内核上的传感器

内核 2.6.1 配置

   # Bus options (PCI, PCMCIA, EISA, MCA, ISA)
   CONFIG_ISA=y
   # I2C support
   CONFIG_I2C=m
   CONFIG_I2C_CHARDEV=m
   # I2C Hardware Bus support
   CONFIG_I2C_ISA=m
   # I2C Hardware Sensors Chip support
   CONFIG_I2C_SENSOR=m
   CONFIG_SENSORS_IT87=m

设置模块

如果你还没有挂载 sysfs 伪文件系统。

mount -t sysfs sysfs /sys

请参阅内核源代码树中的 Documentation/filesystems/sysfs.txt 和 Documentation/i2c/sysfs-interface

modprobe it87

modprobe i2c-isa 传感器可以在 sysfs 伪文件系统中访问。但是如果你想,你可以使用 lm_sensors 用户工具...

lm_sensors 用户工具

安装 sensors 用户工具

cd lm_sensors-2.8.3

将此复制到一个名为 chips-it87.diff 的文件中

注意: 此补丁仅适用于旧版本的 lm_sensors,Paolo 写道

“lm_sensors 开发人员的回复说,下一个版本的 lm_sensors 将修复此问题。它已经在 CVS 中修复了。”

--- lib/chips.c Sun Jan 25 00:13:49 2004
+++ ../lm_sensors-2.8.3.OK/lib/chips.c  Sat Jan 24 01:23:43 2004
@@ -3757,13 +3757,13 @@
                          R, IT87_SYSCTL_TEMP2, VALUE(3), 1 },
     { SENSORS_IT87_TEMP3, "temp3", NOMAP, NOMAP,
                          R, IT87_SYSCTL_TEMP3, VALUE(3), 1 },
-    { SENSORS_IT87_TEMP1_LOW, "temp1_hyst", SENSORS_IT87_TEMP1,
+    { SENSORS_IT87_TEMP1_LOW, "temp1_min", SENSORS_IT87_TEMP1,
                               SENSORS_IT87_TEMP1, RW,
                               IT87_SYSCTL_TEMP1, VALUE(2), 1 },
-    { SENSORS_IT87_TEMP2_LOW, "temp2_hyst", SENSORS_IT87_TEMP2,
+    { SENSORS_IT87_TEMP2_LOW, "temp2_min", SENSORS_IT87_TEMP2,
                               SENSORS_IT87_TEMP2, RW,
                               IT87_SYSCTL_TEMP2, VALUE(2), 1 },
-    { SENSORS_IT87_TEMP3_LOW, "temp3_hyst", SENSORS_IT87_TEMP3,
+    { SENSORS_IT87_TEMP3_LOW, "temp3_min", SENSORS_IT87_TEMP3,
                               SENSORS_IT87_TEMP3, RW,
                               IT87_SYSCTL_TEMP3, VALUE(2), 1 },
     { SENSORS_IT87_TEMP1_HIGH, "temp1_over", SENSORS_IT87_TEMP1,

应用补丁

$ patch -p0<chips-it87.diff

$ make user

# make user_install

编辑 sensors.conf 文件 it87 芯片部分(以下部分有一个用于更新版本的 lm_sensors 的示例)

3.5 更新版本的 Sensors.conf

此版本由 Paolo BERVA 为 lm_sensors 2.8.3 发送。

chip "it87-*" "it8705-*" "it8712-*"

# The values below have been tested on Asus CUSI, CUM motherboards.

# Voltage monitors as advised in the It8705 data sheet

    label in0 "VCore 1"
    label in1 "VCore 2"
    label in2 "+3.3V"
    label in3 "+5V"
    label in4 "+12V"
    label in5 "-12V"
    label in6 "-5V"
    label in7 "Stdby"
    label in8 "VBat"

    set in0_min 1.7 * 0.95
    set in0_max 1.7 * 1.05
    set in1_min 2.4
    set in1_max 2.6
    set in2_min 3.3 * 0.95
    set in2_max 3.3 * 1.05
    set in3_min 5.0 * 0.95
    set in3_max 5.0 * 1.05
    set in4_min 12 * 0.95
    set in4_max 12 * 1.05
    set in5_max -12 * 0.95
    set in5_min -12 * 1.05
    set in6_max -5 * 0.95
    set in6_min -5 * 1.05
    set in7_min 5 * 0.95
    set in7_max 5 * 1.05
    #the chip does not support in8 min/max

    # vid is not monitored by IT8705F
    # and is not supported by driver at this time
    ignore  vid

# If 3.3V reads 2X too high (Soyo Dragon and Asus A7V8X-X, for example),
# comment out following line.
#    compute in2   2*@ , @/2
#
    compute in3 ((6.8/10)+1)*@ ,  @/((6.8/10)+1)
    compute in4 ((30/10) +1)*@  , @/((30/10) +1)
# For this family of chips the negative voltage equation is different from
# the lm78.  The chip uses two external resistor for scaling but one is
# tied to a positive reference voltage.  See ITE8705/12 datasheet (SIS950
# data sheet is wrong)
# Vs = (1 + Rin/Rf) * Vin - (Rin/Rf) * Vref.
# Vref = 4.096 volts, Vin is voltage measured, Vs is actual voltage.

# The next two are negative voltages (-12 and -5).
# The following formulas must be used. Unfortunately the datasheet
# does not give recommendations for Rin, Rf, but we can back into
# them based on a nominal +2V input to the chip, together with a 4.096V Vref.
# Formula:
#    actual V = (Vmeasured * (1 + Rin/Rf)) - (Vref * (Rin/Rf))
#    For -12V input use Rin/Rf = 6.68
#    For -5V input use Rin/Rf = 3.33
# Then you can convert the forumula to a standard form like:
#    compute in5 (7.67 * @) - 27.36  ,  (@ + 27.36) / 7.67
#    compute in6 (4.33 * @) - 13.64  ,  (@ + 13.64) / 4.33
#
# this much simpler version is reported to work for a
# Eltite Group K7S5A board
#
   compute in5 -(34/10)*@, -@/(34/10)
   compute in6 -(51/10)*@, -@/(51/10)
#   compute in6 -(56/10)*@, -@/(56/10)
#
    compute in7 ((6.8/10)+1)*@ ,  @/((6.8/10)+1)

# Temperature
#
# Important - if your temperature readings are completely whacky
# you probably need to change the sensor type.
# Adujst and uncomment the appropriate lines below.
# The old method (modprobe it87 temp_type=0xXX) is no longer supported.
#
# 2 = thermistor; 3 = thermal diode
#   set sensor1 3
   set sensor2 2
   set sensor3 2

    ignore temp1
    label temp2       "M/B Temp"
    set   temp2_over  40
    set   temp2_min  20
    label temp3       "CPU Temp"
    set   temp3_over  45
    set   temp3_min  25

# The A7V8X-X has temperatures inverted, and needs a conversion for
# CPU temp. Thanks to Preben Randhol for the formula.
#   label temp1       "CPU Temp"
#   label temp2       "M/B Temp"
#   compute temp1     (-15.096+1.4893*@), (@+15.096)/1.4893

# The A7V600 also has temperatures inverted, and needs a different
# conversion for CPU temp. Thanks to Dariusz Jaszkowski for the formula.
#   label temp1       "CPU Temp"
#   label temp2       "M/B Temp"
#   compute temp1     (@+128)/3, (3*@-128)

# Fans
    label fan1 "CPU/Fan"
    set fan1_div 2
    set fan1_min 2000
    label fan2 "Sys/Fan"
    set fan2_div 4
    set fan2_min 2000
    ignore fan3


下一页 上一页 目录