¿Cómo hago cambios permanentes / proc / acpi / wakeup?

17

Tuve un problema con mi Ubuntu 12.04 despertando inmediatamente después de suspenderlo. Resolví el problema cambiando la configuración en / proc / acpi / wakeup, como se sugiere en esta pregunta: ¿Cómo evito que el despertador inmediato se suspenda y / o hiberne? .

Después de cambiar la configuración, el sistema pasa a la suspensión sin problemas y permanece suspendido, pero después de volver a activarlo, la configuración en / proc / acpi / wakeup es diferente de lo que configuré.

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

Le digo al sistema que suspenda, y funciona como debería. Pero más tarde, después de despertarlo, la configuración cambia a:

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

o

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

¿Algunas ideas?


Gracias por su respuesta. Lamentablemente no resolvió mi problema.

todo

/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

tanto como

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

están configurados en deshabilitado, y el portátil aún se despierta solo después de irse a dormir. Lo único a lo que parece reaccionar son las configuraciones en / proc / acpi / wakeup, que siguen cambiando (reiniciando) cada vez que apago / reinicio mi computadora portátil.

Jolan
fuente

Respuestas:

11

Me encontré con este problema nuevamente en Ubuntu 12.10. Desafortunadamente, las sugerencias del usuario MTS tampoco funcionaron para mí. Sin embargo, puede escribir un script para establecer automáticamente las propiedades del usb /proc/acpi/wakeupjusto antes de cada suspensión.

La solución se basa en crear un gancho de suspensión (basado en este artículo de Archwiki ). Guarde lo siguiente como /usr/lib/pm-utils/sleep.d/45fixusbwakeupy asegúrese de hacerlo ejecutable ( 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

Lo que esto hace es cambiar el estado de cada dispositivo USB que actualmente está habilitado o deshabilitado. Si solo desea cambiar dispositivos USB específicos, cambie el bucle for en el script. Por ejemplo, para cambiar solo USB1 y USB3 cambiar

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

a

for usb in 'USB1' 'USB3';

Esperemos que esto ayude a alguien que tiene el mismo problema. Este enfoque resolvió el problema para mí.

GjjvdBurg
fuente
1
¡Gracias! Modifiqué este script para deshabilitar la activación desde dispositivos USB en mi computadora portátil Sony Vaio: gist.github.com/rutsky/1ed8e9779f0b2941c5a6
Vladimir Rutsky
Modifiqué su script para deshabilitar la activación en LID abierto (característica realmente estúpida y molesta desde mi punto de vista). ¡Gracias!
gumkins
Este gancho extra útil funciona en Ubuntu y Kubuntu, pero no en Xubuntu 15.04. Me pregunto por qué ... :(
Reloader
1
Aquí se modifica la escritura de Vladimir Rutsky para el gancho systemd sueño en lugar de pm-utils: gist.github.com/kepi/9dea7aee8a59f3e7c10a
Quepis
1
Si esto pudiera actualizarse para Ubuntu 16.04, sería genial. Usé la solución desde aquí: askubuntu.com/a/620555/463546 (la solución más antigua), pero es un poco engorroso en total.
Aleksandr Dubinsky
9

¿Quizás http://forum.xbmc.org/showthread.php?tid=121158 ayudará?

Esto es lo que dice:

Para aquellos que están actualizando al kernel 3.2 (que debería ser todo el mundo debido a la reciente explotación de la raíz), notarán que su activación de USB probablemente esté rota. Cambiaron la política de activación predeterminada ( http://www.spinics.net/lists/linux-usb/msg53661.html ), por lo que deberá realizar un par de cambios:

  • ya no necesita habilitar la activación /proc/acpi/wakeup, está habilitada de manera predeterminada
  • debe habilitar la activación del concentrador USB además del dispositivo en /sys/bus/usb/devices/*/power/wakeup

Así que esto:

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

Se convierte en:

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

Esperemos que esto evite que otros resuelvan el mismo problema.

MTS
fuente
2

Para Ubuntu 15+, debe usar en systemdlugar de rc.local. Puede buscar en Google "Crear un servicio systemd" y seguir las instrucciones, pero tenga en cuenta que redirigir la salida a /proc/acpi/wakeupes complicado. Para que funcione correctamente, debe hacer algo como:

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

Ejemplo de salida para el archivo de servicio (p. Ej. /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

O aquí en esta esencia

Derek DeRaps
fuente