Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Gestión de energía en el portátil

Hardware
Por gonzotba
departamento Frotando-la-lámpara , Sección Tecnología
Puesto a las Wed Nov 10th, 2004 at 09:37:03 AM CET

Una de las funcionalidades más atractivas cuando utilizamos un portátil es el control de energía. La batería de los portátiles suele durar poco tiempo ---mucho menos del que deseamos---, así que cualquier prolongación en su vida siempre es bienvenida.

Bajo windows las cosas, como siempre, son más sencillas gracias al apoyo de los fabricantes. En Linux, conseguir gestionar la energía del portátil es una tarea de esas harto complicadas y que uno siempre deja arrinconadas para mejor ocasión, como hacer funcionar el puerto de infrarrojos.

Hay muchos proyectos al respecto desperdigados por ahí. A ver si entre todos hacemos un retrato del "Estado del arte" del control de energía en portátiles bajo Linux.

 


Toda esta historia empezó cuando, al pasar de Mandrake 10.0 a 10.1, dejó de funcionarme el control de energía en el portátil. Ya no podía ver la energía restante ni tampoco el ordenador se paraba al final de un shutdown. Fue entonces cuando empecé a interesarme por el tema.

Básicamente podemos dividir el control de energía en dos grandes categorías:

  • Acceso a los parámetros de la batería: carga, descarga, tiempo restante, estado, etc...
  • Suspensión a disco: Permite volcar el estado de la memoria al disco duro, de manera que el arranque es casi inmediato y nos permite recuperar la "sesión" en apenas unos segundos.

Podría también añadirse el control de la velocidad del procesador así como de las revoluciones del ventilador, pero si las anteriores categorías ya presentan problemas incluso en portátiles relativamente modernos, un control tan fino se me antoja casi de ciencia ficción.

Antes que nada adelantar que no soy un experto en el tema, así que mis apreciaciones no son ni mucho menos para sentar cátedra y lo que intento es que hagamos un buen listado de las opciones que hay sobre el tema a día de hoy.

Para empezar, decir que la gestión de energía en el portátil corre a cargo de APM y ACPI. APM son las siglas de Advanced Power Management, mientras que ACPI corresponde a Advanced Configuration and Power Interface.

ACPI es, exactamente, una especificación abierta desarrollada por HP, Intel, Microsoft, Phoenix y Toshiba. Establece los mecanismos por los cuales el sistema operativo gestiona la energía, no sólo de los portátiles, sino también de equipos de sobremesa y servidores. Se supone que ACPI es la evolución de APM, y las principales distribuciones lo incluyen ya desde hace algunas versiones.

Por su parte, APM también puede hacer unas cuantas cabriolas. En principio, y si tu BIOS es "APM-complaint", puedes acceder a todos los datos sobre el estado de la batería, así como incluso suspender el sistema. Como siempre, el primer paso es incluir el soporte APM en el kernel. Creo que este es el fallo del kernel que viene con la Mdk 10.1, ya que un "apm -v" responde:

No APM support in kernel

Una vez nos hemos asegurado de que nuestro kernel contiene soporte para APM o ACPI, estaremos en condiciones de acceder al control de energía. Hay que tener en cuenta que APM y ACPI son mutuamente excluyentes, así que podemos tomar las medidas pertinentes en el kernel mismo o bien añadir los parámetros apropiados al arranque en el LILO (por ej. "append="apm=on acpi=off"). Comentar que desde la Mdk 10.1 tengo que utilizar esta línea para desactivar el ACPI, ya que si no el portátil se queda tieso al enchufarle cualquier cosa por un puerto USB. Algún tipo de problema con el sistema de archivos USB, me temo.

Una vez tenemos el driver preferido funcionando correctamente, existen numerosas opciones para comprobar el estado de la batería. Podemos desde tirar a pelo de los ficheros correspondientes en /proc hasta echar mano del kcontrol y la soberbias herramientas que el KDE pone a nuestra disposición.

La suspensión a disco es una de las características a las que me gustaría acceder y que nunca he conseguido hacer funcionar. El principio de funcionamiento es el siguiente: Al ejecutar el comando correspondiente, el estado de la memoria se vuelca en forma de imagen en una de las particiones swap activas. En el siguiente arranque, el kernel detecta la imagen que hemos guardado, la recupera y continúa con el funcionamiento como si aquí no hubiera pasado nada. Desde los kernels de la serie 2.5.x, de esta característica mágica se encarga "Software Suspend".

Para hacer sitio en el disco o en nuestra partición de swap, ya que necesitaremos un espacio algo más grande que nuestra memoria física, tenemos dos opciones: crear una nueva partición ad-hoc ---lo cual no es siempre posible--- o crear una partición de swap en un fichero. Esta segunda opción nos permite más flexibilidad y siempre se puede echar mano de ella, aún cuando no haya más espacio en el disco duro para hacer más particiones.

El problema de la suspensión no es la suspensión en sí, sino la recuperación. Puede funcionar en alguna ocasión, pero la mayor parte de las veces falla estrepitosamente. Al menos esa fue mi impresión la última vez que me eché la manta a la cabeza.

Desde entonces he leído que han aparecido diferentes soluciones en el tema de suspensión a disco, pero no me he animado a porbar ninguna y por tanto no conozco su estado actual. A ver si alguien puede comentar sus logros al respecto.

Y eso es todo. Dejo aquí esta suerte de introducción para que el artículo se enriquezca con las aportaciones de los libertonianos más versados en la materia. Yo permanecerá agazapado a ver lo que puedo aprender, como siempre :)

< Cursos de Linux y Software Libre (0 comments) | Desperfectos recientes en libertonia (4 comments) >
Enlaces Relacionados
· More on Hardware
· Also by gonzotba

Encuesta
¿Te interesa el tema de la gestión de energía en el portátil?
· Si tuviera uno sí... 29%
· Sí, mucho. 69%
· Psché, no le acabo de ver la utilidad... 0%
· Ah, ¿pero eso se puede hacer? 1%

Votos: 55
Resultados | Otras Encuestas

Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

Ver: Modo: Orden:
Gestión de energía en el portátil | 21 comentarios (21 temáticos, editoriales, 0 ocultos)
Suspensión suspensa (5.00 / 1) (#1)
por pbenavent a las Thu Nov 11th, 2004 at 07:52:12 AM CET
(Información Usuario) http://www.benavent.org

Comos recordarás (se comentó cuando decidias qué portátil comprar ...) utilizo un Toshiba 2400-103 ejecutando Fedora Core - II.

Y como nadie escribe, voy a colorear un poco, la suspensión a disco no funciona, ergo suspenso en suspensión.

Razones:
  • la suspensión habitualmente se hace mediante /usr/bin/apm -s, pero es frecuente hoy en día utilizar ACPI para GNU/Linux por que se supone -como apuntas- que la industría tiende a él, obsoletará a apm ...
  • ACPI para GNU/Linux no parece tener un comando que suspenda a swap la actividad ...
  • problema o uno u otro pero no ambos, se tiende a utilizar ACPI para GNU/Linux pero éste no tiene suspensión


Alternativas:
  • ACPI de IBM, suena a que solo funciona con portátiles de IBM (ThinkPad) pero por lo que he visto no es así. En este post del mes pasado un usuario con Slackware se lo recomienda a uno con Mandrake, por supuesto, bájate las fuentes y compilalo. Aunque el README dice que puede hacer un montón de cosas, cuidado que es alfa y no dice claramente que suspenda la actividad como comentas.
  • Software suspend que dicen (extraido de su página) que pueden suspender el portátil presionando la tecla escape (no podré utilizar el VI?), comprimir la imagen que vuelcan, arquitectura versátil de plugins, ... I/O sincrono y asincrono para mejor rendimiento... en fin, si hacen los que dicen en la lista de prestaciones un proyecto muy interesante (y un ejemplo de que todo no está en sourceforge) y dispones de paquetes en RPM
  • una solución más pedestre es instalar ACPI para GNU/Linux y también ACPI: OJO no se ejecuten ambos como demonios, la idea es utilizar ACPI para GNU/Linux como demonio y del APM utilizar solo el /usr/bin/apm -s para suspender el equipo (bajo tu propio riesgo)
  • finalmente recomiendo al respetable la lectura del artículo pasando de APM a ACPI


... en Ubuntu que tal irá el applet de la batería? Trukulo, estás ahí ?

--
"El hombre es la medida de todas las cosas"
Protágoras


Yo ya he conseguido suspender a disco (4.66 / 3) (#2)
por toci (forodejazz (arroba) gmail (punto) com) a las Thu Nov 11th, 2004 at 09:00:47 AM CET
(Información Usuario) http://www.laclavedefa.org/tiras/

En mi Acer Aspire 1352 lo he logrado.
Hay dos métodos, el swsuspend y el swsuspend2. Yo utilizo el primero.
¿Cómo?


1. Utilizar un kernel >= 2.6.6 (por ejemplo, como el que trae Knopix 3.6 o Kanotix 0.8, que es la que utilizo). El kernel debe tener habilitado swsuspend. (Suele venir habilitado por defecto).

2. Tener una partición swap de, aproximadamente, 1.2 veces la RAM que tengas. Yo tengo 512 Mb de RAM y 600 Mb de swap.

3. Hay que pasarle al kernel (ya sea en /etc/lilo.conf o en /boot/grub/menu.lst)las opciones:
acpi=on apm=off resume=/dev/hdXX
Donde /dev/hdXX es tu partición swap.

4. Para hibernarlo, como root tecleas:
echo 4 > /proc/acpi/sleep


Si hay suerte y la BIOS de tu portátil no hace cosas raras, el ordenador vuelca toda la RAM a la partición swap (en el mí tarda un minutillo, más o menos).
Al volver a encenderlo, encuentra datos de recuperación en la swap, los restaura y vuelve a dejar la partición swap operativa.
Si, por alguna razón, falla la restauración, el sistema se reinicia. Hay que pasarle en el 'prompt' del gestor de arranque entonces la opción 'noresume' para que no intente leer de la partición swap.
Se inicia entonces con la swap desabilitada, ya que ésta contiene los datos de recuperación. Hay que restaurarla:
# mkswap /dev/hdXX
# swapon /dev/hdXX


¡Suerte!

Saludos. David.



 
Algunas opciones en portátiles (4.66 / 3) (#18)
por atopos a las Sun Nov 14th, 2004 at 01:29:26 PM CET
(Información Usuario) http://los-pajaros-de-hogano.blogspot.com

Mi portátil es Apple y con seguridad no todo podrá trasladarse a otras arquitecturas. Por otra parte, uso pocas veces el bicho sin conexión a la red eléctrica, por lo que no me he metido a investigar a fondo el asunto.

Hecha esta salvedad paso a referir las herramientas que yo utilizo.

Las arquitecturas ppc usan PMU en lugar de ACPI/APM. pbbuttonsd es un demonio que permite controlar el comportamiento de la máquina dependiendo de su estado (enchufado a la corriente o no) y de la carga actual de la batería. Sé que también puede usarse en máquinas basadas en Intel, pero desconozco hasta dónde llega el soporte.

Para el control de la frecuencia de la CPU, uso powernowd (en otro tiempo usé también cpudyn), que es un cliente del driver cpufreq y que hace uso de la interfaz sysfs de los núcleos de la serie 2.6.

En cuanto a la suspensión, de momento sólo tengo el soporte sleep (suspensión a RAM). La suspensión a disco no la he usado. Por otra parte, la interacción entre ambas formas de suspensión todavía no se ha implementado adecuadamente para mi ordenador. Y yo, en particular, prefiero el sleep a la suspensión a disco: puesto que no tengo dormido el ordenador demasiado tiempo, no veo necesario en mi caso la suspensión a disco.

No está de más tampoco tener algún sistema de control de la temperatura. Aquí hay muchas opciones. En mi caso echo mano de un módulo del kernel específicamente diseñado para mi ordenador. Supongo que en cada caso habrá uno distinto.

La herramienta laptop-mode-tools puede también evitar un gasto innecesario de energia, al retrasar las escrituras a disco. La tengo instalada, pero practicamente no la uso. Quizá alguien pueda hablar mejor de su rendimiento.

Finalmente, conviene tener un monitor del estado de la batería. Aquí hay muchos donde elegir, desde el que viene con gkrellm (por cierto, hay version para PMU), pasando por los applets de Gnome o de gdesklets. [Un matiz para los que tienen ordenadores Apple como el mío: dado que algunos de estos monitores suponen soporte APM, es necesario habilitar y cargar el módulo apm-emu para que funcionen.]



Pregunta curiosa (none / 0) (#3)
por luchonidas (luchonidas [arroba] yahoo com) a las Thu Nov 11th, 2004 at 09:32:17 AM CET
(Información Usuario) http://potaje.bitacoras.com/

A esto de mover el contenido de la memoria a swap para suspender le veo una pega... Si en el momento de suspender ya hay programas que han sido movidos al swap (demonios que no se utilicen mucho, programas en segundo plano, partes del kde o del gnome, etc, etc), al copiar la ram en la swap... ¿no se machacaría el estado de la swap, que al fin y al cabo es parte del estado del sistema, y no se podría volver a iniciar correctamente el sistema?...
Mejor con un ejemplo.
En el momento de suspender a disco el postfix está en swap (es un portatil y no tiene el trajín de un servidor, el postfix puede estar perfectamente en swap). Cuando reiniciamos el ordenador se nos ocurre que podríamos enviarle un mensaje a la rubia, así que abrimos nuestro cliente de correo preferido y enviamos el email... Aquí es donde está mi duda... Si el postfix estaba en swap al suspender y guardamos el contenido de la memoria en swap, entonces estamos machacando lo que estaba allí. Al intentar conectar con el postfix, el sistema verá que este está en el swap y lo traerá a la ram, pero lo que hay en el lugar del postfix es cualquier cosa, con lo que petará el proceso.

Aunque no me he explicado claramente, me imagino que se entiende lo que quiero decir. Igualmente supongo que los que diseñaron este sistema han tenido en cuenta esta problemática.

Un saludo.

-----
Jeje, vamos a probar eso de las bitácoras: http://potaje.bitacoras.com/


Mi experiencia (none / 0) (#9)
por gonzotba a las Thu Nov 11th, 2004 at 03:32:46 PM CET
(Información Usuario)

He estado haciendo mis averiguaciones desde que escribí el artículo y os cuento mis conclusiones.

Parece ser que las últimas versiones de distros tienden a deshacerse de APM, adoptando ACPI por defecto. De hecho, el kelmer compilado por Mandrake en su versión 10.1 viene sin soporte APM, mientras que los módulos ACPI se cargan en memoria a la primera de cambio.

Para mí es un problema, puesto que no me apetece recompilar el kelmer y el acpi=on me da problemas. En concreto, parece que ACPI y el sistema de archivos USB se dan de leches. Cuando arranco con acpi=on y tengo un ratón enchufado, el sistema se bloquea en la parte en la que termina de cargar los drivers USB. Si arranco con el ratón desenchufado, todo va bien hasta que lo conecto y el sistema se queda frito (irrecuperable) y con el ventilador del portátil como si el cacharro fuera a despegar.

Si arranco con ACPI y sin usar nada USB, veo mensajes correctos de reconocimiento de cosas de la BIOS y demás, pero no puedo acceder a todas las características de gestión de energía. Lo único que parece funcionar correctamente es el control de la velocidad del ventilador, por lo menos por lo que puedo oír. No sé si lo maneja el SO o la BIOS, pero el módulo correspondiente está cargado.

Por otro lado, he estado leyendo sobre las diferentes opciones en acpi=* en el arranque. Hay una opción "ht" que parece que se usa para HiperThreading. Mandrake la pone por defecto, pero no sé muy bien para qué. En cualquier caso sigue sin solucionarme la vida. También están las opciones noapic y nolapic, cuyo uso también me resulta algo críptico. Nada de todo lo que he probado me ha ayudado.

Sobre el tema de la suspensión, Mandrake trae pmsuspend2. Por lo que he podido leer, parece la reunión de un antiguo fork entre pmdisk (algo así) y suspend. Creo que otras distribuciones traen pmsuspend a secas.

En mi caso, no funciona. Después de crear la partición swap pertinente, si le doy a suspend se queja de que no encuentra algunos ficheros bajo /proc/acpi, supongo que porque las funcionalidades no están disponibles. Vamos, peor imposible,

Por si sirve a algo de alguien, el portátil es un ECS Desknote. No el que lleva un transmeta, sino el del Celeron 1.6MHz.

Saludos!



Gestión de energía en el portátil | 21 comentarios (21 temáticos, editoriales, 0 ocultos)
Ver: Modo: Orden:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda