Управление вентилятором на ноутбуке MSI: нет датчиков с поддержкой ШИМ?

8

Я пытаюсь контролировать скорость вентилятора моего ноутбука MSI GS60-2PC на Ubuntu 16.04.

Но pwmconfigсообщает, что

There are no pwm-capable sensors modules installed

Я почти уверен, что этими фанатами можно управлять, потому что некоторые утилиты в Windows могут ими управлять.

Что я сделал

  1. Я запустил sensors-detect(с правами root) вот так:

    yes | sensors-detect
    

Кажется, только обнаруживает "coretemp". Вот полный результат .

  1. Тогда pwmconfig(как корень):

    pwmconfig
    

И я получаю известное сообщение There are no pwm-capable sensors modules installed .

  1. Я пробовал следующие вещи, которые не работали:
    • Добавление в grub (и затем перезагрузка): acpi_osi=Linux
    • Добавление в grub (и затем перезагрузка): acpi_osi=!Windows 2012
    • Добавление в grub (и затем перезагрузка): acpi_enforce_resources=lax

Что я получаю, когда запускаю sensorsкоманду

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)

РЕДАКТИРОВАТЬ: Вот результат lspci.

ElectronWill
источник

Ответы:

5

Мне удалось получить некоторый контроль над вентилятором в Windows с помощью «Инструментов управления вентиляторами» от Pherein, используя прилагаемый профиль GS660 для моего ноутбука MSI GS60 6QC. Поэтому я сделал небольшой скрипт на python, который является Linux-эквивалентом Pherein's «Fan Profile Applier.exe»:

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

Вот входной файл, который я сейчас использую в качестве аргумента, это файл Quiet.rw, созданный с помощью инструмента 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

В последней версии встроенного ПО EC скорость вращения вентилятора фактически не изменяется между 0 и 3000 об / мин.

EkoLi
источник
Вот Это Да ! Я только что попробовал, и скорость вентилятора изменилась, хотя он не такой тихий, как раньше. Мне очень интересно :-) Несколько вопросов: изменения сбрасываются при перезагрузке ПК, не так ли? Учитывает ли каждый датчик или только процессор?
ElectronWill
Я только что нашел здесь профиль для GS60, который, кажется, работает лучше, чем профиль GX660, который вы предоставили! На моей машине хотя бы. Может быть, у вас другая версия прошивки, которая делает профиль GX660 лучше? Насколько я понимаю, различия смещены: профиль, который я нашел, начинается с 0x69, а не с 0x6A.
ЭлектронБудет
0

Этот ноутбук использует чипсет Intel HM87. Мобильная версия этого чипсета не включает аппаратное обеспечение ШИМ, поэтому вентиляторы не могут управляться операционной системой. Если возможно какое-либо управление вентилятором, то это будет через BIOS.

Руководство по эксплуатации MSI G60 гласит, что в некоторых моделях этого ноутбука есть кнопка «повышения охлаждения», которая контролирует скорость вращения вентилятора. Это также показывает, что нажатие клавиш Fn + F5 циклически переключает ноутбук в разные режимы управления питанием.

Стив Ром
источник
Странно: MSI утверждает, что это программное обеспечение способно «контролировать» фанатов. Как это сделать, если это невозможно? ... Может, прошивает EC прошивку?
ElectronWill
@Electronwill Это не прикладная программа, это особенность BIOS. Я обновил свой ответ.
Стив Ром
Под «кнопкой повышения температуры» вы имеете в виду эту кнопку ? Кажется, у меня на GS60 нет такой кнопки кулера. Эта кнопка доступна на GE60 и GE70.
ElectronWill
Какая жалость. В руководстве к вашему ноутбуку сказано, что оно доступно на некоторых моделях.
Стив Ром
Интересно, где вы нашли руководство? На официальном сайте MSI нет ни одной кнопки кулера. Также не краткое руководство . В любом случае, вы правы насчет чипсета, поэтому я приму ваш ответ.
ElectronWill