Loading...

enero 28, 2013

Suspensión en Ubuntu

Last Update: Ago 10/2015
Un viejo Bug de Ubuntu y sus derivados, vuelve a la carga: la suspensión de energía de las laptops. La distro más popular (no la mejor) de Linux sigue arrastrando este viejo y resabiado bug, que parece tener las intensiones de quedarse, y de paso pone en peligro las máquinas.
En nuestro post anterior Hibernación y suspensión en Ubuntu 10 y 11, para estas versiones se solucionaba descargando el archivo 00CPU y con privilegios se pega en la carpeta /etc/pm/sleep.d, pero con la aparición de las nuevas versiones 12x y superiores, donde se pensaba que al fin se había corregido, continua el calvario.
Por alguna razón este bug solo afecta las laptops, mayormente a aquellas que tienen chipset y video de Intel o AMD (aunque también se ha reportado que afecta a otras motherboards). Al parecer el mal reconocimiento de la ACPI de la BIOS por parte del kernel Linux hace que se produzca un deficiente manejo de la relación consumo/potencia. Otro posible culpable serían los drivers, en especial el touchpad o los chips mencionados. Hay una teoría que apunta a la swap, sobre todo cuando es inferior a la memoria física de la laptop, sin embargo, sea cual sea la causa, no hay evidencias concluyentes que confirmen ninguna de estas hipótesis, ya que la suspensión no afecta a todos los equipos que tengan instalado Ubuntu. Depende de la versión que usen, su arquitectura (x86 o x64) y el hardware del equipo.
Lo que sucede concretamente es que cuando cerramos la tapa de la laptop, Ubuntu trata de ponerse en suspensión, pero inmediatamente vuelve a cargar, o sea, se queda con el disco duro encendido (o puede que quede encendido muchas cosas más como el wifi o bluetooth, usb, etc), consumiendo batería, pero con los ventiladores apagados. Esto produce que la laptop se recaliente y se apague. En el mejor de los casos consume toda la carga de la batería y luego se apaga.
Como bien explican en el foro de Ubuntu el problema es bastante serio, ya que puede quemar la laptop. Se imaginan cerrar la tapa de nuestro portátil  meterla en su estuche a 35°C, semiencendida con los ventiladores apagados?... Si fuera una HP-Compaq lo más seguro es que tendrían que decirle adiós a su chip de video. Fuera de esto, también se reporta que cuando los equipos salen de suspensión (si es que lo logran) el bluethoot o wifi, puede aparecer como apagado, o quedarse encendido.
En resumen, la mayoría de usuarios coinciden que la suspensión en Ubuntu es "a medias", o sea que muchos componentes quedan encendidos mientras dura este proceso. Es por estas razones que siempre hemos recomendado con entornos de escritorio Gnome 2x, y como ya está descontinuado, se recomienda en su reemplazo Mate, pero tampoco hay muchas garantías.
A continuación ofreceremos algunas soluciones, que pueden o no funcionar en su laptop. Es importante resaltar que si su laptop no presenta los problemas descritos en este post, no use los procedimientos que exponemos a continuación.
Antes de comenzar
Una de las causas de este problema es la carga de las app que tenemos instaladas. Es por esto que debemos cerciorarnos que nuestro sistema haya arrancado o cerrado bien, ya que una aplicación colgada (que no inicie o cierre correctamente) puede ocasionar que el sistema no caiga en suspensión/himernación. Para esto verificamos los logs
cat /var/log/boot.log
Adicionalmente verifique que la swap sea igual a la memoria física de su laptop. Puede saberlo ejecutando en el terminal los comandos free -m o top. Mantenga actualizados los drivers y si al salir de la suspensión se queda la pantalla en negro y solo se ve el puntero del mouse, reinicie el modo gráfico mediante la combinación del teclado AltGr+ImpPant+K
Opción 1 (Para Ubuntu 12x o anteriores)
1. Descargue el archivo wakeupkill y descomprímalo. Contiene 3 archivos: 00CPU para las versiones de Ubuntu anteriores a 12x. 20_custom-ehci_hcd para las versiones 12x y el script disablewakeup.sh
2. Con privilegios sudo (nautilus) copie y pegue los archivos en la carpeta /etc/pm/sleep.d (En dependencia de su versión de Ubuntu y derivados, use 00CPU o 20_custom-ehci_hcd)
3. Dele permisos a los archivos.
sudo chmod 755 /etc/pm/sleep.d/20_custom-ehci_hcd
sudo chmod 755 /etc/pm/sleep.d/disablewakeup.sh
4. Ejecute desde el terminal:
sudo install -o root -g root -m 755 disablewakeup.sh /etc/pm/sleep.d/
5 Reinicie el sistema
El script disablewakeup.sh busca los componentes que tengan activa (enable) la función wakeup y los traslada a sleep.d para detenerlos cuando el sistema entre en modo suspendido.
Si desea hacerlo manualmente, primero determine cuales dispositivos tienen la función wakeup activa. Lo puede saber ejecutando en el terminal cat /proc/acpi/wakeup. Luego edite sudo gedit /etc/rc.local e incluya en el archivo las lineas correspondientes a los dispositivos "enable". Use el comando tee para realizar esta acción.
Ejemplo:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

