Einfache Lösung
1) Führen Sie diesen Befehl aus, um die Typen der verfügbaren Thermal_Zone-Geräte aufzulisten:
ls -1 /sys/class/thermal/thermal_zone*/type | xargs -I % sh -c "echo % ; cat %"
Sie sollten eine ähnliche Ausgabe erhalten:
/sys/class/thermal/thermal_zone0/type
acpitz
/sys/class/thermal/thermal_zone1/type
acpitz
/sys/class/thermal/thermal_zone2/type
x86_pkg_temp
2) Finden Sie heraus, welche Sie benötigen, für die CPU sollte es einen ähnlichen Typ haben x86_pkg_temp
. In meinem Beispiel x86_pkg_temp
werde ich auswählen , wenn ich verwenden möchte /sys/class/thermal/thermal_zone2/
.
3) Geben Sie es in den Einstellungen für "Temperaturüberwachung" an und stellen Sie sicher, dass es mit einem Schrägstrich abgeschlossen ist (wie in meinem Beispiel am Ende mit "/" eingeschlossen):
Fertig, es sollte jetzt wie vorgesehen funktionieren.
Weitere Details und alternative Lösung
Begann heute mit der Verwendung von LUbuntu Desktop und stellte fest, dass ich das gleiche Problem hatte.
Nachdem /plugins/thermal/thermal.c
ich mich umgesehen und Open Source Code geknackt hatte, fand ich einige Lösungen. Zunächst bezieht sich der Parameter "Sensor" in den Optionen auf den Speicherort als Verzeichnis. Suchen Sie auf Quellen kann es drei Arten von Sensor Verzeichnissen im Automatik - Modus erkennen und sieht für sie in /proc/acpi/thermal_zone/
, /sys/class/thermal/
und /sys/class/hwmon/hwmon[i]/
, Funktionen zu suchen , die hier genannt werden:
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);
}
Wenn wir uns nun ansehen, was passiert, wenn Sie die Konfiguration festlegen, sehen wir Folgendes:
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);
Soweit ich verstanden habe, th->sensor
wird auf das eingestellt, was Sie im Eingabefeld "Sensor" in den Optionen angegeben haben.
Zuerst wird auto_sensor
geprüft , ob gesetzt ist, und wenn dies nicht der Fall ist, werden eine Reihe anderer Prüfungen durchgeführt.
Wenn Ihr Sensorpfad nicht /sys/
darin enthalten ist, werden proc_get
Funktionen verwendet, bei denen es sich um veraltete Sensoren vom Typ ACPI handelt, die in neuen Versionen von Ubuntu nicht verwendet werden. Andernfalls werden, wenn Ihr Pfad enthält /sys/class/hwmon
, hwmon
Funktionen verwendet, und wenn es sich um einen anderen Sensortyp handelt /sys/*
, wird sysfs
der Sensortyp verwendet.
Basierend auf , dass wir der einfachste Weg Sensor befand angeben würde schließen können /sys/class/thermal/
, zum Beispiel /sys/class/thermal/thermal_zone1
. Wenn wir mitgehen würden/sys/class/hwmon/
Es würde sowieso nicht den richtigen Sensor auswählen, da es keine Möglichkeit gibt, genau anzugeben temp[i]_input
, was verwendet werden soll, und wenn wir kein /sys/
Verzeichnis verwenden würden, würde es davon ausgehen, dass wir veraltet verwenden acpi/thermal_zone
, was ebenfalls nicht ideal ist. Sie könnten Skript erstellen, das gefälschte Sensor - Verzeichnis in Ihrem Home - Ordner mit 2 Dateien erstellen wird, trip_points
und temperature
.
trip_points würde so aussehen und macht nicht viel aus:
critical (S5): 110 C
passive: 105 C: tc1=2 tc2=10 tsp=100 devices=0xdf72e380
active[0]: 48 C: devices=0xc157fec0
Die Temperatur sollte für die aktuelle Temperatur abgelesen werden und sollte folgendermaßen aussehen:
temperature: 49 C
Schließlich benötigen Sie ein Skript, um die Dateien des tatsächlich verwendeten Sensors zu aktualisieren und die Ausführung alle N Sekunden zu planen. Diese Lösung würde die Verwendung /sys/class/hwmon/hwmon1
von Sensoren und manuell gelesenen Werten ermöglichen, die von der LXpanel-Thermoanzeige verwendet werden können. Sie können diese Methode auch verwenden, um diesen thermischen Indikator andere Arten von Indikatoren anzeigen zu lassen. Dies scheint jedoch eine Verschwendung von Aufwand zu sein, wenn Sie stattdessen einfach einen anderen Indikator verwenden. Ich werde mit einem Beispielskript aktualisieren, um es später zu tun, wenn es erforderlich ist. Ich werde eines für mich selbst erstellen.