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! 😛