echo USB0 | sudo tee /proc/acpi/wakeup
exit 0
Si le sigue sin funcionar puede que tenga que optar por pasos adicionales:
Alternativa
1. Edite el grub con
sudo gedit /etc/default/grub
2. Busque la linea que diga:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
3. Adicione
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi=Linux"
4. Guarde los cambios, cierre y ejecute
sudo update-grub
5. Reinicie
Opción 2 (Para Ubuntu 14x o superior)
laptop-mode-tools es una de las mejores utilidades en gestión de energía y por supuesto powertop. Su uso en versiones Ubuntu 12x, sobre todo con Gnome 3x es traumático, ya que en ocasiones se ha reportado congelamiento y lentitud en el apagado, al punto que hay que hacerlo forzado con CTRL-ALT-IMPRPANT-REISUB. Lo mismo sucede al activar la función de hibernación, desactivada por defecto en esta versión. Por tanto queda bajo su propio riesgo el uso de estas herramientas.
Instalación
sudo apt-get install laptop-mode-tools powertop
Para removerlos
sudo apt-get remove --purge laptop-mode-tools powertools && apt-get autoremove
La ubicación del archivo de configuración puede cambiar de acuerdo a su versión
/etc/laptop-mode/laptop-mode.conf
o
/etc/laptop-mode/
Configuración
Para evitar que laptop-mode-tools suspenda la energía durante una presentación en su laptop (reproducción de videos, capturas o presentaciones tipo powerpoint), instale caffeine y asocielo a su reproductor favorito (ejemplo: en el apartado preferencias de VLC):
sudo add-apt-repository ppa:caffeine-developers/ppa && sudo apt-get update && sudo apt-get -y install caffeine python-glade2 gir1.2-notify
Para evitar que autosuspenda los usb activos (mouse y cualquier pendrive o hdd conectado), ejecute el comando lsusb, copie el numero correspondiente al usb que quiere mantener activo, y edite el archivo autosuspend
sudo nano /etc/laptop-mode/conf.d/usb-autosuspend.conf
Y agregue a la línea AUTOSUSPEND la siguiente información entre comillas:
AUTOSUSPEND_USBTYPE_BLACKLIST="usbhid usb-storage 046d:c530 1bcf:2881"
Donde "046d:c530 1bcf:2881" son ejemplos de los números asociados al dispositivo usb. Reemplácelos por los que arroje el resultado del comando lsusb y este asociado al dispositivo que pretenda que no se desactive.
Active el modo AC...
ENABLE_LAPTOP_MODE_ON_AC=0
por
ENABLE_LAPTOP_MODE_ON_AC=1
y la bateria...
ENABLE_LAPTOP_MODE_ON_BATTERY=1
Y evite que su disco se interrumpa constantemente, eligiendo un valor intermedio entre 1 y 254. Por default el valor es 1
BATT_HD_POWERMGMT=1
Para finalizar reinicie laptop-mode-tools
sudo /etc/init.d/laptop-mode restart
y verifique su estado
sudo laptop_mode start
Laptop mode 
enabled, active [unchanged]
Si sale un error relativo a:
KERNEL PARAMETER FAILED: echo ondemand \> /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Edite cpupower frequency-info (si no lo tiene instalelo)
sudo nano /etc/laptop-mode/conf.d/cpufreq.conf
Y asegurese de que GOVERNOR se encuentre en powersave y no en ondemand
        BATT_CPU_MAXFREQ=fastest
        BATT_CPU_MINFREQ=slowest
        BATT_CPU_GOVERNOR=powersave
        BATT_CPU_IGNORE_NICE_LOAD=1
        LM_AC_CPU_MAXFREQ=fastest
        LM_AC_CPU_MINFREQ=slowest
        LM_AC_CPU_GOVERNOR=performance
        LM_AC_CPU_IGNORE_NICE_LOAD=1
        NOLM_AC_CPU_MAXFREQ=fastest
        NOLM_AC_CPU_MINFREQ=slowest
        NOLM_AC_CPU_GOVERNOR=powersave
        NOLM_AC_CPU_IGNORE_NICE_LOAD=0
Opción 3 (Para Ubuntu 12x 14x o superior)
Primero pruebe si funciona en su laptop con el comando.
sudo pm-hibernate
Cuando regrese de la hibernación (debe hacerlo manualmente)
sudo nano /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
Finalmente escriba en el archivo en blanco las siguientes esas lineas (copie y pegue) y luego borre todos los espacios que quedan al final de cada linea y al final del documento
[Re-enable hibernate by default] 
Identity=unix-user:* 
Action=org.freedesktop.upower.hibernate 
ResultActive=yes
Ahora accedemos a logind.conf
sudo nano /etc/systemd/logind.conf
Buscamos la linea #HandleLidSwitch=suspend y la descomentamos. Las otras opciones que tenemos para reemplazar suspend son: poweroff (apagar), hibernate (hibernar) y ignore (no hacer nada). Al concluir la edición, Reinicie
Otra de las causas que pueden generar que su sistema no caiga en suspensión/himernacion es que algún proceso Kworker esté activo consumiendo los recursos de su sistema. Lea la segunda parte de esta entrega, la cual explicaremos como cerrar estos procesos.
... Continuación parte II post Kworker

Fuentes consultadas Suspensión híbridaRestablecer hibernación Cómo cambiar el comportamiento de Ubuntu al bajar la pantalla
Maravento, Actualizado en: 19:30
Escrito por: Maravento Studio
 
© 2015 Maravento. All Rights Reserved | Powered by Maravento
Design by Novatoz and Maravento | Bloggerized By LawnyDesignz