Localização correta do sensor a ser usada para o Monitor de Temperatura no lxpanel?

7

O Monitor de Temperatura no lxpanel (eu estou usando o Lubuntu 12.10) está detectando automaticamente um dos meus sensores, mas eu gostaria de dar um alternativo.

Aqui está a saída dos sensores:

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)

Parece que o Monitor de Temperatura está captando temp1 automaticamente, mas eu gostaria de configurá-lo para Core 0 ou Core 2. Ele tem uma string para "Sensor", mas não tenho certeza do que seria.

Eu testei "Core 0", "coretemp-isa-0000" e "/sys/devices/platform/coretemp.0/temp2_input", mas nenhum parece funcionar.

Alguma opinião?

    
por alexpotato 17.12.2012 / 15:05

2 respostas

1

Solução simples

1) Execute este comando para listar os tipos de dispositivos thermal_zone disponíveis:
ls -1 /sys/class/thermal/thermal_zone*/type | xargs -I % sh -c "echo % ; cat %"
Você deve obter uma saída semelhante a esta:

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

2) Descubra qual deles você precisa, pois a CPU deve ter um tipo similar a x86_pkg_temp . No meu exemplo, se eu quiser usar x86_pkg_temp , escolherei /sys/class/thermal/thermal_zone2/ .

3) Especifique-o nas configurações do "Monitor de Temperatura", certifique-se de que ele seja terminado com barra (incluído com "/" no final, assim como no meu exemplo):

Feito,devefuncionarcomopretendidoagora.

Maisdetalhesesoluçãoalternativa

ComeceiausarodesktopLUbuntuhojeemeviolhandoomesmoproblema.
Depoisdebisbilhotaredecifrarocódigo-fonteabertode/plugins/thermal/thermal.c,encontreialgumassoluções.Primeirodetudo,oparâmetro"Sensor" nas opções refere-se à localização do mesmo como diretório. Procurando por fontes, ele pode detectar 3 tipos de diretórios de sensores no modo automático, e procura por eles em /proc/acpi/thermal_zone/ , /sys/class/thermal/ e /sys/class/hwmon/hwmon[i]/ , funções para procurar aqueles que são chamados aqui:

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

Agora, observando o que acontece quando você configura a configuração, vemos isso:

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

Pelo que entendi, th->sensor está definido como o que você especifica no campo de entrada "Sensor" nas opções.
Primeiro, verifique se auto_sensor está definido e, se não estiver, ele fará uma série de outras verificações. Quebrando essa parte, se o caminho do seu sensor não incluir /sys/ , ele usará proc_get functions, que é um tipo de sensor acpi desatualizado que não é usado em novas versões do Ubuntu. Caso contrário, se seu caminho incluir /sys/class/hwmon , ele usará hwmon functions e, finalmente, se for outro tipo de /sys/* , ele usará sysfs type de sensor.
Com base nisso, podemos concluir que a maneira mais fácil seria especificar o sensor localizado em /sys/class/thermal/ , por exemplo, /sys/class/thermal/thermal_zone1 . Se usássemos /sys/class/hwmon/ , ele não escolheria o sensor certo, porque não há como especificar o temp[i]_input exato a ser usado, e se usássemos o diretório não /sys/ , assumiríamos que usamos% desatualizadosacpi/thermal_zone, que também não é ideal. Você pode criar um script que criará o diretório do sensor falso na sua pasta pessoal com 2 arquivos, trip_points e temperature . trip_points ficaria assim e não importa muito:

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

temperature seria uma a ser lida para a temperatura atual e deve ficar assim:

temperature: 49 C  

Por fim, você precisará de um script para atualizar esses arquivos do sensor real que deseja usar e programá-lo para executar cada N segundos. Essa solução permitiria usar /sys/class/hwmon/hwmon1 de tipos de sensores e ler manualmente o valor a ser usado pelo indicador térmico LXpanel. Você também pode usar este método para fazer este indicador térmico exibir outro tipo de indicadores, mas isso parece um desperdício de esforço, considerando que você poderia simplesmente usar outro indicador. Vou atualizar com script de exemplo para fazer isso depois, se for necessário \ eu farei um para mim mesmo.

    
por Ethuil UI 22.07.2017 / 18:42
0

Eu tenho o problema similar (meu sensor padrão sempre mostra 40.0 ° C) e não posso alterar este sensor no Monitor de Temperatura do lxpanel original. Mas há outra solução: lm-sensors LXDE lxpanel plugin.

link

É simples de compilar (no lubuntu 16.04 eu também usei instruções de instalação do Debian) e simples de usar:

    
por federk 31.05.2017 / 12:24