2. I diversi approcci

Nella seguente sezione presento diversi approcci per ottenere lo stesso obbiettivo: risparmiare energia in un sistema basato sul Athlon/Athlon-XP. L'approccio che consiglio al momento, è quello di usare "il metodo della riga di comando" o il programma Athcool (la patch al kernel è ormai obsoleta e non verrà più aggiornata, e la patch LVCool supporta solo una famiglia di chipset).

Quasi tutti questi approcci assegneranno, nel north bridge del chipset, il bit "disconnessione abilitata quando si individua un STPGNT". Il resto del lavoro viene sostenuto dal sottosistema ACPI del kernel, che invia un segnale STPGNT al processore quando entra in modalità inattiva acpi-c2.

Se il kernel in uso non ha ancora supporto per ACPI, bisogna abilitarlo nell'impostazione del kernel e ricompilare nuovamente il kernel. Le opzioni-ACPI si trovano sotto Impostazioni generali+Impostazioni gestione energetica->ACPI. Devono essere impostate almeno le seguenti scelte: Gestione bus ACPI, Sistema e Processore.

Oppure per il kernel 2.4.22: Impostazioni generali+Supporto ACPI. Deve essere impostata almeno la seguente scelta: Processore.

Kernel 2.6.x: Opzioni di risparmio energetico+ACPI. Deve essere impostata almeno la scelta Processore. Non si dovrebbe abilitare Zona Termica !!

Alcuni chipset supportano anche un STPGNT se un segnale HLT è rilevato. Queste schede madri/chipset non hanno bisogno che sia abilitato ACPI! Al momento mi servono riscontri su quali chipset funzionano senza ACPI e quali lo necessitano. Forse potreste provarlo sulla vostra scheda madre ed inviarmi un email. (vedere Section 3.1)

2.1. Metodo della riga di comando (raccomandato)

Per usare la linea di comando è normalmente necessario abilitare ACPI nel kernel, altrimenti se ne viene avvisati. Non è necessario riavviare il computer per abilitare il risparmio energetico. Lo si può abilitare/disabilitare dalla riga di comando, con il comando seguente:

su KT133/133A, KX133, KL/KLE133, KM/KN133, ...: (decisamente acpi deve essere abilitato)

abilitare: setpci -v -H1 -s 0:0.0 52=$(printf %x $((0x$(setpci -H1 -s 0:0.0 52) | 0x80)))

disabilitare: setpci -v -H1 -s 0:0.0 52=$(printf %x $((0x$(setpci -H1 -s 0:0.0 52) & 0x7f)))

su KT266/266A/333,KM266/266A/333, ...:

abilitare:

setpci -v -H1 -s 0:0.0 92=$(printf %x $((0x$(setpci -H1 -s 0:0.0 92) | 0x80)))

setpci -v -H1 -s 0:0.0 95=$(printf %x $((0x$(setpci -H1 -s 0:0.0 95) | 0x02)))

disabilitare:

setpci -v -H1 -s 0:0.0 92=$(printf %x $((0x$(setpci -H1 -s 0:0.0 92) & 0x7f)))

setpci -v -H1 -s 0:0.0 95=$(printf %x $((0x$(setpci -H1 -s 0:0.0 95) & 0xfd)))

su KT333CF/KT400/KT400A/KM400/KM400A/KT600:

abilitare:

setpci -v -H1 -s 0:0.0 D2=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D2) | 0x80)))

setpci -v -H1 -s 0:0.0 D5=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D5) | 0x02)))

disabilitare:

setpci -v -H1 -s 0:0.0 D2=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D2) & 0x7f)))

setpci -v -H1 -s 0:0.0 D5=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D5) & 0xfd)))

su KT880:

abilitare:

setpci -v -H1 -s 0:0.0 82=$(printf %x $((0x$(setpci -H1 -s 0:0.0 82) | 0x80)))

setpci -v -H1 -s 0:0.0 85=$(printf %x $((0x$(setpci -H1 -s 0:0.0 85) | 0x02)))

disabilitare:

setpci -v -H1 -s 0:0.0 82=$(printf %x $((0x$(setpci -H1 -s 0:0.0 82) & 0x7f)))

setpci -v -H1 -s 0:0.0 85=$(printf %x $((0x$(setpci -H1 -s 0:0.0 85) & 0xfd)))

su SIS730/733:

abilitare: setpci -v -H1 -s 0:0.0 6B=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6B) | 0x01)))

disabilitare: setpci -v -H1 -s 0:0.0 6B=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6B) & 0xfe)))

su SIS735/740/745/755:

abilitare: setpci -v -H1 -s 0:0.0 6A=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6A) | 0x0003)))

disabilitare: setpci -v -H1 -s 0:0.0 6A=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6A) & 0xfffc)))

su SIS741/741GX/746/748:

abilitare:setpci -v -H1 -s 0:0.0 6C=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6C) | 0x0003)))

disabilitare:

setpci -v -H1 -s 0:0.0 6C=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6C) & 0xfffc)))

