# Gnome, Hal e gestione energetica [Risolto]

## rb34

Quanto segue è relativo a una installazione gentoo su un portatile.

Al momento attuale nel mio gnome ho l'applet per lo spegnimento consistente in un pulsante che premuto mi dà la possibilità di arrestare il sistema.

Ma nella ubuntu 6.10 che ho installato quando premo il pulsante di spegnimento  ho anche possibilità di standby e ibernazione... è una questione di kernel diverso? Devo mettere il kernel suspend2?

Al momento ho un kernel vanilla 2.6.17.13 con acpi e apm.

Altra cosa: sempre sulla ubuntu c'è un'applet che mi pare si chiami "battery bay" che fa vedere la carica della batteria in un grafico, logga gli eventi come la chiusura dello schermo di un portatile e altre cose... io qui (installazione gnome gentoo) non la vedo. Cosa devo cercare? (ho già installato gnome-applets)

Ultima cosa, ma forse tutto sta dietro questo, in preferenze->getione energetica non ho configurazione relativa alla batteria ma solo a corrente normale... e sempre sulla ubuntu vedo che esiste anche un pannello per le impostazioni relative al funzionamento a batteria. 

Ho installato gnome con useflag accessibility, cdr, cups, dvdr, hal.

----------

## .:chrome:.

ACPI e APM insieme sicuramente no. sono incompatibili e conflittuali.

devi installare e configurare opportunamente acpid e gnome-power-manager

----------

## rb34

 *.:chrome:. wrote:*   

> ACPI e APM insieme sicuramente no. sono incompatibili e conflittuali.
> 
> devi installare e configurare opportunamente acpid e gnome-power-manager

 

Dunque, concentriamoci sullo gnome-power-manager che non mi fa vedere le impostazioni sulla batteria.

Acpid ce l'ho installato ma non ho toccato la config, gnome-power-manager è installato anche lui. Ora... ho visto che si possono configurare azioni da compiere in risposta a eventi acpi, ma credo che le impostazioni relative alla batteria (che non vedo) nello gnome power manager siano indipendenti da quello.

L'acpi sulla batteria funziona perché un'applet indicatrice dello stato della batteria lo indica correttamente.

Che mi invento?

Ah, apm l'ho tolto dal kernel, comunque me lo disabilitava in automatico dando la priorità all'acpi (beh, il config del kernel dovrebbe proprio impedire di metterli entrambi)

----------

## Elbryan

 *rb34 wrote:*   

>  *.:chrome:. wrote:*   ACPI e APM insieme sicuramente no. sono incompatibili e conflittuali.
> 
> devi installare e configurare opportunamente acpid e gnome-power-manager 
> 
> Dunque, concentriamoci sullo gnome-power-manager che non mi fa vedere le impostazioni sulla batteria.
> ...

 

routine.

in make.conf hai messo acpi?

rc-update acpid fatto?

----------

## rb34

 *Elbryan wrote:*   

> routine.
> 
> in make.conf hai messo acpi?
> 
> 

 

Sì, e dando emerge -uDN world non ho niente da riemergere

 *Quote:*   

> rc-update acpid fatto?

 

Sì

```
$ /etc/init.d/acpid  status

 * status:  started
```

----------

## .:chrome:.

e i moduli del kernel li hai capicati?

mi rispondo da solo: no, perché _tutte_ le applet di gestione della batteria non fanno altro che leggere dentro /proc/acpi, e quella directory non viene creata finché non capichi i moduli del kernel.

è così in tutte le distribuzioni: quello che è supporto all'hardware dipende dal kernel.

----------

## rb34

 *.:chrome:. wrote:*   

> e i moduli del kernel li hai capicati?
> 
> mi rispondo da solo: no, perché _tutte_ le applet di gestione della batteria non fanno altro che leggere dentro /proc/acpi, e quella directory non viene creata finché non capichi i moduli del kernel.
> 
> è così in tutte le distribuzioni: quello che è supporto all'hardware dipende dal kernel.

 

Ah ah mi è piaciuta l'auto-risposta! E noto grande fiducia in me  :Smile: , ma non c'è problema.

Siccome so che l'acpi lo uso sempre l'ho compilato statico non come modulo.

E poi l'ho scritto che un'applet di gnome lo stato della batteria lo legge, ma non so proprio perché gnome-power-manager non mi fa vedere leimpostazioni sul risparmio energetico con batteria!

