Controle de ventilador no laptop MSI: sem sensores compatíveis com pwm?

8

Estou tentando controlar a velocidade do ventilador do meu laptop MSI GS60-2PC no Ubuntu 16.04.

Mas pwmconfigrelata que

There are no pwm-capable sensors modules installed

Tenho certeza de que esses fãs podem ser controlados, porque alguns utilitários no Windows podem controlá-los.

O que eu fiz

  1. Eu executei sensors-detect(como root) assim:

    yes | sensors-detect
    

Parece detectar apenas "coretemp". Aqui está o resultado completo .

  1. Então pwmconfig(como root):

    pwmconfig
    

E eu recebo a famosa mensagem There are no pwm-capable sensors modules installed .

  1. Eu tentei o seguinte, que não funcionou:
    • Adicionando ao grub (e depois reiniciando): acpi_osi=Linux
    • Adicionando ao grub (e depois reiniciando): acpi_osi=!Windows 2012
    • Adicionando ao grub (e depois reiniciando): acpi_enforce_resources=lax

O que recebo quando executo o sensorscomando

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)

EDIT: Aqui está o resultado de lspci.

ElectronWill
fonte

Respostas:

5

Consegui controlar o ventilador no Windows com as "Ferramentas de controle do ventilador" da Pherein, usando o perfil GS660 incluído no meu laptop MSI GS60 6QC. Então, criei um pequeno script python que é o equivalente do Linux ao "Fan Profile Applier.exe" de Pherein:

#!/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))

Aqui está o arquivo de entrada que atualmente uso como argumento, é o arquivo Quiet.rw gerado com a ferramenta 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

Com o firmware mais recente da CE, na verdade não existe entre 0 e 3000 RPM para a velocidade do ventilador.

EkoLi
fonte
Uau ! Eu apenas tentei e a velocidade do ventilador mudou, mesmo que não esteja tão mais silenciosa do que antes. Estou muito interessado :-) Algumas perguntas: as alterações são redefinidas quando o PC é reiniciado, não é? Será que leva em consideração todos os sensores ou apenas a CPU?
ElectronWill
Acabei de encontrar aqui um perfil para o GS60 que parece funcionar melhor que o perfil do GX660 que você forneceu! Na minha máquina, pelo menos. Talvez você tenha uma versão de firmware diferente que faça o perfil do GX660 funcionar melhor? Pelo que entendi, as diferenças são as compensações: o perfil que encontrei começa em 0x69, não em 0x6A.
ElectronWill
0

Este laptop usa o chipset Intel HM87. A versão móvel deste chipset não inclui hardware PWM, portanto os ventiladores não podem ser controlados pelo sistema operacional. Se qualquer controle de ventilador for possível, será através do BIOS.

O manual do proprietário do MSI G60 afirma que alguns modelos deste laptop possuem um botão "cooler boost" que controla a velocidade do ventilador. Também mostra que pressionar Fn + F5 alterna o laptop através de diferentes modos de gerenciamento de energia.

Steve Roome
fonte
Estranho: a MSI alega que este software é capaz de "controlar" os fãs. Como isso acontece se for impossível? ... Talvez ele pisque o firmware da CE?
ElectronWill
@Electronwill Este software não é um aplicativo do BIOS. Eu atualizei minha resposta.
Steve Roome 06/06
Por "botão de reforço mais frio", você quer dizer esse botão ? Parece que não tenho um botão tão mais frio no meu GS60. Este botão está disponível no GE60 e GE70.
ElectronWill
É uma pena. O manual do seu laptop diz que está disponível em alguns modelos.
9786 Steve Roome #
Gostaria de saber onde você encontrou o manual. O oficial, no site da MSI , não menciona nenhum botão mais frio. Nem o guia rápido . De qualquer forma, você está certo sobre o chipset, então aceitarei sua resposta.
ElectronWill