Como faço alterações em / proc / acpi / wakeup permanentes?

14

Eu tive um problema com o meu Ubuntu 12.04 acordando imediatamente após entrar em suspensão. Eu resolvi o problema alterando as configurações em / proc / acpi / wakeup, como sugerido nesta pergunta: Como evito o despertar imediato da suspensão e / ou hibernação? .

Depois de alterar as configurações, o sistema fica perfeitamente suspenso e permanece suspenso, mas depois que eu o acordo, as configurações em / proc / acpi / wakeup são diferentes daquelas para as quais 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 ele funciona como deveria. Mas depois de acordar, 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 idéia?

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

todos

/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

bem como

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

estão definidos como desativados, e o bloco de notas ainda acorda sozinho depois de dormir. A única coisa que parece reagir são as configurações em / proc / acpi / wakeup, que continuam mudando (redefinindo) toda vez que eu desligo / reinicio meu notebook.

    
por Jolan 18.06.2012 / 09:13

3 respostas

9

Talvez o link 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 root), você notará que o seu despertar USB está provavelmente quebrado. Eles mudaram a política de ativação padrão ( link ), então você precisará fazer alguns mudanças:

     
  • você não precisa mais ativar a ativação em /proc/acpi/wakeup , ela está 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 outras pessoas solucionem o mesmo problema.

    
por MTS 17.07.2012 / 22:59
9

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

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

#!/bin/bash
case  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 que estão atualmente desabilitados. Se você quiser apenas alterar dispositivos USB específicos, altere o loop for no script. Por exemplo, para alterar apenas a alteração 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.

    
por GjjvdBurg 15.03.2013 / 15:18
1

Para o Ubuntu 15+, você deve usar systemd em vez de rc.local . Você pode usar o 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 neste gist

    
por Derek DeRaps 07.04.2018 / 21:49