Cmq guarda qua:

```
# find /proc/acpi

/proc/acpi/

/proc/acpi/thermal_zone

/proc/acpi/thermal_zone/TZ01

/proc/acpi/thermal_zone/TZ01/polling_frequency

/proc/acpi/thermal_zone/TZ01/cooling_mode

/proc/acpi/thermal_zone/TZ01/trip_points

/proc/acpi/thermal_zone/TZ01/temperature

/proc/acpi/thermal_zone/TZ01/state

/proc/acpi/thermal_zone/TZ00

/proc/acpi/thermal_zone/TZ00/polling_frequency

/proc/acpi/thermal_zone/TZ00/cooling_mode

/proc/acpi/thermal_zone/TZ00/trip_points

/proc/acpi/thermal_zone/TZ00/temperature

/proc/acpi/thermal_zone/TZ00/state

/proc/acpi/processor

/proc/acpi/processor/CPU1

/proc/acpi/processor/CPU1/power

/proc/acpi/processor/CPU1/limit

/proc/acpi/processor/CPU1/throttling

/proc/acpi/processor/CPU1/info

/proc/acpi/processor/CPU0

/proc/acpi/processor/CPU0/power

/proc/acpi/processor/CPU0/limit

/proc/acpi/processor/CPU0/throttling

/proc/acpi/processor/CPU0/info

/proc/acpi/video

/proc/acpi/video/GFX0

/proc/acpi/video/GFX0/DD05

/proc/acpi/video/GFX0/DD05/EDID

/proc/acpi/video/GFX0/DD05/brightness

/proc/acpi/video/GFX0/DD05/state

/proc/acpi/video/GFX0/DD05/info

/proc/acpi/video/GFX0/DD04

/proc/acpi/video/GFX0/DD04/EDID

/proc/acpi/video/GFX0/DD04/brightness

/proc/acpi/video/GFX0/DD04/state

/proc/acpi/video/GFX0/DD04/info

/proc/acpi/video/GFX0/DD03

/proc/acpi/video/GFX0/DD03/EDID

/proc/acpi/video/GFX0/DD03/brightness

/proc/acpi/video/GFX0/DD03/state

/proc/acpi/video/GFX0/DD03/info

/proc/acpi/video/GFX0/DD02

/proc/acpi/video/GFX0/DD02/EDID

/proc/acpi/video/GFX0/DD02/brightness

/proc/acpi/video/GFX0/DD02/state

/proc/acpi/video/GFX0/DD02/info

/proc/acpi/video/GFX0/DD01

/proc/acpi/video/GFX0/DD01/EDID

/proc/acpi/video/GFX0/DD01/brightness

/proc/acpi/video/GFX0/DD01/state

/proc/acpi/video/GFX0/DD01/info

/proc/acpi/video/GFX0/DOS

/proc/acpi/video/GFX0/POST

/proc/acpi/video/GFX0/POST_info

/proc/acpi/video/GFX0/ROM

/proc/acpi/video/GFX0/info

/proc/acpi/fan

/proc/acpi/button

/proc/acpi/button/power

/proc/acpi/button/power/PWRB

/proc/acpi/button/power/PWRB/info

/proc/acpi/button/lid

/proc/acpi/button/lid/LID0

/proc/acpi/button/lid/LID0/state

/proc/acpi/button/lid/LID0/info

/proc/acpi/battery

/proc/acpi/battery/BAT0

/proc/acpi/battery/BAT0/alarm

/proc/acpi/battery/BAT0/state

/proc/acpi/battery/BAT0/info

/proc/acpi/ac_adapter

/proc/acpi/ac_adapter/ADP1

/proc/acpi/ac_adapter/ADP1/state

/proc/acpi/event

/proc/acpi/fadt

/proc/acpi/dsdt

/proc/acpi/info

/proc/acpi/power_resource

/proc/acpi/embedded_controller

/proc/acpi/embedded_controller/EC

/proc/acpi/embedded_controller/EC/info
```

----------

## rb34

Parzialmente risolto!!!

Mannaggia, mi ero scordato di far partire il demone "hald"!!! (a dire il vero non sapevo proprio che dovevo farlo, me ne sono accorto solo ora che ho visto la voce supporti removibili che richiedeva hald)

