我曾经手动禁用风扇写入“级别 0”,/proc/acpi/ibm/fan
但风扇保持关闭状态。最近我安装了thinkfan
,启动了它,然后停止了,但是手动禁用它在执行此类操作后停止工作。为什么?系统中发生了什么变化会导致风扇发生这样的变化?
系统重新启动将其反转 -echo level 0 | sudo tee /proc/acpi/ibm/fan
再次工作,运行并停止 thinkfan(即使风扇在运行期间未启动)与以前一样乱七八糟地写入/proc/acpi/ibm/fan
,修改时间/proc/acpi/ibm/fan
与手动写入时间保持一致,但输出更改为“启用”。
下面是一个可重现的示例(至少对于我下载的 Linux Mint 20.2 和我的 Thinkpad;我最初是在另一个 Thinkpad 型号上发现的)。由于一些目前无法理解的原因,liveUSB 上的 thinkfan 不使用 systemd,但结果是相同的:手动禁用后,风扇在没有 thinkfan 进程的情况下启动; thinkfan 是相同的版本,0.9.1(作为输出thinkfan -h
)。
我用 Linux Mint 20.2 制作了 USB。
我用“持久”标志启动它,
vmlinuz
而不是“安静启动”我已经运行
echo options thinkpad_acpi fan_control=1' | sudo tee -a /etc/modprobe.d/thinkpad_acpi.conf
然后重新启动重新启动后,我可以通过以下方式手动设置风扇速度
echo level 0 | sudo tee /proc/acpi/ibm/fan
我已经安装了
apt-get install stress
cat /proc/acpi/ibm/fan
当我这样做时,风扇速度保持为 0(至于噪音和)stress -c 2 -t 100
我已经安装了
apt-get install thinkfan
,但即使在重新启动后sudo systemctl status/enable/start thinkfan
输出未找到单位 thinkfan.service我已编辑
/etc/thinkfan.conf.
取消注释:
tp_fan /proc/acpi/ibm/fan
tp_Thermal /proc/acpi/ibm/Thermal (0, 10, 15, 2, 10, 5, 0, 3, 0, 3)但是,我可以
sudo thinkfan -n
在非守护程序模式下启动 thinkfan: 。当我有压力时,风扇开始启动。我已经结束了那次跑步,它写道清理并重置风扇控制之后我就开始了
sudo thinkfan
——Daemon PID: 2548
,然后kill 2548
。我可能已经像上面那样启动过几次 thinkfan 了。
现在(系统监视器中没有看到 thinkfan 进程),在我这样做之后
echo level 0 | sudo tee /proc/acpi/ibm/fan
,我可以看到cat /proc/acpi/ibm/fan
:disabled, 0, 0
,但是在我这样做之后,stress -c 2 -t 100
大约 10 秒后我开始听到风扇噪音和cat /proc/acpi/ibm/fan
:enabled, 5578, auto
。顺便说一下,
/proc/acpi/ibm/thermal
闲置时第一个数字的输出约为 40,压力开始时约为 80(其他数字保持不变)。
初始问题(以防万一):
安装后启动thinkfan(据我所知)sudo systemctl enable thinkfan
。想要手动临时并尝试过stop
,disable
:sudo systemctl disable thinkfan
,没有称为thinkfan
正在运行的进程,输出sudo systemctl status thinkfan
:
● thinkfan.service - simple and lightweight fan control program
Loaded: loaded (/lib/systemd/system/thinkfan.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2021-11-11 18:09:56 MSK; 2 days ago
Main PID: 33742 (code=exited, status=1/FAILURE)
Nov 11 18:09:51 alex-ThinkPad-slim thinkfan[33742]: A sensor has vanished! Exiting since there's no safe way of handling this.
Nov 11 18:09:56 alex-ThinkPad-slim thinkfan[33742]: Cleaning up and resetting fan control.
Nov 11 18:09:56 alex-ThinkPad-slim systemd[1]: thinkfan.service: Main process exited, code=exited, status=1/FAILURE
Nov 11 18:09:56 alex-ThinkPad-slim systemd[1]: thinkfan.service: Failed with result 'exit-code'.
Nov 12 05:32:53 alex-ThinkPad-slim systemd[1]: /lib/systemd/system/thinkfan.service:9: PIDFile= references a path below legacy directory /var/run/, updating /var/run/thinkfan.pid → /run/thinkfan.pid; please update the unit file accordingly.
但是手动关闭后风扇又自动启动了,这是为什么呢?
$ cat /proc/acpi/ibm/fan
status: disabled
$ stress -c 2 -t 100
$ cat /proc/acpi/ibm/fan
status: enabled
答案1
啊,赏金浪费了(如果有人写出更好、更全面的答案,也许就不会浪费了)。
我发现thinkfan
(至少0.9)代码(据我所知)激活watchdog
风扇控制。echo watchdog 0 | sudo tee /proc/acpi/ibm/fan
除了echo disable | sudo tee /proc/acpi/ibm/fan
恢复 所做的更改之外,还需要禁用它thinkfan
。
https://www.kernel.org/doc/Documentation/admin-guide/laptops/thinkpad-acpi.rst:
如果用户空间未发出 procfs 风扇命令之一:“enable”、“disable”、“level”或“watchdog”,或者如果有没有写入 pwm1_enable(或 pwm1当且仅当pwm1_enable 在最多 120 秒的可配置时间内设置为 1(手动模式)。此功能称为风扇安全看门狗。
请注意,看门狗定时器在启用风扇后停止。当收到上述风扇命令之一时,它将自动重新配置(使用相同的间隔)。因此,风扇看门狗不适合防止通过“enable”、“disable”和“level”procfs fan 命令或 hwmon fan control sysfs 接口以外的方式更改风扇模式。
要对安全看门狗进行编程,请使用“看门狗”命令:
echo '看门狗' > /proc/acpi/ibm/fan
如果要禁用看门狗,请使用 0 作为间隔。