Autor: Marcos B. Bartikos (Cold*Fusion)
eMail: [NOMAIL]
Data: 2003
Pra quem não sabe o q é e o q faz um softcooler eu vou tentar explicar rapidamente.
Os processadores a partir dos 486 DX4 100 tem algumas funções q fazem com o processador passe a economizar energia e, conseguentemente esquentem BEEEM MENOS, daà vem o nome dos softcoolers que são programas q apenas ativam essa função.
No caso do linux, essas funções são suportadas direto no kernel, basta que o kernel esteja com três parametros abilitados, são eles:
ACPI Bus Manager, System e Processor, que são encontrados indo em >> General Setup >> Power Management Setup >> ACPI.
Ative-os como nativos (build-in) e pronto, é só dar o comando no console pra ativar ou desativar a função.
Atenção: não nos responsabilizamos por danos causados ao seu sistema, a ACPI nem sempre é bem recebida pelas motherboards.
Eis os comandos pra cada chipset (infelizmente só achei pra plataformas athlon/duron):
No KT133/133A, KX133, KL/KLE133, KM/KN133, .:
Enable: setpci -v -H1 -s 0:0.0 52=$(printf %x $((0x$(setpci -H1 -s 0:0.0 52) | 0x80)))
Disable: setpci -v -H1 -s 0:0.0 52=$(printf %x $((0x$(setpci -H1 -s 0:0.0 52) & 0x7f)))
No KT266/266A/333, KM266/333, .:
Enable: setpci -v -H1 -s 0:0.0 92=$(printf %x $((0x$(setpci -H1 -s 0:0.0 92) | 0x80)))
Enable: setpci -v -H1 -s 0:0.0 95=$(printf %x $((0x$(setpci -H1 -s 0:0.0 95) | 0x02)))
Disable: setpci -v -H1 -s 0:0.0 92=$(printf %x $((0x$(setpci -H1 -s 0:0.0 92) & 0x7f)))
Disable: setpci -v -H1 -s 0:0.0 95=$(printf %x $((0x$(setpci -H1 -s 0:0.0 95) & 0xfd)))
No KT400: (experimental ainda!)
Enable: setpci -v -H1 -s 0:0.0 D2=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D2) | 0x80)))
Enable: setpci -v -H1 -s 0:0.0 D5=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D5) | 0x02)))
Disable: setpci -v -H1 -s 0:0.0 D2=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D2) & 0x7f)))
Disable: setpci -v -H1 -s 0:0.0 D5=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D5) & 0xfd)))
No SIS730/733: (experimental ainda!)
Enable: setpci -v -H1 -s 0:0.0 6B=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6B) | 0x01)))
Disable: setpci -v -H1 -s 0:0.0 6B=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6B) & 0xfe)))
No SIS735/740/745/746/755:
Enable: setpci -v -H1 -s 0:0.0 6A=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6A) | 0x0001)))
Disable: setpci -v -H1 -s 0:0.0 6A=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6A) & 0xfffe)))
No Nforce:
Enable: setpci -v -H1 -s 0:0.0 E7=$(printf %x $((0x$(setpci -H1 -s 0:0.0 E7) | 0x06)))
Enable: setpci -v -H1 -s 0:0.0 6D=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6D) | 0x80)))
Disable: setpci -v -H1 -s 0:0.0 E4=$(printf %x $((0x$(setpci -H1 -s 0:0.0 E7) & 0xf9)))
No Nforce2:
Enable: setpci -v -H1 -s 0:0.0 6F=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6F) | 0x10)))
Disable: setpci -v -H1 -s 0:0.0 6F=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6F) & 0xef)))
No AMD751 and AMD760/761: (experimental ainda!)
Enable: setpci -v -s 0:0.0 0x62=$(printf %x $((0x$(setpci -H1 -s 0:0.0 62) | 0x02)))
Disable: setpci -v -s 0:0.0 0x62=$(printf %x $((0x$(setpci -H1 -s 0:0.0 62) & 0xfd)))
Para facilitar as coisas, recomendo usar um programinha (15k) pra console chamado athcool que já reconheçe o chipset e dá o comando acima referente a ele.
Nâo só isso, mas também mostra o estado atual da função (ligado ou desligado) e lista os chipsets suportados.
Baixe o athcool (procure no google)
Para instalar você descompacta o arquivo:
# make
e
# install -m755 athcool /usr/sbin/
Pronto, agora já pode dar os comandos q são:
athcool on (ligar a função HLT)
athcool off (desligar a função HLT...duhhh...obvio)
athcool list (lista os chipsets suportados)
athcool stat (mostra a situação atual do chipset, ligado/desligado)
Pacotes requeridos para compilar e também usar os comandos/programa acima:
PCIUTILS
PCIUTILS_DEVEL (no RedHat)
kernel_source
kernel_headers
Atenção!
O chipset KT133A da VIA é reconhecidamente bugado em relação aos comandos HLT, podendo causar instabilidades.
Site de referência:
Athlon Powersaving HOWTO
http://cip.uni-trier.de/nofftz/linux/Athlon-Powersaving-HOWTO.html
Athcool
http://members.jcom.home.ne.jp/jacobi/linux/softwares.html