EDIT: parzialmente significa che gnome-power-manager mi fa vedere le impostazioni batteria e se chiudo lo schermo si spegne come chiesto.

EDIT2: ok, ora dall'applet che mi diceva sempre "connesso con alimentatore" vedo lo storico della carica della batteria.

----------

## Elbryan

ti ricordo la tag [risolto] ^^

----------

## rb34

 *Elbryan wrote:*   

> ti ricordo la tag [risolto] ^^

 

Ce la metterei molto volentieri, ma sto capendo ancora (e accetto volentieri suggerimenti) come poter fare standby e hibernate. Non ho neanche capito se lo standby e il suspend-to-ram sono la stessa cosa e se quest'ultimo è ancora in "alfa" o usabile.

Ora in gnome ho "sospendi" ma non sospende proprio nulla! Mi locka lo schermo con finestrella di login (sblocco) annessa!!

----------

## Elbryan

 *rb34 wrote:*   

>  *Elbryan wrote:*   ti ricordo la tag [risolto] ^^ 
> 
> Ce la metterei molto volentieri, ma sto capendo ancora (e accetto volentieri suggerimenti) come poter fare standby e hibernate. Non ho neanche capito se lo standby e il suspend-to-ram sono la stessa cosa e se quest'ultimo è ancora in "alfa" o usabile.
> 
> Ora in gnome ho "sospendi" ma non sospende proprio nulla! Mi locka lo schermo con finestrella di login (sblocco) annessa!!

 

a me il resume non funziona benissimo  :Razz: 

comunque standby è una cosa e sospendi è un'altra..

----------

## rb34

 *Elbryan wrote:*   

> [standby e suspend]a me il resume non funziona benissimo 
> 
> comunque standby è una cosa e sospendi è un'altra..

 

Mi descriveresti brevemente la differenza tra standby e suspend?

Inoltre, non ho capito il resume da cosa ti funzioni benissimo.

Quello che vorrei di più adesso è lo standby, se è quello che intendo io: lasciare lo stato della memoria inalterato togliendo corrente a tutto il resto, in modo da avere il sistema di nuovo funzionante in un attimo alla pressione di un tasto. E' corretto?

Il kernel standard (anche *-gentoo) supporta questo o c'è speranza solo col *-suspend2?

----------

## falko

ho anche io dei provlemi con la gestione energetica il problema che mi da gnome-power-manager è questo

```

 # gnome-power-manager 

(gnome-power-manager:19516): GnomeUI-WARNING **: While connecting to session manager:

Authentication Rejected, reason : None of the authentication protocols specified are supported and host-based authentication failed.

```

hald è in esecuzione e acpi è configurato correttamente (o così credo!!)

cmq questa è quello che ho dando lsmod

```

# lsmod

Module                  Size  Used by

video                  14084  0 

battery                 8708  0 

fan                     4484  0 

button                  5904  0 

thermal                11784  0 

processor              15724  1 thermal

ac                      4612  0 

ohci_hcd               16644  0 

ehci_hcd               23688  0 

uhci_hcd               18696  0 

snd_hda_intel          13844  1 

snd_hda_codec         135808  1 snd_hda_intel

snd_pcm                57732  2 snd_hda_intel,snd_hda_codec

snd_timer              17284  1 snd_pcm

snd                    38500  6 snd_hda_intel,snd_hda_codec,snd_pcm,snd_timer

soundcore               7648  1 snd

snd_page_alloc          7944  2 snd_hda_intel,snd_pcm

tg3                    88836  0 

ipw2200                83244  0 

ipw2100                58288  0 

ieee80211              26184  2 ipw2200,ipw2100

ieee80211_crypt         5376  1 ieee80211

firmware_class          7808  2 ipw2200,ipw2100

pl2303                 16388  0 

usbserial              22944  1 pl2303

hci_usb                12188  0 

bluetooth              39012  1 hci_usb

usblp                  11264  0 

usbhid                 27396  0 

usb_storage            30852  0 

usbcore                94724  10 ohci_hcd,ehci_hcd,uhci_hcd,pl2303,usbserial,hci_usb,usblp,usbhid,usb_storage

ibm_acpi               23680  0 

ati_agp                 7308  0 

agpgart                24008  1 ati_agp

isofs                  28604  0 

zlib_inflate           14080  1 isofs

ntfs                   83956  1 

```

----------

## falko

