Package: qcontrol
Version: 0.4.2+svn-r40-3
Severity: wishlist

Dear Maintainer,

The current fanspeed control script causes the fan to jump back and forth
between two speed quite easily, at least on my system (419P). I've modified
the base temp() function to implement a hysteresis loop to prevent that.

The threshold values are completely arbitrary, I've adjusted all values
downward because my machine rarely ever reaches 40 degrees. Also, I've never
written Lua before so there may be easier ways to do it. However, I hope that
the attached function can find its way into the package (as an example?) so
that others can use it too.


Regards,
Arno

-- System Information:
Debian Release: 7.0
  APT prefers stable
  APT policy: (990, 'stable'), (600, 'testing'), (300, 'unstable')
Architecture: armel (armv5tel)

Kernel: Linux 3.2.0-4-kirkwood
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages qcontrol depends on:
ii  libc6        2.13-38
ii  liblua5.1-0  5.1.5-4
ii  udev         175-7.2

qcontrol recommends no packages.

qcontrol suggests no packages.

-- Configuration Files:
/etc/qcontrol/ts41x.lua changed [not included]

-- no debconf information
-- hysteresis implementation:
--    - - > 35 > - - - > 40 > - - - > 50 > - - - > 65 > - - -
--  silence --    low    --  medium   --   high    -- full  |
--    - - < 32 < - - - < 35 < - - - < 45 < - - - < 55 < - - -
function temp( temp )
        logtemp(temp)
        if last_fan_setting == "full" then
                if temp < 55 then
                        setfan("high")
                end
        elseif last_fan_setting == "high" then
                if temp > 65 then
                        setfan("full")
                elseif temp < 45 then
                        setfan("medium")
                end
        elseif last_fan_setting == "medium" then
                if temp > 50 then
                        setfan("high")
                elseif temp < 35 then
                        setfan("low")
                end
        elseif last_fan_setting == "low" then
                if temp > 40 then
                        setfan("medium")
                elseif temp < 32 then
                        setfan("silence")
                end
        elseif last_fan_setting == "silence"
                if temp > 35 then
                        setfan("low")
                end
        else
                setfan("high")
        end
end

Reply via email to