Jak kontrolować prędkość wentylatora?

177

Jak mogę kontrolować prędkość wentylatora komputera?

W systemie Windows jest wspaniały program o nazwie SpeedFan .

grizwako
źródło
1
Tutaj umieściłem proste rozwiązanie cron dla kart ATI askubuntu.com/a/875241/375427
Pavel Niedoba
1
W systemie Linux fancontroljest konfigurowany przy użyciu pwmconfig. Służy watch sensorsdo obserwowania czujników pod obciążeniem procesora i GPU. Użyj tych wartości na biegu jałowym i pełnym obciążeniu, aby odpowiednio ustawić MINTEMPi . To podnieca fanów w czasie rzeczywistym wraz ze wzrostem obciążenia. Jest to najbardziej aktywne chłodzenie, stanowiące punkt odniesienia dla dalszego ulepszania. Uruchom raz, a następnie edytuj bezpośrednio. Biegaj po każdej poprawce. MAXTEMPINTERVAL=1pwmconfig/etc/fancontrolsudo service fancontrol restart
Dominic Cerisano

Odpowiedzi:

149

Uwaga przed rozpoczęciem:

Ta funkcjonalność zależy zarówno od sprzętu, jak i oprogramowania. Jeśli twój sprzęt nie obsługuje kontroli prędkości wentylatora lub nie wyświetla go w systemie operacyjnym, jest bardzo prawdopodobne, że nie możesz użyć tego rozwiązania. Jeśli tak, ale oprogramowanie (inaczej jądro) nie wie, jak to kontrolować, nie masz szczęścia.


  1. Zainstaluj czujniki lm i pakiety Fancontrol .
  2. Skonfiguruj czujniki lm

    1. Wpisz w terminalu sudo sensors-detecti odpowiedz TAK na wszystkie TAK / brak pytań.
      (Potencjalnie może to uszkodzić system lub spowodować awarię systemu. W przypadku wielu systemów jest to bezpieczne. Nie ma gwarancji, że ten proces nie spowoduje trwałego uszkodzenia systemu, po prostu uważam, że szansa na taką krytyczną awarię jest naprawdę niewielka Zapisywanie całej pracy na wypadek ewentualnych awarii / zawieszeń / restartów przed obsługą konfiguracji systemu jest zawsze dobrym pomysłem. Jeśli nie masz pewności, przeczytaj komentarze i spróbuj przeszukać sieć i uzyskać ogólny przegląd przed TAK, wszystko może być wybiórcze dla twoich TAK-ów nadal będzie wystarczające)
    2. Pod koniec wykrywania czujników zostanie wyświetlona lista modułów, które należy załadować. Wpisz „tak”, aby czujniki wykrywały wstawianie tych modułów do / etc / modułów lub edycję / etc / modułów samodzielnie.
    3. Uruchom sudo service module-init-tools restart. Spowoduje to odczytanie zmian wprowadzonych /etc/modulesw kroku 3 i wstawienie nowych modułów do jądra.
      • Uwaga : Jeśli korzystasz z systemu Ubuntu 13.04 lub nowszego, to polecenie z 3 kroku powinno zostać zastąpione przez sudo service kmod start.
  3. Skonfiguruj fancontrol

    1. W typie terminala sudo pwmconfig. Ten skrypt zatrzyma każdego wentylatora na 5 sekund, aby dowiedzieć się, które wentylatory mogą być kontrolowane za pomocą którego uchwytu PWM. Po tym, jak skrypt przechodzi przez wszystkie wentylatory, możesz skonfigurować, który wentylator odpowiada danej temperaturze.
    2. Musisz określić, jakich czujników użyć. To trochę trudne. Jeśli masz tylko jeden wentylator, upewnij się, że używasz czujnika temperatury dla swojego rdzenia, aby oprzeć prędkość fancontrol.
    3. Uruchom monit i zapisz zmiany w domyślnej lokalizacji.
    4. Wprowadź poprawki, aby dostosować /etc/fancontroli użyj, sudo service fancontrol restartaby zastosować zmiany. (W moim przypadku ustawiłem interwał na 2 sekundy.)
  4. Skonfiguruj usługę fancontrol

    1. Uruchom sudo service fancontrol start. Spowoduje to również, że usługa fancontrol będzie uruchamiana automatycznie podczas uruchamiania systemu.

W moim przypadku /etc/fancontroldla procesora użyłem:

Ustawienia dla hwmon0 / device / pwm2:
(Zależy od hwmon0 / device / temp2_input) (Kontroluje hwmon0 / device / fan2_input)

INTERVAL=2
MINTEMP=40  
MAXTEMP=60  
MINSTART=150  
MINSTOP=0  
MINPWM=0  
MAXPWM=255 

a w innym systemie jest to:

INTERVAL=10
DEVPATH=hwmon1=devices/platform/coretemp.0 hwmon2=devices/platform/nct6775.2608
DEVNAME=hwmon1=coretemp hwmon2=nct6779
FCTEMPS=hwmon2/pwm2=hwmon1/temp2_input
FCFANS=hwmon2/pwm2=hwmon2/fan2_input
MINTEMP=hwmon2/pwm2=49
MAXTEMP=hwmon2/pwm2=83
MINSTART=hwmon2/pwm2=150
MINSTOP=hwmon2/pwm2=15
MINPWM=hwmon2/pwm2=14
MAXPWM=hwmon2/pwm2=255

oto kilka przydatnych informacji na temat ustawień i tego, co naprawdę robią

GrizzLy
źródło
111
Próbowałem postępować zgodnie z twoim przewodnikiem, ale utknąłem w kroku trzecim z tym błędem: / usr / sbin / pwmconfig: Nie ma zainstalowanych modułów czujników
zgodnych z pwm
6
Miałem ten sam problem z pwmconfig, dopóki nie uruchomiłem sudo czujników wykrywających
Gearoid Murphy
5
Co zrobić, jeśli wykrywanie czujników sudo nie zawiera żadnych czujników? -> Przepraszamy, nie wykryto żadnych czujników. Albo twój system nie ma czujników, albo nie jest obsługiwany, albo jest podłączony do nieobsługiwanego adaptera I2C lub SMBus. Jeśli dowiesz się, jakie żetony są na twojej płycie, sprawdź status sterownika pod adresem lm-sensors.org/wiki/Devices .
H3R3T1K,
5
Jeśli masz problemy, sprawdź w dmesg komunikaty o błędach. W moim przypadku ostatnie zmiany w jądrze uniemożliwiły mi załadowanie niezbędnego sterownika i musiałem dodać acpi_enforce_resources=laxdo moich opcji jądra, aby przywrócić starą funkcjonalność. Zobacz także: goo.gl/tUcr36
bukzor
19
Próbowałem tego i nie mogę przejść dalej niż sudo pwmconfig, ponieważ otrzymuję: „Nie ma zainstalowanych modułów czujników z obsługą pwm”. Dzieje się tak po tym, jak polecenie czujników wykrywa „cyfrowy czujnik termiczny Intel”. Próbowałem również tego parametru jądra. Czy ktoś może zaproponować rozwiązanie?
Sman789
44

Jeśli posiadasz komputer ThinkPad , istnieje oprogramowanie, thinkfanktóre właśnie to robi. Jak sama nazwa wskazuje, jest on stworzony specjalnie dla ThinkPads ( thinkpad_acpi).

thinkfanOprogramowanie jest dostępne w standardowych repozytoriach Ubuntu, ale wymaga kilku czynności, aby skonfigurować.

Oto prosty przewodnik krok po kroku:

http://staff.science.uva.nl/~kholshei/thinkfan_guide/

