No funciona suspender/hibernar en ubuntu / debian: Inhibit found

Suspender / hibernarEn un post anterior, se daban algunas pistas de cómo solucionar problemas de hibernar o suspender en ubuntu y en Linux en general. A pesar de eso, con la llegada de ubuntu Lucid Lynx una vez más he tenido que andar buscando solución para lograr que mi laptop suspenda correctamente. Os transcribo lo que he ido encontrando por si os sirve de ayuda.

Básicamente lo que hay que saber es que al activarse el hibernar-suspender, se ejecutan los scripts ubicados en el directorio /usr/lib/pm-utils/sleep.d/ y después los de /etc/pm/sleep.d/ y el log de todo el proceso se almacena en /var/log.

Por tanto lo primero que tenemos que hacer es analizar los logs que se generan al suspender o hibernar. Dichos log son /var/log/pm-powersave.log y /var/log/pm-suspend.log. Mirando las últimas líneas de pm-powersave.log parece que todo está bien (success):

/usr/lib/pm-utils/power.d/anacron false:success.
/usr/lib/pm-utils/power.d/powersave-policy-dirty-writeback false:
success.
/usr/lib/pm-utils/power.d/powersave-policy-hda-powerdown false:
success.
/usr/lib/pm-utils/power.d/powersave-policy-sata-link-power false:
success.

Así que paso a mirar pm-suspend.log, aquí encuentro:

/usr/lib/pm-utils/sleep.d/00powersave suspend suspend:success.

/usr/lib/pm-utils/sleep.d/00suspend-blacklist suspend suspend:success.

/usr/lib/pm-utils/sleep.d/01PulseAudio suspend suspend:Sessions still open, not unmounting

Así que lo que está fallando es la suspensión de PulseAudio, que una especie de proxy para el sonido en Linux. Básicamente lo que ocurre es que PulseAudio se ejecuta por sesión, y no por sistema, por lo que detecta que hay sesiones abiertas y decide no continuar con la suspensión. Es algo así como cuando hay usuarios conectados en la máquina y nos avisa al intentar apagar. En mi caso, decido que es más sencillo cerrar las aplicaciones que estén utilizando PulseAudio que intentar ejecutar PulseAudio de forma global en el sistema u otras soluciones.

Mi solución pasa por insertar un script en /etc/pm/sleep.d/ que cierre la aplicación me-tv. Si, en otro ejemplo, quisieramos que al activarse el suspend, la máquina forzara un apagado, bastaría con insertar un script:

$ sudo vi /etc/pm/sleep.d/000_fuerza_apagar

#!/bin/sh

shutdown -h 0

Pero como lo que quiero es cerrar aplicaciones (en mi caso es Me-Tv la que da problemas, también a veces Miro), inserto el script:

$ sudo vi /etc/pm/sleep.d/12_me-tv

#!/bin/sh

# kill me-tv

PROGRAMA='me-tv'

case "$1" in

hibernate|suspend)

if pidof $PROGRAMA

then

killall $PROGRAMA

exit 0

else

echo "No $PROGRAMA running";

exit 0

fi

;;

thaw|resume)

;;

*) exit 0

;;

esac

Acordaros de darle permisos de escritura al script:

$ sudo chmod +x /etc/pm/sleep.d/12_me-tv

Para probar si nuestro script funciona correctamente lo podemos ejecutar directamente con el parámetro “suspend”:

$ sudo /etc/pm/sleep.d/12_me-tv suspend

Deberá cerrar la aplicación si está ejecutándose, o escribir un mensaje por pantalla de que no ha encontrado la aplicación abierta. Es importante que el script no dé errores y salga con un status 0, ya que de otro modo la suspensión también se detendrá. Este es un ejemplo de lo que encontraríamos en el log si hubiera un error sintáctico en el script:

/etc/pm/sleep.d/11_me-tv suspend suspend:/etc/pm/sleep.d/11_me-tv: 9: Syntax error: ")" unexpected (expecting "fi")

Returned exit code 2.

Thu May 6 19:25:07 CEST 2010: Inhibit found, will not perform suspend

El código de salida -exit code- debe ser 0 (success), y nunca 1 (not success) ó 2 (error), por lo que la suspensión se detiene. Corrigiendo los errores la suspensión vuelve a funcionar correctamente:

/usr/lib/pm-utils/sleep.d/00powersave suspend suspend:success.

/usr/lib/pm-utils/sleep.d/00suspend-blacklist suspend suspend:success.

/usr/lib/pm-utils/sleep.d/01PulseAudio suspend suspend:success.

/etc/pm/sleep.d/10_grub-common suspend suspend:success.

/etc/pm/sleep.d/10_unattended-upgrades-hibernate suspend suspend:success.

/etc/pm/sleep.d/11_me-tv suspend suspend:No me-tv running

success.

/etc/pm/sleep.d/13_miro suspend suspend:No running

success.

Espero os sirva de ayuda para localizar el problema de suspender / hibernar en vuestra máquina.

About these ads

9 Responses to “No funciona suspender/hibernar en ubuntu / debian: Inhibit found”


  1. 1 nuwanda 12 jun 2010 en 6:19

    Sólo dos preguntas:
    - ¿Dónde debe guardarse el script?
    - El problema que describes y cuya solución propones ¿es que no logras suspender o que una vez suspendido tu pc no puedes volver atrás?
    Muchas gracias.

  2. 4 vicmost 1 oct 2010 en 22:42

    hola.
    pues sigo sin poder suspender.te pego el log a ver si vosotros veis algo y podeis ayudarme.

    ri Oct 1 22:37:53 CEST 2010: Running hooks for suspend.
    /usr/lib/pm-utils/sleep.d/000kernel-change suspend suspend:success.
    /usr/lib/pm-utils/sleep.d/00logging suspend suspend:Linux vicente-desktop 2.6.32-25-generic #44-Ubuntu SMP Fri Sep 17 20:26:08 UTC 2010 i686 GNU/Linux
    Module Size Used by
    btrfs 462090 0
    zlib_deflate 19568 1 btrfs
    crc32c 2519 1
    libcrc32c 875 1 btrfs
    ufs 72774 0
    qnx4 6484 0
    hfsplus 70800 0
    hfs 40754 0
    minix 25197 0
    ntfs 94791 0
    vfat 8933 0
    msdos 6392 0
    fat 47767 2 vfat,msdos
    jfs 172461 0
    xfs 515452 0
    exportfs 3437 1 xfs
    reiserfs 225481 0
    binfmt_misc 6587 1
    ppdev 5259 0
    fbcon 35102 71
    tileblit 2031 1 fbcon
    font 7557 1 fbcon
    bitblit 4707 1 fbcon
    softcursor 1189 1 bitblit
    vga16fb 11385 0
    vgastate 8961 1 vga16fb
    snd_hda_codec_intelhdmi 11622 1
    snd_hda_codec_realtek 203374 0
    i915 286079 3
    drm_kms_helper 29297 1 i915
    snd_hda_intel 22037 3
    drm 162409 4 i915,drm_kms_helper
    snd_hda_codec 74201 3 snd_hda_codec_intelhdmi,snd_hda_codec_realtek,snd_hda_intel
    snd_hwdep 5412 1 snd_hda_codec
    snd_pcm_oss 35308 0
    snd_mixer_oss 13746 1 snd_pcm_oss
    snd_pcm 70694 4 snd_hda_intel,snd_hda_codec,snd_pcm_oss
    snd_seq_dummy 1338 0
    snd_seq_oss 26726 0
    snd_seq_midi 4557 0
    snd_rawmidi 19056 1 snd_seq_midi
    snd_seq_midi_event 6003 2 snd_seq_oss,snd_seq_midi
    snd_seq 47263 6 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_midi_event
    snd_timer 19098 2 snd_pcm,snd_seq
    snd_seq_device 5700 5 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_rawmidi,snd_seq
    it87 17580 0
    hwmon_vid 2298 1 it87
    8712u 299673 0
    intel_agp 24119 2 i915
    snd 54148 18 snd_hda_codec_intelhdmi,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_seq_oss,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
    joydev 8708 0
    i2c_algo_bit 5028 1 i915
    video 17375 1 i915
    serio_raw 3978 0
    xhci 36330 0
    agpgart 31724 2 drm,intel_agp
    output 1871 1 video
    soundcore 6620 1 snd
    snd_page_alloc 7076 2 snd_hda_intel,snd_pcm
    lp 7060 0
    parport 32635 2 ppdev,lp
    usbhid 36110 0
    hid 67032 1 usbhid
    usb_storage 39553 0
    r8169 34076 0
    mii 4381 1 r8169
    ahci 32200 5
    total used free shared buffers cached
    Mem: 1863112 1211164 651948 0 57904 661816
    -/+ buffers/cache: 491444 1371668
    Swap: 2188280 0 2188280
    success.
    /usr/lib/pm-utils/sleep.d/00powersave suspend suspend:success.
    /usr/lib/pm-utils/sleep.d/01PulseAudio suspend suspend:success.
    /etc/pm/sleep.d/10_grub-common suspend suspend:success.
    /etc/pm/sleep.d/10_unattended-upgrades-hibernate suspend suspend:success.
    /usr/lib/pm-utils/sleep.d/49bluetooth suspend suspend:not applicable.
    /usr/lib/pm-utils/sleep.d/55NetworkManager suspend suspend:success.
    /usr/lib/pm-utils/sleep.d/75modules suspend suspend:not applicable.
    /usr/lib/pm-utils/sleep.d/90clock suspend suspend:not applicable.
    /usr/lib/pm-utils/sleep.d/94cpufreq suspend suspend:success.
    /usr/lib/pm-utils/sleep.d/95led suspend suspend:not applicable.
    /usr/lib/pm-utils/sleep.d/98video-quirk-db-handler suspend suspend:success.
    /usr/lib/pm-utils/sleep.d/99video suspend suspend:kernel.acpi_video_flags = 0
    success.
    /etc/pm/sleep.d/action_wpa suspend suspend:success.
    Fri Oct 1 22:37:54 CEST 2010: performing suspend
    Fri Oct 1 22:37:55 CEST 2010: Awake.
    Fri Oct 1 22:37:55 CEST 2010: Running hooks for resume
    /etc/pm/sleep.d/action_wpa resume suspend:success.
    /usr/lib/pm-utils/sleep.d/99video resume suspend:success.
    /usr/lib/pm-utils/sleep.d/98video-quirk-db-handler resume suspend:success.
    /usr/lib/pm-utils/sleep.d/95led resume suspend:not applicable.
    /usr/lib/pm-utils/sleep.d/94cpufreq resume suspend:success.
    /usr/lib/pm-utils/sleep.d/90clock resume suspend:not applicable.
    /usr/lib/pm-utils/sleep.d/75modules resume suspend:success.
    /usr/lib/pm-utils/sleep.d/55NetworkManager resume suspend:success.
    /usr/lib/pm-utils/sleep.d/49bluetooth resume suspend:not applicable.
    /etc/pm/sleep.d/10_unattended-upgrades-hibernate resume suspend:success.
    /etc/pm/sleep.d/10_grub-common resume suspend:success.
    /usr/lib/pm-utils/sleep.d/01PulseAudio resume suspend:success.
    /usr/lib/pm-utils/sleep.d/00powersave resume suspend:success.
    /usr/lib/pm-utils/sleep.d/00logging resume suspend:success.
    /usr/lib/pm-utils/sleep.d/000kernel-change resume suspend:success.
    Fri Oct 1 22:37:55 CEST 2010: Finished.

  3. 5 anonimo 21 oct 2011 en 18:40

    HOla.

    Estoy intentando hacer esto mismo pero con el programa VLC.

    He seguido todos los pasos y he cambiado el script sustituyendo 12_me-tv por vlc

    Cuando ejecuto el script con el comando

    $ sudo /etc/pm/sleep.d/killVLC suspend

    el programa VLC se cierra asi que el script parece funcionar. El problema es que cuando suspendo el ordenador manualmente, el script no se ejecuta. ¿basta con instalarlo en la carpeta …/sleep.d/?

    Uso ubuntu 10.10

    Gracias por el post, muy instructivo.

  4. 6 tatxem 21 oct 2011 en 19:08

    Basta colocarlo ahí y darle permisos de ejecución. ¿No te dice nada el log de por qué no se ejecuta al suspender?

  5. 7 darwin 30 ene 2012 en 23:14

    buenas tengo un asus a53e y no hay maner
    de que suspenda
    si aun suguen ayudando porfavor
    me responde
    y publicare los logs para ver si ustedes me ayudan
    gracias de antemano

  6. 8 DwLinuxero 19 feb 2013 en 0:29

    Lo mio es deprimente incluso sin haber ninguna aplicación abierta resulta que cuando suspendes, y recuperas la tarjeta de sonido USB NO sale, tienes que hacer un pkill pulseaudio para que salga algo deprimente y lo peor es que no encuentro ninguna pista por internet
    ¿Alguien me puede echar un cable?
    Esto pasa en el 95% de las distribuciones


  1. 1 Los mejores enlaces de la semana #18/2010 | La vida Linux Trackback en 10 may 2010 en 18:26

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




La Máquina Diferencial en Twitter

Add to Technorati Favorites
Creative Commons License
Esta obra está bajo una licencia de Creative Commons

Archivos

Wikio – Top Blogs – Linux

Introduce tu dirección de email para suscribirte al blog y recibir notificaciones de nuevos posts en tu email.

Únete a otros 308 seguidores


Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 308 seguidores

%d personas les gusta esto: