Правильное расположение датчика для использования для контроля температуры в lxpanel?

Монитор температуры в lxpanel (я использую Lubuntu 12.10) автоматически обнаруживает один из моих датчиков, но я хотел бы назначить ему другой.

Вот выходные данные датчиков:

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)

Похоже, что температурный монитор автоматически выбирает temp1, но я бы хотел установить его на Core 0 или Core 2. У него есть строка для " Датчик ", но я не уверен, что это будет.

Я пробовал «Core 0», «coretemp-isa-0000» и «/sys/devices/platform/coretemp.0/temp2_input», но, похоже, ни один из них не работает.

Есть мысли?

7
задан 17 December 2012 в 18:05

2 ответа

Простое решение

1) Выполните эту команду для списка типов доступных thermal_zone устройств:
ls -1 /sys/class/thermal/thermal_zone*/type | xargs -I % sh -c "echo % ; cat %"
Вы должны быть произведены подобные этому:

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

2) Узнайте, в каком Вы нуждаетесь для ЦП, которому он должен иметь тип, подобный x86_pkg_temp. В моем примере, если я хочу использовать x86_pkg_temp Я выберу /sys/class/thermal/thermal_zone2/.

3) Укажите его в настройках "Temperature Monitor", удостоверьтесь, что это завершается наклонной чертой (включенный с "/" в конце, точно так же, как в моем примере):
sample screenshot

Сделанный, это должно работать, как предназначено теперь.


Больше деталей и альтернативного решения

Запущенное использование рабочий стол LUbuntu сегодня и найденный мной считающий ту же проблему.
После ввода по абсолютному адресу вокруг и взламывания открытого исходного кода /plugins/thermal/thermal.c Я нашел некоторые решения. В первую очередь, параметр "Датчик" в опциях называет местоположение его как каталог. Наблюдение получает, оно может обнаружить 3 типа каталогов датчика в автоматическом режиме и ищет их в /proc/acpi/thermal_zone/, /sys/class/thermal/ и /sys/class/hwmon/hwmon[i]/, функции для поиска их вызваны здесь:

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);
}  

Теперь, наблюдение, что происходит, когда Вы устанавливаете конфигурацию, мы видим это:

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);

Из того, что я понял, th->sensor установлен на то, что Вы указываете в поле ввода "Датчика" в опциях.
Сначала существует проверка если auto_sensor установлен, и если это не будет, то это сделает ряд других проверок.
Разрушение этой части, если путь датчика не делает inlude /sys/ в нем он будет использовать proc_get функции, который является устаревшим датчиком типа acpi, который не используется в новых версиях Ubuntu. Иначе, если Ваш путь включает /sys/class/hwmon это будет использовать hwmon функции, и наконец если это - другой тип /sys/*, это будет использовать sysfs тип датчика.
На основе этого мы можем прийти к заключению, что самый легкий путь состоял бы в том, чтобы указать датчик, расположенный в /sys/class/thermal/, например, /sys/class/thermal/thermal_zone1. Если мы пошли бы с /sys/class/hwmon/, это не выбрало бы правильный датчик так или иначе, потому что нет никакого способа указать точный temp[i]_input использоваться, и если мы использовали бы нет /sys/ каталог, это приняло бы нас использующий устаревший acpi/thermal_zone, который не идеален также. Вы могли создать сценарий, который создаст поддельный каталог датчика в Вашей домашней папке с 2 файлами, trip_points и temperature. trip_points был бы похож на это и не имеет значения очень:

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

температура была бы, чтобы быть считанной из текущей температуры и должна быть похожей на это:

temperature: 49 C  

Наконец, Вам был бы нужен сценарий для обновления тех файлов от фактического датчика, Вы хотите использовать и запланировать его для выполнения каждого секунды N. Это решение позволило бы использовать /sys/class/hwmon/hwmon1 вид датчиков и вручную считал значение, которое будет использоваться тепловым индикатором LXpanel. Вы могли также использовать этот метод, чтобы заставить этот тепловой индикатор отобразить другой вид индикаторов, но это походит на трату усилия, полагая, что Вы могли просто использовать другой индикатор вместо этого. Я обновлю с демонстрационным сценарием, чтобы сделать это позже, если это будет required\I, сделает один для меня.

1
ответ дан 17 December 2012 в 18:05

У меня похожая проблема (мой датчик по умолчанию всегда показывает 40.0 ° C), и я не могу изменить этот датчик в мониторе температуры оригинальной lxpanel. Но есть и другое решение: плагин lm-sensor LXDE lxpanel.

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

Его легко скомпилировать (в lubuntu 16.04 я также использовал инструкции по установке Debian) и просто в использовании :

sensors-lxpanel-plugin

0
ответ дан 17 December 2012 в 18:05

Другие вопросы по тегам:

Похожие вопросы: