Re: i8k: non-standard fan control

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 19 Sep 2012 11:17:07 -0600, Matthew Monaco wrote:
> On 09/19/2012 05:49 AM, Jean Delvare wrote:
> > The standard fan speed control interface is through the pwm* sysfs
> > attributes. However this interface wasn't designed for discrete speed
> > values like the i8k driver offers, so while you can map the 3 discrete
> > values to arbitrary PWM duty cycles (0%, 50% and 100%) it's somewhat
> > confusing.
> > 
> > Still, I tried to add support for this over a year ago already:
> > 
> > Subject:  [PATCH 2/2] Add hwmon-style fan speed control
> > http://marc.info/?l=lm-sensors&m=130270896704113&w=2
> > 
> > But I did not receive any feedback so it didn't go upstream. Note that
> > my limited experience with Dell laptops suggests that at least some
> > models don't behave like the driver claims, changing the fan speed
> > setting in the user's back. That's another reason why the patch didn't
> > go upstream. The problem also exists with the current driver but my
> > patch would make it even more visible, as the pwm* interface is
> > standardized.
> > 
> > Feel tree to play with my patch, but I'm not sure we really want to
> > push it upstream.
> 
> Yes, my hardware (Vostro 3400) will adjust my fan speed on it's own, but the
> i8kmon daemon just sets it back in its next polling period. Is this a
> deal-breaker for lm_sensors?

Yeah, sort of. The pwm interface isn't supposed to depend on a daemon
to do the right thing. And repeatedly overwriting what the BIOS sets
seems just plain wrong to start with. If the fan speed control is in
automatic mode then it should be reported that way to user-space
(pwm1_enable == 2.) But I don't think there's a way to know this is the
case, even less to switch to manual mode?

> The tcl-based i8kmon daemon uses way more resources
> than I think is reasonable, it's typically in the top 2 or 3 processes on my
> machine for CPU time; the mem usage also seems a little high.

Writing a system daemon in tcl doesn't strike me as the idea of the year ;)

> I started writing something more efficient for my own use and noticed it was
> quite a bit more efficient to read /proc/i8k and parse the temperature, for
> example, than issue an ioctl. Let alone ioctls for all of the values. I wonder
> if adding entries for each setting under /sys/modules/i8k would be accepted.

The /proc/i8k interface is definitely bad, and this is the reason why
I tried to add a proper hwmon interface to the driver. But we can only
do that for attributes which actually fit in the standard hwmon sysfs
interface.

> Your mapping make sense to me. Except I'm not sure why you have 128 as
> I8K_FAN_LOW in the getter and 192 in the setter.

192 is (128 + 255) / 2. The idea is to set the closest value available
based on what the user requested:

       0 =>   0 (fan stopped)
  1..192 => 128 (low fan speed)
193..255 => 255 (full speed)

This is somewhat arbitrary of course, but should follow the principle
of least surprise.

> (Also, write perms for
> user(/group) would be nice for the attribute).

We never do that for any hwmon driver. Letting every user change the
hardware monitoring and/or fan speed control settings would be an
obvious safety weakness.

-- 
Jean Delvare

_______________________________________________
lm-sensors mailing list
lm-sensors@xxxxxxxxxxxxxx
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors


[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux