Problemas ao suspender no Ubuntu

Tenho um computador desktop relativamente antigo que usa uma motherboard Asus M2NPV-VM e a função de suspender no Ubuntu nunca funcionou adequadamente. O sintoma do problema é bem simples: ao suspender, o computador imediatamente volta ao estado normal, como se algo o tivesse ativado novamente, tirando da suspensão.

Pesquisando bastante sobre o assunto (o que foi bem difícil, pois suspender/hibernar tem muitos tipos de problemas diferentes, ou talvez meu caso seja bem específico), entendi que a raiz do problema estava relacionada a algo que disse no parágrafo anterior:

“imediatamente volta ao estado normal, como se algo o tivesse ativado novamente”

Então a solução foi ver como desabilitar quem faz o sistema “acordar” do modo de suspensão. Mesmo configurando na bios, o computador nunca se mantinha suspenso, então o jeito era informar ao sistema. Dei uma olhada como estava a minha configuração no Linux:

% cat /proc/acpi/wakeup
Device S-state Status Sysfs node
HUB0 S5 *disabled pci:0000:00:10.0
XVRA S5 *disabled pci:0000:00:04.0
XVRB S5 *disabled
XVRC S5 *disabled
UAR1 S5 *disabled pnp:00:06
UAR2 S5 *disabled pnp:00:07
PS2K S4 *enabled pnp:00:09
USB0 S4 *enabled pci:0000:00:0b.0
USB2 S4 *enabled pci:0000:00:0b.1
AZAD S5 *disabled pci:0000:00:10.1
MMAC S5 *disabled pci:0000:00:14.0
MMCI S5 *disabled

No meu caso, os dispositivos USB estavam “acordando” o sistema. Desabilitando isso desse jeito:

% echo USB0 | tee /proc/acpi/wakeup
% echo USB2 | tee /proc/acpi/wakeup

Checando:

% cat /proc/acpi/wakeup 
Device S-state Status Sysfs node
HUB0 S5 *disabled pci:0000:00:10.0
XVRA S5 *disabled pci:0000:00:04.0
XVRB S5 *disabled
XVRC S5 *disabled
UAR1 S5 *disabled pnp:00:06
UAR2 S5 *disabled pnp:00:07
PS2K S4 *enabled pnp:00:09
USB0 S4 *disabled pci:0000:00:0b.0
USB2 S4 *disabled pci:0000:00:0b.1
AZAD S5 *disabled pci:0000:00:10.1
MMAC S5 *disabled pci:0000:00:14.0
MMCI S5 *disabled

E testando:

% pm-suspend

Funcionou!

Aí foi só colocar em algum lugar para subir automaticamente com o sistema. Coloquei no /etc/rc.local as duas linhas que desabilitam o USB de acordar o sistema:

#!/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 | tee /proc/acpi/wakeup
echo USB2 | tee /proc/acpi/wakeup
exit 0

E voilá!

(cada caso é um caso, mas é provável que algo assim funcione para outros sistemas!)

Ok, três anos para resolver esse probleminha é muito tempo, admito! 😛

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.