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.