Jak mogę uzyskać kontrolę wentylatora?

34

Wiem, że istnieje coś takiego jak fancontrol, który pozwala kontrolować prędkość wentylacji twojego systemu. Chciałbym, aby moi fani wirowali trochę szybciej, ponieważ mój laptop bardzo szybko się nagrzewa. Wszystkie samouczki i rzeczy, które znalazłem, dotyczą starszych wersji Ubuntu i chyba już nie działają.

Czy ktoś może mi wyjaśnić lub podać dobry link, w jaki sposób mogę go uruchomić na Ubuntu? Coś innego z tym samym efektem jest również w porządku.

RobinJ
źródło
Więcej informacji na temat sprzętu prawdopodobnie pomogłoby, takich jak marka laptopa, nazwa / numer modelu i typ / wersja bios.
filecraps
@filescraps Dell Latitude D620: paste.ubuntu.com/699801
RobinJ
5
@RobinJ - czy wykonałeś zwykłe kontrole pod kątem problemów z przegrzaniem - sprawdź, czy nie ma kurzu / zatorów - spójrz również na radiator procesora. Zaktualizuj swoje biografie do najnowszych dostępnych. Czy próbowałeś dodać „acpi_osi = Linux” do swojego gruba? Czy korzystasz z dodatkowych opcji rozruchu? Zasadniczo mam na myśli - problemy z przegrzewaniem są typem kurzu / acpi - nie trzeba nigdy ręcznie kontrolować wentylatora.
fossfreedom
Cóż, wentylator zaczyna działać szybciej, gdy ma około 65 ° C, i wydaje się, że jest już za późno, ponieważ gdy zacznie rosnąć, nie będzie już zbyt szybko poniżej 75 ° C. To laptop i nie mam wystarczającej pewności co do sprzętu, aby go odpocząć. Co ma acpi_osi=Linuxzrobić? Bez dodatkowych opcji uruchamiania, tylko domyślny GRUB.
RobinJ
1
@RobinJ - nie zapomnij, że styl strony internetowej polega na dodawaniu odpowiednich informacji z powrotem do pytania, a nie zakopywaniu ich w komentarzach.
fossfreedom

Odpowiedzi:

8

i8kutils działa w celu kontrolowania wentylatora mojego laptopa Dell Vostro 3350.

# Tylko dla laptopów Dell:
$ sudo apt-get install i8kutils 
$ i8kfan 1 2 # Ustaw lewy wentylator na niskiej prędkości (1); prawy przy dużej prędkości (2).
użytkownik1902715
źródło
Tylko wydaje się, że coś w BIOS-ie zawsze przywraca poprzednią wartość po kilku sekundach: P W każdym razie, mimo że jest trochę późno, nadal jest to najbardziej pomocna odpowiedź.
RobinJ
działa na moim Alienware m14x. Ale nadal nie może ustawić maksymalnej prędkości chłodzenia i wciąż powoduje, że laptop działa w wyższych temperaturach. Jest to znacznie gorętsze niż w systemie Windows ...
iLemming
BIOS ustawia to z powrotem, więc dodałem cronjob działa co 2 min: crontab -ei */2 * * * * /usr/bin/i8kfan 1 1. działa na razie idealnie
goksel
14

Najprawdopodobniej będziesz w stanie rozwiązać problem z czymś innym, co przesłania twoje polecenia wentylatora i8kctl, stosując metodę podaną w tej odpowiedzi. Dla kompletności dołączę kilka ogólnych uwag na temat sterowania wentylatorem w laptopach Dell oraz pełne instrukcje dotyczące i8kutils.

Co prawdopodobnie nie zadziała

Niestety dwa popularne i proste sposoby kontrolowania wentylatora w laptopach to ACPI i piny PWM:

  • Laptopy Dell nie mają możliwości sterowania wentylatorem ACPI (* 1)

    • w konsekwencji próba z parametrami rozruchowymi ACPI itp. zakończy się niepowodzeniem
  • Laptopy Dell Latitude, o ile mi wiadomo, nie mają wentylatorów sterowanych PWM (* 2)

    • w konsekwencji program fancontrol/ pwmconfignie będzie działać

Użyj i8kutils

Istnieje jednak pakiet o nazwie, i8kutilsktóry został napisany w celu sterowania wentylatorem w laptopach Dell Inspiron za pośrednictwem SMM BIOS . Kilku użytkowników informuje również o sukcesach na swoich laptopach Dell Laitude (jestem jednym z nich, na Dell Latitude E7440) - jednak często potrzeba sztuczki, aby pozbyć się zakłócania kontroli wentylatora systemu BIOS. Cierpisz na tym również zgodnie z poprzednim komentarzem.

Zainstaluj i8kutils:

$ sudo apt-get install i8kutils

Spróbuj:

$ i8kfan 2 2     # set to max speed
$ i8kfan 0 0     # set to 0 speed

... i słuchaj, czy to działa.

