web-dev-qa-db-fra.com

Emplacement correct du capteur à utiliser pour le moniteur de température dans le panneau d'affichage?

Le moniteur de température de lxpanel (j'utilise Lubuntu 12.10) détecte automatiquement l'un de mes capteurs, mais j'aimerais lui en donner un autre.

Voici la sortie des capteurs:

Adapter: Virtual device
temp1:        +26.8°C  (crit = +100.0°C)
temp2:         +0.0°C  (crit = +100.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +58.0°C  (high = +80.0°C, crit = +90.0°C)
Core 2:       +55.0°C  (high = +80.0°C, crit = +90.0°C)

Il semble que le moniteur de température détecte automatiquement temp1, mais j'aimerais le régler sur Core 0 ou Core 2. Il contient une chaîne pour "Sensor" mais je ne suis pas sûr de ce que ce serait.

J'ai essayé "Core 0", "coretemp-isa-0000" et "/sys/devices/platform/coretemp.0/temp2_input" mais aucun ne semble fonctionner.

Des pensées?

7
alexpotato

Solution simple

1) Exécutez cette commande pour répertorier les types de périphériques thermal_zone disponibles:
ls -1 /sys/class/thermal/thermal_zone*/type | xargs -I % sh -c "echo % ; cat %"
Vous devriez obtenir une sortie semblable à celle-ci:

/sys/class/thermal/thermal_zone0/type
acpitz
/sys/class/thermal/thermal_zone1/type
acpitz
/sys/class/thermal/thermal_zone2/type
x86_pkg_temp

2) Trouvez celui dont vous avez besoin. Pour le processeur, il devrait avoir un type similaire à x86_pkg_temp. Dans mon exemple, si je veux utiliser x86_pkg_temp je choisirai /sys/class/thermal/thermal_zone2/.

3) Spécifiez-le dans les paramètres "Temperature Monitor" (Contrôleur de température), assurez-vous qu'il se termine par une barre oblique (entouré de "/" à la fin, comme dans mon exemple):
sample screenshot

Fait, cela devrait fonctionner comme prévu maintenant.


Plus de détails et solution alternative

J'ai commencé à utiliser le bureau LUbuntu aujourd'hui et je me suis retrouvé à chercher le même problème.
Après avoir fouillé et craqué le code source ouvert de /plugins/thermal/thermal.c, j'ai trouvé des solutions. Tout d'abord, le paramètre "Capteur" dans les options fait référence à son emplacement en tant que répertoire. En regardant sur les sources, il peut détecter 3 types de répertoires de capteurs en mode automatique, et les recherche dans /proc/acpi/thermal_zone/, /sys/class/thermal/ et /sys/class/hwmon/hwmon[i]/, fonctions à rechercher qui sont appelées ici:

static void
check_sensors( thermal *th )
{
    // FIXME: scan in opposite order
    find_sensors(th, PROC_THERMAL_DIRECTORY, NULL, proc_get_temperature, proc_get_critical);
    find_sensors(th, SYSFS_THERMAL_DIRECTORY, SYSFS_THERMAL_SUBDIR_PREFIX, sysfs_get_temperature, sysfs_get_critical);
    if (th->numsensors == 0)
        find_hwmon_sensors(th);
    g_info("thermal: Found %d sensors", th->numsensors);
}  

Maintenant, en regardant ce qui se passe quand vous configurez config, nous voyons ceci:

if(th->sensor == NULL) th->auto_sensor = TRUE;
    if(th->auto_sensor) check_sensors(th);
    else if (strncmp(th->sensor, "/sys/", 5) != 0)
        add_sensor(th, th->sensor, th->sensor, proc_get_temperature, proc_get_critical);
    else if (strncmp(th->sensor, "/sys/class/hwmon/", 17) != 0)
        add_sensor(th, th->sensor, th->sensor, sysfs_get_temperature, sysfs_get_critical);
    else
        add_sensor(th, th->sensor, th->sensor, hwmon_get_temperature, hwmon_get_critical);

D'après ce que j'ai compris, th->sensor est défini sur ce que vous spécifiez dans le champ de saisie "Capteur" dans les options.
Tout d’abord, il vérifie si auto_sensor est défini, et si ce n’est pas le cas, il effectuera une série d’autres contrôles.
En décomposant cette partie, si votre chemin de capteur n'inclut pas /sys/, il utilisera proc_get, qui est un capteur de type acpi obsolète qui n'est pas utilisé dans les nouvelles versions d'Ubuntu. . Sinon, si votre chemin inclut /sys/class/hwmon, il utilisera les fonctions hwmon et enfin, s'il s'agit d'un autre type de /sys/*, il utilisera le type de capteur sysfs.
Sur cette base, nous pouvons conclure que le moyen le plus simple serait de spécifier un capteur situé dans /sys/class/thermal/, par exemple /sys/class/thermal/thermal_zone1. Si nous allions avec /sys/class/hwmon/, il ne choisirait pas le bon capteur car il n’existe aucun moyen de spécifier le temp[i]_input exact à utiliser, et si nous utilisions un répertoire non /sys/, il supposerait que nous utilisons acpi/thermal_zone obsolète, ce qui n’est pas idéal non plus. Vous pouvez créer un script qui créera un faux répertoire de capteurs dans votre dossier de départ avec 2 fichiers, trip_points et temperature. trip_points ressemblerait à ceci et n'a pas beaucoup d'importance:

critical (S5): 110 C
passive: 105 C: tc1=2 tc2=10 tsp=100 devices=0xdf72e380
active[0]: 48 C: devices=0xc157fec0  

temperature devrait être lu pour la température actuelle et devrait ressembler à ceci:

temperature: 49 C  

Enfin, vous auriez besoin d’un script pour mettre à jour les fichiers à partir du capteur que vous souhaitez utiliser et le programmer pour s’exécuter toutes les N secondes. Cette solution permettrait d'utiliser /sys/class/hwmon/hwmon1 type de capteurs et de lire manuellement la valeur devant être utilisée par l'indicateur thermique LXpanel. Vous pouvez également utiliser cette méthode pour faire en sorte que cet indicateur thermique affiche d'autres types d'indicateurs, mais cela semble être une perte de temps, étant donné que vous pourriez simplement utiliser un autre indicateur à la place. Je mettrai à jour avec un exemple de script pour le faire plus tard, si cela est nécessaire\Je vais en créer un pour moi-même.

1
Ethuil UI

J'ai un problème similaire (mon capteur par défaut indique toujours 40,0 ° C) et je ne peux pas modifier ce capteur dans le moniteur de température d'origine de Lxpanel. Mais il existe une autre solution: lm-sensors LXDE lxpanel plugin.

https://github.com/danamlund/sensors-lxpanel-plugin

Il est simple à compiler (dans lubuntu 16.04, j’ai également utilisé les instructions d’installation de debian) et simple à utiliser:

sensors-lxpanel-plugin

0
federk