pardom, scusate,  ma adesso mi funziona; il messaggio non è propriamente un errore visto che l'applet è presente nella mia barra

prima non mi funzionava ma era perchè nn avevo in esecuzione hald

----------

## rb34

Allora, aggiornamento: la sospensione (suspend) funziona dopo aver abilitato nel kernel il supporto per le hot pluggable cpu, cosa che non avevo proprio capito si dovesse fare e che non era nella sezione power management. 

MA c'è un ma. Il pc si "spegne" entrando in suspend (che mi pare sia quello che da win si chiama standby), quando tocco un tasto si riaccende, ma alla riaccensione non mi funziona più la scheda di rete!!!

Dando ifconfig vedo che è ancora tutto come prima, ma il routing non funziona più, tutto è "host unreachable" e ifconfig eth0 down si blocca all'infinito (si blocca in quel punti pure se faccio shutdown).

Consigli??

Il topic sta un po' cambiando, ma ci sarebbe poi anche un'altra questione.. da gnome è ora apparsa anche la voce iberna, ma quando la scelgo va in suspend ugualmente! (con gli stessi problemi di cui sopra, ovviamente). Che casino.

----------

## kingrebound

per avere i bottoni hibernate e suspend devi o installare il kernel suspend 2 oppure patchi quelli che hai...i bottoni dovrebbere fare parte del pacchetto  suspend2-userui...

ciao

----------

## rb34

 *kingrebound wrote:*   

> per avere i bottoni hibernate e suspend devi o installare il kernel suspend 2 oppure patchi quelli che hai...i bottoni dovrebbere fare parte del pacchetto  suspend2-userui...
> 
> ciao

 

No... i bottoni ora ce l'ho (semplici ma ci sono), sono apparsi attivando il supporto hot pluggable cpu e poi suspend e hybernate nel power management nel kernel.  Il supporto del kernel vanilla al suspend si basa su swsusp, alternativa a suspend2.

Ma ho i problemi di cui riferivo... 

In teoria potrei anche provare direttamente il kernel suspend2 ma cavolo, vorrei riuscire a far funzionare una cosa senza abbandonare la battaglia

----------

## rb34

Sono riuscito a far funzionare suspend e ibernazione da gnome.

Allora, partiamo con la terminologia (se sbaglio correggetemi):

- suspend=suspend to ram=conservazione del contenuto della ram tale e  quale.

- ibernazione=scrittura del contenuto della ram su disco

Metodi per suspend/hybernate: swsusp incluso nel kernel, suspend2

mediante sorgenti suspend2-sources. 

Ho usato entrambi i metodi e funzionano (per me) entrambi, ma con

suspend2 posso usare la compressione nell'ibernazione che la rende molto

più veloce in salvataggio e caricamento.

Sia suspend-to-ram che hybernate possono essere seguiti dallo standby, col

led alimentazione lampeggiante e ripristino immediato delle condizioni del

sistema. Se siamo entrati in standby con l'hybernate ci vuole un po' per

ricaricare i dati della memoria da disco, altrimenti col suspend-to-ram è

un attimo

l'Ibernazione può essere seguita dal reboot o dallo spegnimento, e al

riavvio del sistema passando al kernel l'opportuna opzione resume (con 

swsusp, incluso nel kernel base, ma anche suspend2 l'accetta sebbene la

sua sia resume2), i dati vengono ricaricati e si ha il sistema come 

era prima.

Nel "freeze" del sistema non tutti i driver si comportano bene, per esempio

sul mio vaio vgn-fe31b la scheda intel e100 non funzionava più se non 

toglievo il modulo prima del suspend e lo reinserivo dopo il ritorno in vita.

Da notare che togliendo il modulo di rete i servizi che si basano su di esso

si chiudono, come ad esempio bind (named), e allora vanno ricaricati.

La gestione dei moduli e dei servizi da startare si fa con 

hybernate-script, che è stato fatto proprio per questo scopo.

Gnome-power-manager capisce le possibilità di suspend e ibernazione del

sistema tramite hal (demone hald), e tramite esso effettua queste

operazioni. Hal a sua volta "usa il kernel" per verificare queste

possibilità.

Come spiegato nell'howto gentoo sul suspend2 (ma valgono le stesse cose 

usando il supporto swsusp incluso nel kernel vanilla o gentoo) 

