thinkfan이 한 번 시작하고 종료된 후 팬이 반복적으로 시작되는 이유는 무엇입니까?

thinkfan이 한 번 시작하고 종료된 후 팬이 반복적으로 시작되는 이유는 무엇입니까?

"레벨 0"이라고 쓰는 팬을 수동으로 비활성화했지만 /proc/acpi/ibm/fan팬은 계속 꺼져 있습니다. 최근에 설치하고 thinkfan시작한 다음 중지했지만 이와 같은 작업을 수행한 후 수동으로 비활성화하면 작동이 중지되었습니다. 왜? 팬이 이렇게 변하게 만드는 시스템의 어떤 변화가 발생했나요?

시스템 재부팅으로 반전됨 - echo level 0 | sudo tee /proc/acpi/ibm/fanThinkFan 다시 작동, 실행 및 중지(실행 중에 팬이 시작되지 않았음에도 불구하고)가 이전과 같이 지저분하게 기록되고 /proc/acpi/ibm/fan, 수정 시간은 /proc/acpi/ibm/fan수동 기록 시간과 동일하게 유지되지만 출력은 "활성화됨"으로 변경됩니다. .

재현 가능한 예는 다음과 같습니다(적어도 제가 다운로드한 Linux Mint 20.2와 Thinkpad의 경우. 원래 다른 Thinkpad 모델에서 찾았습니다). 현재로서는 이해할 수 없는 이유로 인해 liveUSB의 thinkfan은 systemd를 사용하지 않지만 결과는 동일합니다. 수동으로 비활성화한 후 팬은 thinkfan 프로세스 없이 동일한 버전인 0.9.1(output 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볼 수 있지만 , 이 작업을 수행한 후 약 10초 후에 팬 소음과 : 이 들리기 시작합니다 .cat /proc/acpi/ibm/fandisabled, 0, 0stress -c 2 -t 100cat /proc/acpi/ibm/fanenabled, 5578, auto

  • 그런데 /proc/acpi/ibm/thermal첫 번째 숫자의 출력은 유휴 상태에서 약 40이고 압력이 시작될 때 약 80입니다(다른 숫자는 동일하게 유지됨).

초기 질문(만약의 경우):

설치 후 thinkfan을 시작하세요(내가 아는 한) sudo systemctl enable thinkfan. 수동으로 임시로 시도하고 싶었지만 실행 중인 프로세스가 호출되지 않았습니다 stop. 출력 :disablesudo systemctl disable thinkfanthinkfansudo 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 팬 명령이나 hwmon 팬 제어 sysfs 인터페이스를 통하지 않고 팬 모드 변경을 방지하는 데 적합하지 않습니다.

보안 감시 프로그램을 프로그래밍하려면 "watchdog" 명령을 사용하십시오.

echo 'watchdog' > /proc/acpi/ibm/fan

워치독을 비활성화하려면 간격으로 0을 사용합니다.

관련 정보