[lm-sensors] CPU fan with full speed

Guenter Roeck linux at roeck-us.net
Sat Jun 30 21:24:59 CEST 2012

On Sat, Jun 30, 2012 at 07:27:49PM +0200, Philipp Kraus wrote:
> On 2012-06-30 19:03:44 +0200, Guenter Roeck said:
> >On Sat, Jun 30, 2012 at 06:04:53PM +0200, Philipp Kraus wrote:
> >>On 2012-06-30 17:33:38 +0200, Guenter Roeck said:
> >>
> >>>On Sat, Jun 30, 2012 at 04:37:28PM +0200, Philipp Kraus wrote:
> >>>>
> >>>>the grep command shows
> >>>>grep: /sys/class/hwmon/hwmon1/device/driver: Is a directory
> >>>>grep: /sys/class/hwmon/hwmon1/device/hwmon: Is a directory
> >>>>grep: /sys/class/hwmon/hwmon1/device/power: Is a directory
> >>>>grep: /sys/class/hwmon/hwmon1/device/subsystem: Is a directory
> >>>>
> >>>>and within the directory are the in*, pwm* temp* files
> >>>>
> >>>Not sure I understand.
> >>>
> >>>I'll need the names and output for the pwm* and temp* files. They
> >>>_should_ be in
> >>>/sys/class/hwmon/hwmon1/device/pwm* and /sys/class/hwmon/hwmon1/device/temp*.
> >>
> >>the command grep /sys.... does not work, I have run an ls -l and
> >
> >Phil,
> >
> >It wasn't "grep /sys/...", it was "grep . /sys/class/hwmon/hwmon1/device/*".
> >The "." is important. Your output gives me the file names, but I need names and
> >content, not names and permissions.
> Sorry, my mistake, I haven't seen that it ist "grep . <space> /sys..."
> Hope this the correct output now
> /sys/class/hwmon/hwmon1/device/pwm1:252

Looks like all pwm values report the "default" pwm value.

> /sys/class/hwmon/hwmon1/device/temp1_auto_channels_pwm:1

If I understand the code and the data sheet correectly, this attribute
is a bit map used to map a temperature source to one or multiple fans.
And it looks like all temperature sources are mapped to fan1, which
in turn means that effectively temp4 controls the speed of fan1 (the highest
temperature determines the fan speed), and all other fans are not mapped to
a temperature input.

What you should probably do is to find the association between tempX and pwmX
and program tempX_auto_channels_pwm such that the two map. For example, if temp1
is the CPU1 temperature, and pwm4 (fan4) is connected to the CPU1 fan, write
0b00001000 = 0x08 into /sys/class/hwmon/hwmon1/device/temp1_auto_channels_pwm.
Similar, if temp2 is the CPU2 temperature and fan5/pwm5 controls its fan,
write 0x10 (=16) into /sys/class/hwmon/hwmon1/device/temp2_auto_channels_pwm.

You might have to play with the values a bit to find the correct mapping.

Hope this helps,

More information about the lm-sensors mailing list