Como faço para alterar permanentemente o / proc / acpi / wakeup?

17

Eu tive um problema com o meu Ubuntu 12.04 ao acordar imediatamente após entrar em suspensão. Resolvi o problema alterando as configurações em / proc / acpi / wakeup, conforme sugerido nesta pergunta: Como impedir a ativação imediata da suspensão e / ou hibernação? .

Depois de alterar as configurações, o sistema entra em suspensão na perfeição e permanece suspenso, mas depois que eu o reativo, as configurações em / proc / acpi / wakeup são diferentes do que eu as defini.

Antes de suspender:

cat /proc/acpi/wakeup
Device  S-state   Status   Sysfs node
SMB0      S4    *disabled  pci:0000:00:03.2
PBB0      S4    *disabled  pci:0000:00:09.0
HDAC      S4    *disabled  pci:0000:00:08.0
XVR0      S4    *disabled  pci:0000:00:0c.0
XVR1      S4    *disabled  
P0P5      S4    *disabled  
P0P6      S4    *disabled  pci:0000:00:15.0
GLAN      S4    *enabled   pci:0000:03:00.0
P0P7      S4    *disabled  pci:0000:00:16.0
P0P8      S4    *disabled  
P0P9      S4    *disabled  
USB0      S3    *disabled  pci:0000:00:04.0
USB2      S3    *disabled  pci:0000:00:04.1
US15      S3    *disabled  pci:0000:00:06.0
US12      S3    *disabled  pci:0000:00:06.1
PWRB      S4    *enabled   
SLPB      S4    *enabled

Eu digo ao sistema para suspender e funciona como deveria. Mas, mais tarde, depois de ativá-lo, as configurações são alteradas para:

USB0      S3    *disabled  pci:0000:00:04.0
USB2      S3    *enabled   pci:0000:00:04.1
US15      S3    *disabled  pci:0000:00:06.0
US12      S3    *enabled   pci:0000:00:06.1

ou

USB0      S3    *enabled   pci:0000:00:04.0
USB2      S3    *enabled   pci:0000:00:04.1
US15      S3    *enabled   pci:0000:00:06.0
US12      S3    *enabled   pci:0000:00:06.1

Alguma ideia?


Obrigado pela sua resposta. Infelizmente, isso não resolveu o meu problema.

tudo de

/sys/bus/usb/devices/usb1/power/wakeup
/sys/bus/usb/devices/usb2/power/wakeup
/sys/bus/usb/devices/usb3/power/wakeup
/sys/bus/usb/devices/usb4/power/wakeup

assim como

/sys/bus/usb/devices/3-1/power/wakeup

está desativado e o notebook ainda é ativado automaticamente logo após dormir. A única coisa que parece reagir são as configurações em / proc / acpi / wakeup, que mudam (redefinindo) toda vez que eu desligo / reinicio o notebook.

Jolan
fonte

Respostas:

11

Eu encontrei esse problema novamente no Ubuntu 12.10. Infelizmente, as sugestões do usuário MTS também não funcionaram para mim. No entanto, você pode escrever um script para definir automaticamente as propriedades do usb /proc/acpi/wakeupantes de cada suspensão.

A solução é baseada na criação de um gancho de suspensão (baseado neste artigo do Archwiki ). Salve o seguinte como /usr/lib/pm-utils/sleep.d/45fixusbwakeupe certifique-se de torná-lo executável ( chmod +x /usr/lib/pm-utils/sleep.d/45fixusbwakeup).

#!/bin/bash
case $1 in
    hibernate)
            echo "Going to suspend to disk!"
            ;;
    suspend)
            echo "Fixing acpi settings."
            for usb in `cat /proc/acpi/wakeup | grep USB | cut -f1`;
            do
                    state=`cat /proc/acpi/wakeup | grep $usb | cut -f3 | cut -d' ' -f1 | tr -d '*'`
                    echo "device = $usb, state = $state"
                    if [ "$state" == "enabled" ]
                    then
                            echo $usb > /proc/acpi/wakeup
                    fi
            done
            echo "Suspending to RAM."
            ;;
    thaw)
            echo "Suspend to disk is now over!"
            ;;
    resume)
            echo "We are now resuming."
            ;;
    *)
            echo "Somebody is callin me totally wrong."
            ;;
esac

O que isso faz é alterar o status de todos os dispositivos USB atualmente ativados para desativados. Se você deseja alterar apenas dispositivos USB específicos, altere o loop for no script. Por exemplo, para alterar apenas as alterações USB1 e USB3

for usb in `cat /proc/acpi/wakeup | grep USB | cut -f1`;

para

for usb in 'USB1' 'USB3';

Espero que isso ajude alguém que tenha o mesmo problema. Essa abordagem resolveu o problema para mim.

GjjvdBurg
fonte
11
Obrigado! Eu modifiquei este script para desativar wakup partir de dispositivos USB no meu laptop Sony Vaio: gist.github.com/rutsky/1ed8e9779f0b2941c5a6
Vladimir Rutsky
Modifiquei seu script para desativar a ativação do LID aberto (recurso realmente estúpido e irritante do meu ponto de vista). Obrigado!
gumkins
Este gancho extra útil funciona no Ubuntu e no Kubuntu, mas não no Xubuntu 15.04. Gostaria de saber por que ... :(
Reloader
11
Aqui está um script modificado de Vladimir Rutsky para systemd sleep hook em vez de pm-utils: gist.github.com/kepi/9dea7aee8a59f3e7c10a
Kepi
11
Se isso pudesse ser atualizado para o Ubuntu 16.04, seria ótimo. Eu usei a solução aqui: askubuntu.com/a/620555/463546 (a solução mais antiga), mas é um pouco complicada no total.
Aleksandr Dubinsky
9

Talvez http://forum.xbmc.org/showthread.php?tid=121158 ajude?

Isto é o que diz:

Para aqueles que estão atualizando para o kernel 3.2 (que deve ser todo mundo devido à recente exploração de raiz), você notará que a ativação do USB provavelmente está interrompida. Eles mudaram a política de ativação padrão ( http://www.spinics.net/lists/linux-usb/msg53661.html ), portanto, você precisará fazer algumas alterações:

  • você não precisa mais ativar a ativação /proc/acpi/wakeup, ela é ativada por padrão
  • você precisa ativar a ativação do hub USB, além do dispositivo em /sys/bus/usb/devices/*/power/wakeup

Então, é isso:

echo USB1 > /proc/acpi/wakeup
echo enabled > /sys/bus/usb/devices/3-1/power/wakeup

Torna-se:

echo enabled > /sys/bus/usb/devices/usb3/power/wakeup
echo enabled > /sys/bus/usb/devices/3-1/power/wakeup

Espero que isso evite que outros resolvam o mesmo problema.

MTS
fonte
2

Para o Ubuntu 15+, você deve usar em systemdvez de rc.local. Você pode pesquisar no Google "Criando um serviço systemd" e seguir as instruções, mas observe que redirecionar a saída para /proc/acpi/wakeupé complicado. Para que funcione corretamente, você deve fazer algo como:

/bin/sh -c '/bin/echo XHC > /proc/acpi/wakeup'

Exemplo de saída para o arquivo de serviço (por exemplo, /etc/systemd/system/suspendfix.service):

[Unit]
Description=fix to prevent system from waking immediately after suspend

[Service]
ExecStart=/bin/sh -c '/bin/echo XHC > /proc/acpi/wakeup'
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Ou aqui nesta essência

Derek DeRaps
fonte