Wyłącz sterowanie wentylatorem systemu BIOS

Jeśli to działa, ale coś innego walczy z ustawioną prędkością (zgłaszaną przez wielu użytkowników laptopów Dell Latitude), jest to spowodowane zaplanowanymi sesjami SMM przywracającymi prędkość wentylatora. Na szczęście istnieje sposób na wyłączenie kontroli wentylatora BIOS poprzez zapis do rejestrów SMM .

Ostrzeżenie: patrz ostrzeżenie w górnej części pliku smm.c. Ta metoda zapisuje do rejestrów SMM. Jednak nie widziałem żadnych raportów użytkowników na temat powodowania problemów. Ponadto wszystkie raporty dotyczące tego próbują wskazywać na sukces w wyłączeniu kontroli wentylatora systemu BIOS.

i8kutilszawiera źródło programu, smmale i8kutilspakiet nie zawiera skompilowanego pliku binarnego. Musimy pobrać kod źródłowy i8kutils, skompilować program smmi uruchomić go z odpowiednim argumentem, aby wyłączyć kontrolę wentylatora BIOS, pisząc do rejestrów SMM.

Pobierz pakiety potrzebne do budowy:

$ sudo apt-get build-dep i8kutils

Pobierz i8kutilskod źródłowy, wypakuj i wprowadź katalog (dokładne nazwy w zależności od wersji i8k):

$ apt-get source i8kutils
$ tar xvf i8kutils_1.33.tar.gz
$ cd i8kutils-1.33/

Kompiluj smm:

  • W systemie 32-bitowym :

    $ make
    

    (Powyżej wykona się gcc -g -O2 -Wall -I. -o smm smm.c.)

  • Jeśli w systemie 64-bitowym :

    $ gcc -g -O2 -Wall -I. -o smm -m32 smm.c
    

Uruchom smmz argumentem, 30a3aby wyłączyć sterowanie wentylatorem SMM:

$ sudo ./smm 30a3

Teraz kontrola wentylatora BIOS powinna być wyłączona. Spróbuj ustawić prędkość za pomocą i8kctl, nasłuchuj wentylatora i upewnij się, że prędkość się utrzymuje.

Uwaga: Jest to ustawienie, które będzie utrzymywać ponowne uruchamianie i wyłączanie. Sterowanie wentylatorem BIOS można ponownie włączyć za pomocą $ sudo ./smm 31a3.


* 1: Widziałem oficjalne źródło tego, nie mogę go teraz znaleźć. Jeśli chcesz sprawdzić, czy Twój sprzęt go nie ma, postępuj zgodnie z instrukcjami tutaj: https://wiki.ubuntu.com/DebuggingACPI

* 2: dla weryfikacji tego, uruchom pwmconfig: sudo apt-get install fancontrol, sudo pwm-configpokaże, czy wentylator PWM-zdolny jest obecny czy nie

Carl
źródło
Właściwie użyłem parametru ACPI acpi_osi='!Windows 2012', aby kontrolować wentylatory mojego Dell Inspiron 15R 5520, ponieważ zawsze obracałyby się z maksymalną prędkością, niezależnie od temperatury.
user311982
To powinna być poprawna odpowiedź. Jest dobrze poinformowany i bardzo istotny!
ppr.
Świetna odpowiedź. Znalezione również tutaj
Malat
1
Dziękuję bardzo, to zadziałało dla mnie po wypróbowaniu wszystkiego innego bezskutecznie. Kiedy próbowałem skompilować smm, brakowało mi sys / cdefs.h, ale sudo apt-get install g++-multilibwprowadziłem go (jak wspomniano na askubuntu.com/questions/470796/... )
Philip Daniels
Mogę się trochę spóźnić, ale czy jest jakaś wada tego, żeby ustawić maksymalną prędkość?
Zerquix18,
14

Pakiet czujników lm Zainstaluj czujniki lm może być tym, czego szukasz.

I jak zasugerowałeś Fancontrol Zainstaluj fancontrol .

Upewnij się, że wszystkie wentylatory, które próbujesz kontrolować za pomocą oprogramowania, mają 4-stykowe złącze.

„Wentylator obsługujący PWM jest zwykle podłączony do 4-stykowego złącza (wyprowadzenie: masa, + 12V, czujnik, sterowanie).” źródło

Kiedy biegam, pwmconfigco jest częścią fancontrol, dostaję

/usr/sbin/pwmconfig: There are no pwm-capable sensor modules installed Poprowadzi Cię, jeśli masz kompatybilny sprzęt.

Oto kilka skryptów do użycia w połączeniu z wygenerowanym plikiem konfiguracyjnym. Zakładam, że możesz tutaj ustawić wyższą wartość.

label fan1 "Side Fan"
set fan1_min 1000
label fan2 "PSU Fan"
set fan2_min 1000
label fan5 "CPU Fan"
set fan5_min 1000

Ale jak powiedziałem, nie mogę tego przetestować sam, ponieważ mój sprzęt nie obsługuje tego, mogę kontrolować fanów z bios, ale jest to stopień 3. Używam go do tego, aby mój wentylator był wolny i cichy.

pliki craps
źródło
1
/ usr / sbin / pwmconfig: Nie zainstalowano modułów czujników zgodnych z pwm Jakieś inne sposoby?
RobinJ
Zwykle musisz sensors-detectnajpierw uruchomić i załadować moduł, który mówi, aby uzyskać odczyt temperatury i prędkości wentylatora, a następnie pwmconfig może nim manipulować.
psusi
@RobinJ, wygląda na to, że nie masz rozpoznanego / obsługiwanego układu.
psusi
Przyznam ci nagrodę, ponieważ była to najbardziej pouczająca odpowiedź, która mogłaby pomóc większości innych ludzi.
RobinJ,
5

Ok, to może nie być odpowiedź, której szukasz, ale moje problemy z przegrzaniem zostały rozwiązane po usunięciu kurzu przez umieszczenie odkurzacza na wlotach wentylacyjnych. Jeśli doświadczysz przegrzania przy niskich częstotliwościach procesora, warto spróbować. Należy pamiętać, że może małe części mogą zostać wciągnięte. Jeśli masz szczęście, ta metoda może rozwiązać problemy z przegrzewaniem.

Ewald
źródło
Przyznałem nagrodę dla powyższej odpowiedzi, ponieważ była to najbardziej informacyjna, ale mój problem wydaje się być związany ze sprzętem, więc Twoja odpowiedź była najbliższa rozwiązaniu. Ale ponieważ nie jestem wystarczająco pewny siebie, aby zadzierać ze sprzętem mojego laptopa, właśnie przyniosłem go do sklepu, ponieważ wciąż był objęty gwarancją.
RobinJ,
Właśnie tego spróbowałem i zadziałało. Dzięki! Mój wentylator zaczął robić się głośniejszy i miałem jedno lub dwa wyłączenia z powodu przegrzania. Mam nadzieję, że to naprawiło. Wentylator włącza się i wyłącza z normalnym wykorzystaniem procesora, co jest świetne (zanim pozostało włączone przez cały czas).
Cymen
@Cymen Upewnij się, że próżnia jest próżnią antystatyczną, aby być bezpiecznym. Używam puszki sprężonego powietrza do czyszczenia otworów wentylacyjnych, co możesz również zrobić alternatywnie.
user311982
3

Mam Dell Latitude e4200 i następujące działały dla mnie, ponieważ BIOS zastępował ustawienia i8kfan. Początkowa temperatura mojego komputera wynosiła 105 stopni i około 10 minut po wykonaniu tych kroków (ustawienie wentylatora = 2) temperatura procesora / rdzenia spadła do 96 stopni. Ta procedura została już opublikowana przez kogoś:

Krok 1. Pobierz i zainstaluj i8ktutils:

# sudo apt-get install i8kutils

Krok 2. Zastąp BIOS, aby nie zakłócał niestandardowych ustawień wentylatora. Pobierz kod źródłowy i skompiluj program (SMM), aby to zrobić:

# sudo apt-get build-dep i8kutils

następnie:

# apt-get source i8kutils

Krok 3. Wyodrębnij kod źródłowy i cd do katalogu:

# tar xvf i8kutils_1.33.tar.gz

następnie:

# cd i8kutils-1.33/

Krok 4. Skompiluj SMM

For 32-bit systems:

# make SMM

(Output: # gcc -g -O2 -Wall -I. -o smm smm.c.)

For 64-bit systems

# make SMM:

(Output: # gcc -g -O2 -Wall -I. -o smm -m32 smm.c)

Krok 5. Uruchom SMM z parametrami:

# sudo ./smm 30a3

Krok 6. Ustaw prędkości wentylatora:

# i8kfan 2 2 (Listen as this will set fans to maximum speed)

# i8kfan 1 1 (This will set fans to slow speed)

Teraz sterowanie wentylatorem systemu BIOS nie powinno zastępować ustawień wentylatora. To ustawienie pozostanie nawet po ponownym uruchomieniu systemu. Aby przywrócić kontrolę nad BIOS z jakiegoś powodu, wykonaj następującą procedurę:

# sudo ./smm 31a3.

Istnieje również sposób sprawdzenia temperatury za pomocą lm_sensors:

http://www.cyberciti.biz/faq/howto-linux-get-sensors-information/
użytkownik245946
źródło
1
Wypróbowałem to dla najnowszej wersji i8kutils-1.41 na Ubuntu 14.04 i otrzymałem „W pliku dołączonym z /usr/include/stdio.h:27:0, z smm.c: 27: /usr/include/features.h: 374: 25: błąd krytyczny: sys / cdefs.h: Brak takiego pliku lub katalogu "Jednak to rozwiązuje ten problem askubuntu.com/questions/470796/...
k-den