Sterowanie wentylatorem w laptopie MSI: brak czujników obsługujących PWM?

8

Próbuję kontrolować prędkość wentylatora mojego laptopa MSI GS60-2PC na Ubuntu 16.04.

Ale pwmconfigzgłasza to

There are no pwm-capable sensors modules installed

Jestem prawie pewien, że tymi fanami można sterować, ponieważ niektóre zastosowania w systemie Windows mogą nimi kontrolować.

Co ja zrobiłem

  1. Uruchomiłem sensors-detect(jako root) w ten sposób:

    yes | sensors-detect
    

Wydaje się, że wykrywa tylko „rdzeń”. Oto pełny wynik .

  1. Następnie pwmconfig(jako root):

    pwmconfig
    

I dostaję słynne przesłanie There are no pwm-capable sensors modules installed .

  1. Próbowałem następujących rzeczy, które nie działały:
    • Dodanie do gruba (a następnie ponowne uruchomienie): acpi_osi=Linux
    • Dodanie do gruba (a następnie ponowne uruchomienie): acpi_osi=!Windows 2012
    • Dodanie do gruba (a następnie ponowne uruchomienie): acpi_enforce_resources=lax

Co otrzymam po uruchomieniu sensorspolecenia

acpitz-virtual-0
Adapter: Virtual device
temp1:        +27.8°C  (crit = +105.0°C)
temp2:        +29.8°C  (crit = +105.0°C)
temp3:        +50.0°C  (crit = +100.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +48.0°C  (high = +84.0°C, crit = +100.0°C)
Core 0:         +48.0°C  (high = +84.0°C, crit = +100.0°C)
Core 1:         +44.0°C  (high = +84.0°C, crit = +100.0°C)
Core 2:         +46.0°C  (high = +84.0°C, crit = +100.0°C)
Core 3:         +44.0°C  (high = +84.0°C, crit = +100.0°C)

EDYCJA: Oto wynik lspci.

ElectronWill
źródło

Odpowiedzi:

5

Udało mi się mieć kontrolę nad wentylatorem w systemie Windows za pomocą „Narzędzi sterowania wentylatorem” firmy Pherein, używając dołączonego profilu GS660 dla mojego laptopa MSI GS60 6QC. Zrobiłem więc mały skrypt w języku Python, który jest odpowiednikiem „Fan Profile Applier.exe” Phereina w systemie Linux:

#!/usr/bin/env python

import os
import sys

EC_IO_FILE="/sys/kernel/debug/ec/ec0/io"

if not os.path.exists(EC_IO_FILE):
        os.system("modprobe ec_sys write_support=1")

def ec_write(addr,value):
    with open(EC_IO_FILE,"rb") as f:
        f.seek(addr)
        old_value=ord(f.read(1))
    if (value != old_value):
        print("                %3d => %3d" % (old_value, value))
        with open(EC_IO_FILE,"wb") as f:
            f.seek(addr)
            f.write(bytearray([value]))
    else:
        print("                     = %3d" % value)

for line in open(sys.argv[1]).readlines():
    print(line.strip())
    if line.startswith(">WEC "):
        addr,value=line.split()[1:3]
        ec_write(int(addr,0), int(value,0))

Oto plik wejściowy, którego obecnie używam jako argument, to plik Quiet.rw wygenerowany za pomocą narzędzia Pherein:

-Profile Name: Quiet
[Temperatures_1]
>WEC 0x6A 0x2f
>WEC 0x6B 0x35
>WEC 0x6C 0x43
>WEC 0x6D 0x50
>WEC 0x6E 0x5A
>WEC 0x6F 0x5F
>WEC 0x70 0x64
----
[FanSpeeds_1]
>WEC 0x72 0x00
>WEC 0x73 0x10
>WEC 0x74 0x3E
>WEC 0x75 0x45
>WEC 0x76 0x4C
>WEC 0x77 0x54
>WEC 0x78 0x5B
----
[Temperatures_2]
>WEC 0x82 0x37
>WEC 0x83 0x41
>WEC 0x84 0x4B
>WEC 0x85 0x55
>WEC 0x86 0x5A
>WEC 0x87 0x5D
>WEC 0x88 0x66
----
[FanSpeeds_2]
>WEC 0x8A 0x0
>WEC 0x8B 0x3B
>WEC 0x8C 0x46
>WEC 0x8D 0x54
>WEC 0x8E 0x5B
>WEC 0x8F 0x5B
>WEC 0x90 0x5B
----
>RwExit

W najnowszym oprogramowaniu układowym EC nie ma prędkości pomiędzy 0 a 3000 obr / min dla prędkości wentylatora.

EkoLi
źródło
Łał ! Właśnie go wypróbowałem, a prędkość wentylatora zmieniła się, chociaż nie jest tak cicho niż wcześniej. Jestem bardzo zainteresowany :-) Kilka pytań: zmiany resetują się po ponownym uruchomieniu komputera, prawda? Czy bierze pod uwagę każdy czujnik czy tylko procesor?
ElectronWill
Właśnie znalazłem tutaj profil dla GS60, który wydaje się działać lepiej niż profil GX660, który podałeś! Przynajmniej na mojej maszynie. Może masz inną wersję oprogramowania, która sprawia, że ​​profil GX660 działa lepiej? O ile rozumiem, różnice są przesunięciami: profil, który znalazłem, zaczyna się od 0x69, a nie 0x6A.
ElectronWill
0

Ten laptop korzysta z mikroukładu Intel HM87. Mobilna wersja tego chipsetu nie zawiera sprzętu PWM, więc wentylatory nie mogą być kontrolowane przez system operacyjny. Jeśli jakakolwiek kontrola wentylatora jest możliwa, będzie to możliwe poprzez BIOS.

Instrukcja obsługi MSI G60 stwierdza, że ​​niektóre modele tego laptopa mają przycisk „cooler boost”, który kontroluje prędkość wentylatora. Pokazuje również, że naciśnięcie klawiszy Fn + F5 powoduje przełączenie laptopa w różne tryby zarządzania energią.

Steve Roome
źródło
Dziwne: MSI twierdzi, że to oprogramowanie jest w stanie „kontrolować” fanów. Jak to zrobić, jeśli jest to niemożliwe? ... Może miga oprogramowanie wewnętrzne EC?
ElectronWill
@Electronwill To nie aplikacja to funkcja systemu BIOS. Zaktualizowałem swoją odpowiedź.
Steve Roome,
Przez „chłodnicy doładowania przycisk”, masz na myśli ten przycisk ? Wygląda na to, że nie mam tak fajnego przycisku na moim GS60. Ten przycisk jest dostępny w GE60 i GE70.
ElectronWill
Szkoda. Instrukcja obsługi laptopa mówi, że jest dostępna w niektórych modelach.
Steve Roome,
Zastanawiam się, gdzie znalazłeś instrukcję. Oficjalny, na stronie MSI , nie wspomina o żadnym chłodnym przycisku. Krótki przewodnik też nie . W każdym razie masz rację co do chipsetu, więc przyjmuję twoją odpowiedź.
ElectronWill