su Nforce:

abilitare:

setpci -v -H1 -s 0:0.0 E7=$(printf %x $((0x$(setpci -H1 -s 0:0.0 E7) | 0x06)))

disabilitare:

setpci -v -H1 -s 0:0.0 E7=$(printf %x $((0x$(setpci -H1 -s 0:0.0 E7) & 0xf9)))

su Nforce2: (funziona con apci non abilitato)

abilitare: setpci -v -H1 -s 0:0.0 6F=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6F) | 0x10)))

disabilitare: setpci -v -H1 -s 0:0.0 6F=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6F) & 0xef)))

su AMD751 e AMD760/761:(non per il 760MP!!!)(funziona con acpi non abilitato)

abilitare: setpci -v -s 0:0.0 0x62=$(printf %x $((0x$(setpci -H1 -s 0:0.0 62) | 0x06)))

disabilitare: setpci -v -s 0:0.0 0x62=$(printf %x $((0x$(setpci -H1 -s 0:0.0 62) & 0xf9)))

2.2. Lo shell script coolrun (raccomandato)

Coolrun è un breve shell script che fa risparmiare lavoro usando il metodo della riga di comando. È sviluppato/mantenuto da Grozdan Nikolov ed è basato su questo HOWTO.

Si possono avere più informazioni (e scaricarlo) qui: https://sourceforge.net/projects/coolrun/

2.3. Il programma Athcool (raccomandato)

Athcool è un breve programma che esegue lo stesso compito del comando setpci visto sopra. Supporta gli stessi chipset, rileva qual è il vostro chipset e sceglie le impostazioni adatte per far funzionare il risparmio-energia.

Si possono avere più informazioni (e scaricarlo) qui: http://members.jcom.home.ne.jp/jacobi/linux/softwares.html Non sono io l'autore di questo programma!

2.4. Aggiornamenti del BIOS

Su alcune schede più recenti i fabbricanti forniscono un aggiornamento del BIOS che predispone il bit o i bit necessari nel chipset della scheda (oppure offre la scelta di abilitare o no, nell'impostazione del BIOS). Riferirsi alla homepage del fabbricante della scheda madre per accertarsi se tale aggiornamento è disponibile.

2.5. Patch del kernel

La patch si basa su un'altra patch (di Jan Niehusmann) che ho trovato su Newsnet. Ho modificato la patch in modo da aggiungere supporto anche per il chipset KT266/266A. Incidentalmente, la mia patch fa lo stesso lavoro del metodo della riga di comando, tranne che lo fa dall'interno del kernel. Ecco perchè raccomando l'utilizzo del metodo della riga di comando, che è veramente semplice da usare e non richiede di modificare il kernel.

Allora... adesso, passo per passo, ecco come applicare la patch:

  1. Per prima cosa, scaricare la patch:

    Patch per il Kernel 2.4.17

    Patch per il Kernel 2.4.21 (grazie a Thomas Reinhardt per aver fatto il porting a 2.4.21)

    Patch per il Kernel 2.6.5 con supporto per tutti i chipset Via fino al KT600 (grazie a Sebastian Droege per aver fatto il porting a 2.6.5 ed aggiunto gli altri Chipsets)

    Patch per il Kernel 2.6.9 che supporta tutti i chipset Via fino al KT600 (grazie a Alexander Hug per aver fatto il porting da 2.6.5 a 2.6.9)

  2. Fare login come root

  3. cd /usr/src

  4. Applicare la patch: cat $path-to-patch/amd_cool.diff | patch -p0 (Per la nuova patch 2.6.5: cd linux e patch -p1)

  5. cd linux

  6. Eseguire Make per il nuovo kernel

  7. Riavviare e, al prompt d'avvio del kernel, digitare l'istruzione amd_disconnect=yes . Ciò perchè si sa che ci sono dei bachi nel processore Athlon, che potrebbero causare problemi su parecchie schede madre. Provare la patch e se funziona, accodare l'istruzione amd_disconnect=yes al file /etc/lilo.conf.

2.6. La soluzione LVCool

LVCool è un piccolo porting del programma Vcool per Windows. Supporta solamente i chipsets KT133/133A e KX133 ed io non posso fornire supporto. Può essere scaricato qui. Questa soluzione non ha bisogno di avere ACPI compilata nel kernel.

2.7. Il programma FVCool

Qui c'è un altro programma per risparmio energetico che dà supporto a parecchi chipset. Io non l'ho provato ma ho sentito dire che funziona. Dategli un'occhiata ... è anche accompagnato da un programma che potrebbe essere usato per controllare i chip di monitoraggio presenti su certe schede madri (come il pacchetto lm-sensors).

2.8. Risparmio di energia con l'AMD 760MP

C'è un modulo del kernel che abilita il risparmio di energia sul chipset del multiprocessore 76MP. Potreste trovarlo qui;. Non so se funziona bene, ma ho ricevuto almeno un'email da qualcuno che diceva che funzionava. Perciò, dategli un'occhiata.