(która jest w zasadzie przetłumaczoną wersją tego niemieckiego przewodnika: http://thinkwiki.de/Thinkfan )


Istotne informacje z posta:

Krok 1. Zainstaluj oprogramowanie thinkfan i czujniki:

sudo apt-get install thinkfan lm-sensors

Krok 2. Upewnij się, że demon kontroluje wentylator, edytując plik thinkpad.conf:

sudo nano /etc/modprobe.d/thinkfan.conf

dodając następujący wiersz:

options thinkpad_acpi fan_control=1

Krok 3. Ustaw ładowanie demona automatycznie podczas uruchamiania, edytując plik:

sudo nano /etc/default/thinkfan

upewniając się, że klawisz START jest ustawiony na tak, tzn. powinien istnieć wiersz z napisem:

START=yes

Krok 4. Wykryj czujniki laptopa:

sudo sensors-detect

i po prostu wybierz domyślne odpowiedzi, ilekroć pojawi się monit, naciskając Enter.

Krok 5. Załaduj nowe moduły. Od Ubuntu 13.10 zrobiono to przez:

sudo service kmod start

podczas gdy w poprzednich wersjach, takich jak 13.04, musisz zamiast tego zrobić:

sudo service module-init-tools start

Krok 6. Sprawdź, które czujniki są w użyciu:

sensors

(te, które wskazują 0 stopni, nie są używane, nie wiem też, dlaczego są one „wykrywane”). Pamiętaj, które są w użyciu.

Krok 7. Znajdź pełne ścieżki tych czujników:

find /sys/devices -type f -name "temp*_input"

Dane wyjściowe powinny być listą ścieżek takich jak / sys / devices / ...

Krok 8. Skopiuj ścieżki do czujników do pliku konfiguracyjnego /etc/thinkpad.conf. Aby to zrobić, najpierw otwórz plik:

sudo nano /etc/thinkfan.conf

Powinna już być taka linia

#sensor /proc/acpi/ibm/thermal (0, 10, 15, 2, 10, 5, 0, 3, 0, 3) 

(# -symbol oznacza, że ​​linia ta została skomentowana). Dodaj linię zaczynającą się od czujnika (bez symbolu #) i skopiuj i wklej pierwszy czujnik. Powtórz to, jeśli masz więcej niż jeden czujnik. Na przykład na mojej maszynie wyniki w kroku 7 dają wynik

/sys/devices/virtual/hwmon/hwmon0/temp1_input
/sys/devices/platform/thinkpad_hwmon/temp3_input
/sys/devices/platform/thinkpad_hwmon/temp4_input
/sys/devices/platform/thinkpad_hwmon/temp5_input
/sys/devices/platform/thinkpad_hwmon/temp6_input
/sys/devices/platform/thinkpad_hwmon/temp7_input
/sys/devices/platform/thinkpad_hwmon/temp1_input
/sys/devices/platform/thinkpad_hwmon/temp8_input
/sys/devices/platform/thinkpad_hwmon/temp2_input
/sys/devices/platform/coretemp.0/temp4_input
/sys/devices/platform/coretemp.0/temp2_input 

Te, które są używane w mojej maszynie, są tymi w pierwszej i dwóch ostatnich liniach, więc dodałem trzy linie:

sensor /sys/devices/virtual/hwmon/hwmon0/temp1_input
sensor /sys/devices/platform/coretemp.0/temp4_input
sensor /sys/devices/platform/coretemp.0/temp2_input 

Krok 9. Wreszcie możemy ustawić poziomy prędkości wentylatora w pliku konfiguracyjnym. Otwórz plik /etc/thinkpad.conf, jeśli jeszcze nie był otwarty.

sudo nano /etc/thinkfan.conf

Poziomy wentylatorów, których używam na moim ThinkPad x201, to:

(0, 0, 51)
(1, 50, 52)
(2, 51, 55)
(3, 54, 58)
(4, 56, 63)
(5, 60, 70)
(6, 66, 79)
(7, 74, 92)
(127, 85, 32767) 

Ostatnia linia zapewnia pełną prędkość wentylatora (127 = „wyłączone”, tzn. Nieuregulowane). Możesz manipulować tymi poziomami, aby dopasować je do swoich potrzeb / życzeń, ale PROSZĘ UWAŻAĆ!

Krok 10. Uruchom ponownie. Wszystko powinno już działać. Aby sprawdzić, czy Thinkpad działa poprawnie, użyj

sudo thinkfan -n

który uruchamia thinkfan w trybie pełnym. Możesz najpierw zatrzymać demona thinkfan:

sudo /etc/init.d/thinkfan stop

Jeśli chcesz ponownie uruchomić demona thinkfan, wpisz:

sudo /etc/init.d/thinkfan start

Aby zakończyć, mój plik konfiguracyjny /etc/thinkfan.conf to:

# IMPORTANT:
#
# To keep your HD from overheating, you have to specify a correction value for
# the sensor that has the HD's temperature. You need to do this because
# thinkfan uses only the highest temperature it can find in the system, and
# that'll most likely never be your HD, as most HDs are already out of spec
# when they reach 55 °C.
# Correction values are applied from left to right in the same order as the
# temperatures are read from the file.
#
# For example:
# sensor /proc/acpi/ibm/thermal (0, 0, 10)
# will add a fixed value of 10 °C the 3rd value read from that file. Check out
# http://www.thinkwiki.org/wiki/Thermal_Sensors to find out how much you may
# want to add to certain temperatures.

# Syntax:
# (LEVEL, LOW, HIGH)
# LEVEL is the fan level to use (0-7 with thinkpad_acpi)
# LOW is the temperature at which to step down to the previous level
# HIGH is the temperature at which to step up to the next level
# All numbers are integers.
#

# I use this on my T61p:
#sensor /proc/acpi/ibm/thermal (0, 10, 15, 2, 10, 5, 0, 3, 0, 3)

#(0, 0, 55)
#(1, 48, 60)
#(2, 50, 61)
#(3, 52, 63)
#(4, 56, 65)
#(5, 59, 66)
#(7, 63, 32767)


# My settings for my ThinkPad X201: (kris)

sensor /sys/devices/virtual/hwmon/hwmon0/temp1_input
sensor /sys/devices/platform/coretemp.0/temp4_input
sensor /sys/devices/platform/coretemp.0/temp2_input

(0, 0, 51)
(1, 50, 52)
(2, 51, 55)
(3, 54, 58)
(4, 56, 63)
(5, 60, 70)
(6, 66, 79)
(7, 74, 92)
(127, 85, 32767)
Kris
źródło
2
Jeden komentarz: chcesz mieć większe nakładanie się wartości temperatur, jak w skomentowanej tabeli. Zwłaszcza w zakresie 45–55. W przeciwnym razie prędkość wentylatora będzie się zmieniać. To bardzo niepokojące. (Stały hałas wentylatora nie przeszkadza tak bardzo, jak wahania).
HongboZhu
1
My (społeczność z Linuksem) naprawdę jesteśmy do dupy w UX. :( Ustawienie prędkości wentylatora nie powinno być procesem 10-etapowym.
Alexander
2
@Alexander Jeśli bardzo się o tym troszczysz, możesz napisać i utrzymywać mały program do automatyzacji tego procesu.
Kris,
1
@Kris Byłbym bardziej skłonny zmodyfikować oryginalny program, aby nie mieć tak nonsensownego procesu konfiguracji. Niestety, nie mam thinkpad, właśnie przechodziłem obok tego postu, szukając dostępnych opcji sterowania wentylatorem thr.
Alexander
/etc/modprobe.d/thinkfan.conf nie istnieje w moim Ubuntu 14.04. Co teraz?
Youda008
14

Dla kilku komputerów Dell możesz zainstalować pakiet i8kutils:

sudo apt install i8kutils

Jeśli masz nie przetestowany Dell (jak mój Dell XPS 14z), może być konieczne wymuszenie ładowania modułu jądra:

sudo modprobe i8k force=1
morhook
źródło
2
Mam Dell XPS 14 L421X. <code> czujniki </code> nie wykazały fanów. po zainstalowaniu pakietu i8kutils dostaję czujniki coretemp-isa-0000 Adapter: adapter ISA Identyfikator fizyczny 0: + 54,0 ° C (wysoka = + 87,0 ° C, kryt = + 105,0 ° C) Rdzeń 0: + 50,0 ° C (wysoka = + 87,0 ° C, kryt = + 105,0 ° C) Rdzeń 1: + 52,0 ° C (wysoka = + 87,0 ° C, kryt = + 105,0 ° C) i8k-virtual-0 Adapter: Urządzenie wirtualne Prawy wentylator: 0 RPM Procesor: + 55,0 ° C
philcolbourn
Czy to działa w przypadku HP?
Immortal Player
1
@ immortal-player, myślę, że nie. Moduł jądra jest specjalnie zaprojektowany dla komputerów Dell.
morhook
Może dodać, że dla Apple jest, macfanctlda mbpfandla ThinkPadathinkfan
rubo77
7

Zainstaluj i skonfiguruj czujniki LM i pakiety Fancontrol :

sudo apt-get install lm-sensors fancontrol

Dokumentacja do ich konfiguracji jest dostępna na ich stronach podręcznika.

Jest to funkcja, która powinna być zapewniona przez BIOS zgodny z ACPI, ale wydaje się, że większość producentów płyt głównych nie zadaje sobie trudu przestrzegania tego standardu.

psusi
źródło
12
Czy możesz podać bardziej szczegółowe instrukcje dotyczące ich instalowania i używania?
Stefano Palazzo
Możesz to znaleźć na stronie podręcznika lub na stronie www.lm-sensors.org.
psusi
40
Wiem, pomyślałem, że ta odpowiedź może być lepsza :)
Stefano Palazzo
Link podany przez @psusi nie działa, nowy link jest tutaj: github.com/groeck/lm-sensors
Svetlana Belkin
1
Myślę, że masz błędnie napisaną nazwę użytkownika.
markroxor
2

Oto zaktualizowana wersja odpowiedzi polecającej thinkfan , współpracującej z Ubuntu 19.04.

Ustawiać

Poniższe instrukcje dotyczą każdej ThinkPad, który ma /proc/acpi/ibm/fani /proc/acpi/ibm/thermalurządzeń „Legacy”. Pozwala to uniknąć konieczności instalowania lm-sensorspakietu.

Jednak nadal można zainstalować, lm-sensorsaby zobaczyć więcej czujników temperatury i uzyskać bardziej precyzyjną kontrolę nad wentylatorami (a mianowicie w krokach 256 PWM zamiast stałych kroków „0-7 i 127” w przypadku starszych urządzeń. Ponadto, od thinkfanteraz może współpracować z lm-sensorsczujnikami, nie jest już specyficzny dla komputerów IBM / Lenovo ThinkPad. Informacje na temat man thinkfankorzystania z tych „rozszerzonych” czujników są również aktualne w niemieckim Thinkwiki .

  1. Zainstaluj wymagany pakiet:

    sudo apt-get install thinkfan
    
  2. Dodaj następujący wiersz do /etc/modprobe.d/thinkfan.conf:

    options thinkpad_acpi fan_control=1
    
  3. Skonfiguruj thinkfanusługę, aby uruchamiała się automatycznie przy uruchomieniu systemu:

    1. Dodaj linię START=yesdo/etc/default/thinkfan

    2. Wykonaj następujące polecenie ( źródło ):

      sudo systemctl enable thinkfan.service
      
  4. Dostosuj /etc/thinkfan.confodpowiednie wskaźniki do urządzeń i żądanych poziomów wentylatorów. Komentarze tam dostarczają dokumentację. Na każdym Thinkpadzie ze starszym wentylatorem i urządzeniami termicznymi poniższe informacje powinny stanowić dobry punkt wyjścia (powinien być również bezpieczny dla dysku twardego, więcej informacji można znaleźć w komentarzach w pliku). Pamiętaj, że używa to nowych słów kluczowych - te w drugiej odpowiedzi powyżej są nieaktualne.

    tp_fan /proc/acpi/ibm/fan
    tp_thermal /proc/acpi/ibm/thermal
    
    (0, 0, 47)
    (1, 43, 52)
    (2, 48, 55)
    (3, 51, 58)
    (4, 54, 63)
    (5, 59, 70)
    (6, 66, 79)
    (7, 74, 92)
    (127, 85, 32767) 
    

Test

Aby przetestować konfigurację (po ponownym uruchomieniu), możesz wykonać następujące czynności:

  • W jednym oknie terminala uruchom thinkfanw trybie nie-demonizowanym, aby zobaczyć jego komunikaty:

    sudo service thinkfan stop && sudo thinkfan -n
    
  • W innym oknie terminala miej oko na aktualne wartości temperatury, podając czujnik temperatury, jeśli jest inny:

    while true; do sleep 1; cat /proc/acpi/ibm/thermal; done
    
  • W jeszcze innym oknie terminala rozgrzej procesor (i przerwij go za pomocą Ctrl+, Cjeśli coś w zarządzaniu temperaturą nie działa zgodnie z oczekiwaniami):

    sudo apt install stress-ng
    stress-ng --cpu-1
    
Tanius
źródło
1
Niesamowite. To rozwiązało to dla mojego T490 z Pop_OS 19.04. Wentylator nadal się włącza, ale nie przez cały czas.
Nitai
1

Spróbuj zajrzeć do konfiguracji UEFI (lub konfiguracji BIOS) komputera. Nie może być ustawienie sterowania wentylatorami, gdzie można umieścić wentylator na Silent Mode, Performance Mode, Full Speed, Customize, itd.

Jak uzyskać dostęp do ustawień UEFI : Uruchom ponownie komputer, a klucz do ich wprowadzenia prawdopodobnie pojawi się w jednym z rogów (np. Press F2 to enter UEFI setup)

Konfiguracja ASRock UEFI do sterowania wentylatorem

xjcl
źródło
To jest AskUbuntu nie AskUEFI :)
Maarten