Display water cooler não mostra temperatura no linux

Olá pessoal, sou novo aqui e no mundo Linux também, estou tentando migrar para o linux, mas minha dificuldade até então é achar um driver para meu watter cooler Aura Ice ARGB, gostaria muito de permanecer no linux, mas isso acabou que me incomodando.

1 curtida

Olá @Marcos_Oliveira1, tudo bem contigo?

Ao que parece este water cooler precisa do seu software para poder exibir as informações corretamente no display, fazendo uma pesquisa rápida não encontrei nenhuma informação sobre como fazer isso funcionar no Linux.

:vulcan_salute:

2 curtidas

isso mesmo, eu usava um software que já somente instalando, até tentei instalar o software usando o wine, mas nao tive resuldado

1 curtida

Recursos específicos, como displays em water coolers ou implementações de iluminação RGB em equipamentos diversos, muitas vezes não têm qualquer tipo de suporte no Linux.

Caso você não encontre alguma solução open source compatível, provavelmente não haverá solução. Dada a maneira como esse tipo de software funciona, dificilmente você conseguirá qualquer sucesso no WINE também.

Isso não é culpa do Linux, mas das empresas que não seguem uma padronização e que optam por não desenvolver aplicativos para o Linux. Por isso, o ideal é sempre consultar a compatibilidade antes da compra.

4 curtidas

Entendi, é que quando comprei estava usando o windows, aí quando mudei de sistema percebi isso, e realmente o wine não vai funcionar mesmo, vi até uns softwares que funciona em alguns, mas somente para leds, que no caso não mede temperatura

2 curtidas

Recentemente montei um PC e escolhi um Water Cooler da Husky. Uso o Archlinux e passei pelo mesmo problema. O fabricante não fornece o software para linux.
Fiz uma engenharia reversa do software do fabricante, conseguir entender como funciona e montei um script que captura a temperatura do CPU e envia para o cooler. A lógica é bem simples, e envolve basicamente conectar na porta usb HID e enviar os bytes para serem exibidos.

Disponibilizei o script nesse repo:
https://github.com/martiniano/cpu-cooler/

7 curtidas

Gostei muito de ver que é em Python, mas ele está sendo rodado como root no systemd, o Python não deve ser vulnerável e se for deve ser atualizado para uma versão corrigida, do contrario o sistema de permissões do GNU/Linux não vai conseguir barrar o ataque. Se vc deve sem preocupar com isso? não os desenvolvedores do Python devem corrigir as vulnerabilidades e os desenvolvedores do Arch enviar os patchs para os usuários.

Ótimo ponto @aguamole.!

Uma opção seria criar uma regra no udev para liberar as permissões do dispositivo para não requerer acesso de root. Dessa forma é possível rodar o script sem necessidade de root:

A exemplo:

SUBSYSTEMS==“usb”, ATTRS{idVendor}==“<VENDOR_ID>”, ATTRS{idProduct}==“PRODUCT_ID>”, MODE=“0666”

Vou atualizar a doc.

2 curtidas

Eu falo vulnerabilidade no interpretador Python, quando coloca no systemd o interpretador roda como root, mas não tem problema se manter o interpretador atualizado, pq a equipe que desenvolve o Python cuida disso…
Eu rodo o Bash(interpretador) aqui como root no systemd, nem esquento com isso, a equipe do Ubuntu cuida disso.

É que linguagem interpretada diferente da compilada a vulnerabilidade é no interpretador e a compilada é no binário.
Interpretada vc programa e esquece, só atualiza o interpretador, já a compilada vc tem que tomar cuidado para não fazer lambança no código fonte a ser compilado.

1 curtida

@aguamole entendo seu ponto, mas acredito que esse problema ocorra apenas se o serviço no systemd for configurado para a pasta /etc/systemd/system. Correto?

É possível configurar o serviço somente ao nível de usuário, colocando na pasta ~/.config/systemd/user

E para habilitar e iniciar basta rodar com:
systemctl --user enable [servico]
systemctl --user start [servico]

Eu entendo que utilizando essa configuração o interpretador python não será executado como root.

O que acha?

1 curtida

Ai eu não sei, nunca tentei rodar serviços no systemd como usuário comum, mas se isso é possível fica mais seguro ainda criando um usuário especifico para esse serviço.
Para saber qual usuário está rodando o serviço é só olhar o gerenciador de processo qual é o usuário do processo pai, ou se o programa Python pai abre processos filhos com elevação de privilegio(pedindo senha).

@martiniano Para verificar com a arvore hierárquica é comando “ps axjf” o UID 0(zero) é o root, todos os processos que aparecerem entre () colchetes pertence ao núcleo do sistema operacional(Linux).

Vc pode invocar “ps axjf | grep [nome]” onde nome é o programa ou processo que deseja olhar, o grep serve para fazer um filtro usando o termo de pesquisa desejado…

Para verificar qual é o UID de um usuário especifico é o comando “id -u [nome]” onde nome é o nome do usuário desejado a verificar.

Com isso acredito que já é suficiente para vc conseguir fazer rastreamento sobre o usuário que o seu programa está sendo executado.

1 curtida

Cara, primeiramente queria agradecer você por ter feito esse script, funcionou perfeitamente aqui no meu Mancer Mystic G1 (tive que alterar apenas duas ou 3 linhas no codigo. Link do fork). Pesquisei bastante e a sua solução foi a mais tranquila de implementar, achei opções como Liquidctl mas não obtive sucesso, agradeço novamente por ter encontrado uma solução antes, eu mesmo teria quebrado a cabeça bastante até conseguir desenvolver algo assim.

2 curtidas