web-dev-qa-db-fra.com

Contrôle du ventilateur sur un ordinateur portable MSI: pas de capteurs compatibles pwm?

J'essaie de contrôler la vitesse du ventilateur de mon ordinateur portable MSI GS60-2PC sous Ubuntu 16.04.

Mais pwmconfig signale que

There are no pwm-capable sensors modules installed

Je suis sûr que ces ventilateurs peuvent être contrôlés, car certaines utilisations de Windows peuvent les contrôler.

Ce que j'ai fait

  1. J'ai lancé sensors-detect (en tant que root) comme ceci:

    yes | sensors-detect
    

Il semble ne détecter que "coretemp". Voici le résultat complet .

  1. Puis pwmconfig (en tant que root):

    pwmconfig
    

Et je reçois le fameux messageThere are no pwm-capable sensors modules installed.

  1. J'ai essayé les choses suivantes, qui n'ont pas fonctionné:
    • Ajouter à grub (puis redémarrer): acpi_osi=Linux
    • Ajouter à grub (puis redémarrer): acpi_osi=!Windows 2012
    • Ajouter à grub (puis redémarrer): acpi_enforce_resources=lax

Ce que je reçois lorsque j'exécute la commande 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)

EDIT: Voici le résultat de lspci.

8
ElectronWill

J'ai réussi à contrôler le ventilateur sous Windows avec les "Outils de contrôle du ventilateur" de Pherein, en utilisant le profil GS660 inclus pour mon ordinateur portable MSI GS60 6QC. J'ai donc créé un petit script python qui est l'équivalent Linux de "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))

Voici le fichier d'entrée que j'utilise actuellement en tant qu'argument, c'est le fichier Quiet.rw généré avec l'outil 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

Avec la dernière version du micrologiciel EC, la vitesse du ventilateur est nulle entre 0 et 3 000 tr/min.

5
EkoLi

Cet ordinateur portable utilise le chipset Intel HM87. La version mobile de ce jeu de puces n'inclut pas de matériel PWM, de sorte que les ventilateurs ne peuvent pas être contrôlés par le système d'exploitation. Si le contrôle du ventilateur est possible, ce sera via le BIOS.

Le manuel du propriétaire pour le MSI G60 indique que certains modèles de cet ordinateur portable ont un bouton "Cooler Boost" qui contrôle la vitesse du ventilateur. Il montre également que les touches Fn + F5 permettent à l’ordinateur portable d’utiliser différents modes de gestion de l’alimentation.

0
Steve Roome