Repository navigation
Releases
Releases · mateusconrad/FanPilot
FanPilot 0.1.0
Primeira versão publicada, como pre-release: parte do que ela faz ainda não foi conferida em todas as placas
(veja a verificação em hardware pendente).
Adicionado
- Painel web servido pelo próprio PC, feito para o celular: temperaturas, potência, clocks, gráfico dos últimos
10 minutos, editor de curvas dos fans da placa-mãe (arrastando os pontos), modo fixo, Turbo e o fan da GPU. - Acesso pela rede só depois de parear o aparelho com um QR code exibido no PC.
- Placas Gigabyte pelo Gigabyte Control Center, com as curvas gravadas no chip; as outras placas (ASUS, MSI,
ASRock…) pelo LibreHardwareMonitor e o driver PawnIO, que o FanPilot oferece instalar pelowinget. - GPU NVIDIA pelo driver (NVML); AMD e Intel Arc pelo LibreHardwareMonitor.
- Na Gigabyte com o PawnIO instalado, o card e o gráfico da CPU mostram a temperatura dos núcleos (pacote) em vez da
do socket da placa; sem o PawnIO, o card diz que é o socket e como ver os núcleos. - Nas placas em que o FanPilot executa as curvas (LibreHardwareMonitor), a resposta de cada curva: Rápida,
Equilibrada ou Suave. A temperatura é suavizada, o fan só desacelera depois de o PC esfriar alguns graus e a
velocidade muda aos poucos, sem o sobe e desce a cada pico de carga. Curvas salvas antes disso ficam com a
Equilibrada. No último ponto da curva, o fan vai a 100% na hora. FanPilot.exe --diagnose: relatório só de leitura para placas ainda não testadas, com a versão do GCC e se ela é
compatível. Sai sem números de série nem UUIDs, pronto para anexar numa issue, e começa com o link do formulário
de relato já preenchido.- Modo serviço do Windows (
--service), com os dados em outra pasta (--data) e a importação de uma instalação
portátil (--import-data): a base do instalador. Como serviço, a pasta de dados fica só para o sistema e os
Administradores, e avisos e erros vão também para o log de eventos. - Nas placas em que o FanPilot executa as curvas, a partida devolve todos os fans à BIOS antes de reaplicar as curvas
salvas: um FanPilot que caiu não deixa uma velocidade velha para trás. - Alertas de fan parado (bomba parada é crítico), temperatura crítica da CPU ou da GPU, placa sem responder e fan
devolvido à BIOS por segurança: no painel e, se configurado, no ntfy ou no Telegram, no máximo uma vez a cada
10 min por alerta. Nada sai do PC sem um destino configurado. - Perfis globais Silencioso, Padrão e Performance, com volta exata à configuração pessoal; o Turbo funciona por cima
de qualquer perfil, e as bombas ficam de fora. Oturbo.jsonviraglobal-mode.jsonsozinho. - Um nome seu para cada fan, mostrado no painel e nos gráficos com o original ao lado.
- Editor de curvas pelo teclado e pelo leitor de tela: cada ponto é anunciado com a temperatura e a velocidade e anda
pelas setas (com Shift, de 5 em 5). Tocar num ponto abre o ajuste fino, de 1 °C ou 1% por toque (segurar repete).
Esc fecha o editor e o foco volta ao fan; fechar com uma mudança não aplicada pergunta antes. Botões e pontos do
editor com pelo menos 44 px para o dedo. - Bombas de watercooler reconhecidas pelo nome (ou marcadas no editor) e protegidas: sempre 100% ou uma velocidade
mínima, valendo para o editor, o Turbo e as curvas salvas. - Formulários de relato de compatibilidade e de problemas no GitHub, e a lista das placas testadas
(docs/COMPATIBILITY.md). FanPilot.exe --hardware-test [--fan N]: roteiro automático de verificação na placa real, que grava
data\hwtest-<data>.mde devolve tudo como estava.FanPilot.exe --version; a versão também aparece na primeira linha do log, no--diagnosee no rodapé do painel.- Releases no GitHub com o zip, o
SHA256SUMS.txte estas notas; CI compilando e testando cada push. - Texto secundário do painel com contraste de pelo menos 4,5:1 nos temas claro e escuro (conferido pelo axe-core).
- Nas placas em que o FanPilot executa as curvas, um fan pode seguir a GPU, ou a maior entre a CPU e a GPU: os fans
do gabinete aceleram quando a GPU esquenta num jogo, mesmo com a CPU folgada. - Modo painel (
/panel): uma tela só de leitura e em tela cheia para um celular ou tablet ao lado do monitor ou uma
telinha de gabinete, legível de longe, com opção de manter a tela ligada e proteção para telas OLED. - Histórico em disco: os gráficos mostram também a última hora, as últimas 24 horas e os últimos 7 dias, e o que
foi gravado continua lá depois de reiniciar o FanPilot. Nos períodos longos, a dica mostra a média e o máximo de
cada ponto. Ocupa cerca de 1 MB por dia emdata\history\; a retenção (7 dias por padrão) muda noconfig.json
(historyDays; 0 desliga). - Integrações só de leitura: o Prometheus lê o
/metricse o Home Assistant (sensor REST) lê o/api/v1/sensors,
um JSON estável, com tokens criados na página/pairdo PC e revogáveis a qualquer momento. Ou, configurado no
painel, o FanPilot publica num broker MQTT e as entidades aparecem sozinhas no Home Assistant. - Painel em inglês e em português: o idioma segue o do navegador e pode ser trocado no rodapé (a escolha fica no
aparelho); números e horas seguem o idioma. Erros, avisos e alertas do FanPilot também, e os alertas enviados ao ntfy
e ao Telegram saem no idioma do painel em que foram configurados. O console, o--diagnosee o--hardware-test
seguem o idioma do Windows, e o log é sempre em inglês, para buscar uma mensagem em qualquer issue. README e guia de
teste em inglês e em português, e formulários de issue em inglês com os rótulos em português. - Notebooks Uniwill/Tongfang (como o Avell G1513), em teste: o fan do notebook entra como mais um fan do caminho
LibreHardwareMonitor, pela mesma interface WMI do app da fabricante, sem driver. O EC só aceita 5 níveis e o boost,
então a curva vira o nível que resfria pelo menos o que ela pede; ao fechar, o fan volta para o controle do EC.
Interface no terminal
- A janela do FanPilot mostra as temperaturas e os coolers (RPM e porcentagem) com barras e gráficos dos últimos 10
minutos, o endereço do painel e as teclaso(abrir no navegador),t(Turbo),l(log) eq;--logvolta ao
log rolando.FanPilot --tuimostra a mesma tela ligada a um FanPilot que já roda, sem Administrador, no Windows e
no Linux (#36).
Partida sem janela
- O
autostart.ps1passa a instalar o FanPilot como serviço do Windows: sobe com o PC, antes do logon e sem janela,
volta sozinho se fechar e traz a pastadata\da versão portátil; "FanPilot" no menu Iniciar abre a tela do
terminal sem UAC, e oFanPilot.exeaberto com o serviço rodando mostra a tela dele. No Linux, oinstall.shpõe o
fanpilotno PATH e "FanPilot" no menu de aplicativos. A tarefa agendada doautostart.ps1antigo é removida
(#37).
Ícone na bandeja
- O
autostart.ps1também põe o FanPilot na bandeja do Windows a cada logon, sem UAC: o ícone mostra no tooltip a
temperatura da CPU e da GPU e os alertas ativos, ganha um ponto laranja com alerta e cinza quando o FanPilot não
responde; um clique abre a tela do terminal, e o menu abre o painel no navegador. Fechar a tela ou o ícone não para o
serviço (#14). - O menu do ícone também pareia um celular, liga e desliga o Turbo, troca o perfil de todos os fans e mostra o log do
serviço; cada alerta novo vira uma notificação do Windows, e um clique nela abre o painel.
Instalador
FanPilot-<versão>-win-x64-setup.exena release: instala emProgram Files, registra o serviço, libera a porta no
firewall (perfil Privado), põe o ícone na bandeja a cada logon, oferece o PawnIO (marcado só sem o Gigabyte Control
Center) e abre a página de pareamento. Atualizar por cima mantém os dados; desinstalar não deixa serviço, regra de
firewall nem entrada de inicialização, e pergunta se apaga os dados. O zip portátil continua
(#14).
Linux (em teste)
- O FanPilot roda no Linux como root: placa-mãe pelos drivers hwmon do kernel, com as curvas executadas pelo FanPilot;
CPU pelok10tempoucoretemp; GPU pelo NVML ou peloamdgpu;--diagnosecom cada chip hwmon; e
--restore-fans, que devolve à BIOS os fans de um FanPilot morto comkill -9
(#35). - Pacote
FanPilot-<versão>-linux-x64.tar.gzna release, com o .NET dentro, einstall.sh, que instala o FanPilot
como serviço do systemd (no boot, reiniciado se morrer, devolvendo os fans ao parar) e o remove com--remove.
Segurança
- O header
Hosté validado: só são atendidas requisições endereçadas a este PC (as outras recebem421), o que
impede que uma página web alcance a API local por DNS rebinding. Sólocalhoste127.0.0.1contam como o
próprio PC.
Confiabilidade
- Os arquivos de dados são gravados de uma vez só, com a versão anterior em
.bak; um arquivo ilegível é guardado
como.corrompido-<data>e o painel avisa. - As curvas são guardadas pela identidade de cada fan, não pela posição: se a ordem dos fans mudar, cada curva
continua no seu, e a de um fan que sumiu não vai para outro (o painel oferece descartá-la). Os arquivos do formato
antigo são convertidos sozinhos e ficam como.v1. - Um FanPilot por vez; se a porta estiver ocupada, ele avisa e fecha antes de mexer em qualquer fan.
- A proteção da GPU e a transmissão ao vivo do painel não dependem mais do laço de leitura dos sensores; o painel
avisa quando os dados estão atrasados e volta sozinho quando o FanPilot reinicia, mesmo se ele ainda estiver
iniciando ou com painéis demais abertos. - Log com rotação a cada 5 MB (até 3 arquivos antigos) e sem a mesma mensagem repetida milhares de vezes.
- Turbo e edição de fans n...