in http://gentoo-wiki.com/HOWTO_Software_Suspend_v2, hal, sebbene uno

abbia installato hybernate-script e abbia disponibili i comandi hybernate

e hybernate-ram, cerca prima di fare il suspend via supporto kernel 

mandando un echo in /proc/qualcosa_che_non_ricordo, e allora bisogna editare

gli script di hal per far funzionare gnome-power-manager insieme ad

hybernate-script e alle impostazioni che si vogliono.

Inoltre se si ha installato hybernate-script viene lanciato hybernate-ram

quando si chiede l'ibernazione, che invece tipicamente dovrebbe scrivere

su disco 

Ho un problema: quando al risveglio dal suspend lancio alsasound restart

l'applet volume di gnome viene chiusa e gnome mi chiede se

ricaricarla... non c'è un modo per far sì che stia sempre su? 

E' vero che i moduli vengono scaricati e ricaricati ma....

----------

## VegetaSSJ5

complimenti per la tua mini guida, spiega un sacco di cose che in giro non si trovano. rimarrebbe da poter rispondere anche al tuo ultimo interrogativo, anche se io credo che il supporto per queste funzionalitÃ  sia ancora immaturo e che magari con un po' di tempo le cose si sistemeranno...  :Wink: 

----------

## rb34

Nell'upgrade all'ultimo hal e gnome-power-manager qualcosa è cambiato e il suspend o hybernate da icona gnome (quella spegnimento che dà le possibilità spegni sospendi iberna riavvia) non funziona più (dice che è fallito). Da riga comando lanciando hibernate o hibernate-ram tutto funziona come prima, quindi c'è solo gnome da sistemare.

/var/log/messages dice

Jun 19 16:39:30 xxxx gnome-power-manager: (yy) Sospendo il computer perché il metodo DBUS Suspend() é invocato

Jun 19 16:39:31 xxxx gnome-power-manager: (yy) Ripristino il computer

Ma io vorrei sapere cosa viene lanciato, come si fa? 

L'hal corrente (0.5.9-r1) ha i suoi script in /usr/lib/hal/scripts/, e credo che sul suspend dovrebbe lanciare /usr/lib/hal/scripts/hal-system-power-suspend

o forse /usr/lib/hal/scripts/linux/hal-system-power-suspend-linux

ma a dire il vero ci ho messo dentro degli echo su file ma pare non siano stati eseguiti.

Ne sapete qualcosa di tutta questa storia? Come ripristino il power mgmt da gnome?

----------

## rb34

Risolto da solo, questione di permessi (da login grafico root funzionava):

nell'upgrade di gdm mi ero perso la riga 

```
session    optional     pam_console.so
```

che consente agli utenti normali la chiamata ad hal per il power management, come si vede da /etc/dbus-1/system.d/hal.conf che ha la sezione:

```
  <!-- This will not work if pam_console support is not enabled -->

  <policy at_console="true">

    <allow send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"/>

    <allow send_interface="org.freedesktop.Hal.Device.LaptopPanel"/>

    <allow send_interface="org.freedesktop.Hal.Device.Volume"/>

    <allow send_interface="org.freedesktop.Hal.Device.Volume.Crypto"/>

  </policy>
```

----------

## rb34

Nell'ultimo upgrade di hal era stato toccato di nuovo il file 

/usr/lib/hal/scripts/linux/hal-system-power-suspend-linux

perché quella dir non è in quelle protette da modifica quando si aggiorna un pacchetto.

Io ho aggiunto ora il file 

/etc/env.d/01robamia

contenente la riga 

```
CONFIG_PROTECT="/usr/lib/hal/scripts/linux"
```

perché in 

/usr/lib/hal/scripts/linux/hal-system-power-suspend-linux

ho modificato la sezione finale "other distros", mettendoci 

```
#Other distros just need to have *any* tools installed

else

    if [ -x "/usr/sbin/hibernate-ram" ] ; then

        /usr/sbin/hybernate-ram --force

        RET=$?

     elif ...

```

Poi ho dato 

```
env-update && source /etc/profile
```

perché io se non scarico il modulo della scheda di rete al suspend-to-ram ho problemi, e non capisco perché mai quello script non contenga un controllo sull'esistenza di hybernate, che uso per fare, tra le altre cose, quello

Senza modifiche, hal 0.5.9-r1 usava il suspend-to-ram del kernel, sulla gentoo

----------

