为什么thinkfan启动和结束一次后,风扇却反复启动?

为什么thinkfan启动和结束一次后,风扇却反复启动?

我曾经手动禁用风扇写入“级别 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。想要手动临时并尝试过stopdisablesudo 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 作为间隔。

相关内容