如何在 Macbook 上提高 Debian 的冷却强度?

如何在 Macbook 上提高 Debian 的冷却强度?

我在我的 Macbook Air 上安装了 Debian(为什么?因为有趣。),而且它实际上运行得很好。

然而,在注意到一个名为“kidle_inject”的进程占用了所有内核上 100% 的 CPU 后,我想检查温度,“传感器”告诉我温度徘徊在 96 摄氏度。风扇几乎没有运行。

我注意到,在 OSX 上,只要我打开系统,它就会运行(可能刚才还很热),而在 Debian 上我几乎听不到它的声音,而且笔记本电脑在触摸时似乎也更热。在 Debian 上。

有没有办法让 Debian 更积极地使用风扇?

答案1

http://allanmcrae.com/2010/05/simple-macbook-pro-fan-daemon/事实证明这是一个有用的开始。

在 中/sys/devices/platform/applesmc.768/,有一些有用的选项可用于控制风扇速度。

其中“fan1_min”和“fan1_max”是最小和最大风扇速度,“fan1_output”是直接控制风扇的设置,“fan1_manual”使系统忽略最小和最大设置并直接响应更改到“fan1_output”。

如何自动控制这些是下一个议程。

编辑:另外,请小心这些设置,因为很可能只是关闭风扇,使您的系统面临过热的危险。

第二次编辑:

该页面上的信息似乎有点过时,因为我发现温度传感器读数与风扇设置位于同一目录中,而不是该页面建议的其他目录中。

第三次编辑:根据该页面上的算法,我编写了一个快速的 python 脚本,当以 root 身份运行时,它似乎工作得很好:

#!/usr/bin/python
import time
import glob
import math

last_temp = 0

while True:

    time.sleep(1)

    files = glob.glob("/sys/devices/platform/applesmc.768/temp*_input")

    temp = 0

    for file in files:
        with open(file) as openfile:
            sensor_temp = openfile.read()

            temp = max(int(sensor_temp)/1000, temp)

    with open("/sys/devices/platform/applesmc.768/fan1_input") as fan1_input:
        current_speed = int(fan1_input.read())

    increasing = temp > last_temp

    last_temp = temp

    if increasing:
        if temp <= 65:
            speed = max(current_speed, 2000)
        elif 65 < temp < 80:
            step = (6200 - 2000) / ((80 - 65) * (80 - 64) / 2)
            speed = max(current_speed, math.ceil(2000 + (temp - 65) * (temp - 64) / 2 * step))
        elif temp >= 80:
            speed = 6200
    else:
        if temp >= 80:
            speed = 6200
        elif 55 < temp < 80:
            step = (6200 - 2000) / ( (80 - 55) * (80 - 54) / 2 )
            speed = min(current_speed, math.floor(6200 - (80 - temp) * (81 - temp) / 2 * step))
        elif temp <= 55:
            speed = 2000

    print "Temperature: " + str(temp) + " Increasing?: " + str(increasing) + " Current speed: " + str(current_speed) + " Target: " + str(speed)

    with open("/sys/devices/platform/applesmc.768/fan1_min", "w") as fan1_input:
    #with open("/home/werner/testtemp", 'w+') as fan1_input:
        fan1_input.write(str(int(speed)))

相关内容