/ proc / acpi / wakeup을 영구적으로 변경하려면 어떻게합니까?


17

일시 중단 된 후 즉시 깨어 난 Ubuntu 12.04에 문제가있었습니다. 이 질문에서 제안하는 것처럼 / proc / acpi / wakeup의 설정을 변경하여 문제를 해결했습니다. 일시 중지 및 / 또는 최대 절전 모드에서 즉시 깨우기를 방지하려면 어떻게해야합니까? .

설정을 변경 한 후 시스템은 완벽하게 일시 중단되고 일시 중단 된 상태로 유지되지만 다시 깨운 후에 / proc / acpi / wakeup의 설정은 내가 설정 한 것과 다릅니다.

일시 중지하기 전에 :

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

시스템이 일시 중지하도록 지시하면 정상적으로 작동합니다. 그러나 나중에 깨우면 설정이 다음 중 하나로 변경됩니다.

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

또는

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

어떤 아이디어?


당신의 응답을 주셔서 감사합니다. 불행히도 그것은 내 문제를 해결하지 못했습니다.

모든

/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

만큼 잘

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

이 비활성화되어 있으며 노트북은 절전 모드로 전환 된 직후에도 자체적으로 깨어납니다. 반응하는 유일한 것은 / proc / acpi / wakeup의 설정입니다. 노트북의 전원을 끄거나 다시 시작할 때마다 계속 변경 (재설정)됩니다.

답변:


11

우분투 12.10 에서이 문제가 다시 발생했습니다. 불행히도 사용자 MTS의 제안도 효과가 없었습니다. 그러나 /proc/acpi/wakeup모든 일시 중단 직전에 usb 속성을 자동으로 설정하는 스크립트를 작성할 수 있습니다 .

이 솔루션은 Suspend Hook 생성 ( 이 Archwiki 기사 기반)을 기반으로 합니다 . 다음을로 저장하고 /usr/lib/pm-utils/sleep.d/45fixusbwakeup실행 가능하게 만드십시오 ( 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

이 작업 은 현재 활성화 된 모든 USB 장치 의 상태 를 비활성화로 변경합니다. 특정 USB 장치 만 변경하려면 스크립트에서 for 루프를 변경하십시오. 예를 들어 USB1 및 USB3 변경 만 변경하려면

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

for usb in 'USB1' 'USB3';

바라건대 이것은 같은 문제가있는 다른 사람을 돕습니다. 이 접근법은 나를 위해 문제를 해결했습니다.


1
감사! Sony Vaio 랩톱의 USB 장치에서 깨우기를 비활성화하도록이 스크립트를 수정했습니다. gist.github.com/rutsky/1ed8e9779f0b2941c5a6
Vladimir Rutsky

LID를 열 때 깨우기를 사용하지 않도록 스크립트를 수정했습니다 (실제로 어리 석고 성가신 기능). 감사합니다!
gumkins

이 유용한 후크는 우분투와 쿠분투에서는 작동하지만 Xubuntu 15.04에서는 작동하지 않습니다. 나는 왜 궁금해 ... :(
Reloader

1
다음은 대신 오후-유틸의 systemd 수면 훅 블라디미르 Rutsky에서 스크립트를 수정 gist.github.com/kepi/9dea7aee8a59f3e7c10a
케피

1
이것이 Ubuntu 16.04에 대해 업데이트 될 수 있다면 좋을 것입니다. 여기에서 솔루션을 사용했습니다 : askubuntu.com/a/620555/463546 (이전 솔루션), 그러나 전체적으로 약간 번거 롭습니다.
Aleksandr Dubinsky

9

아마도 http://forum.xbmc.org/showthread.php?tid=121158 가 도움이 될 것입니까?

이것이 말하는 것입니다 :

3.2 커널로 업데이트하는 사람들 (최근 루트 익스플로잇으로 인해 모두가되어야 함)의 경우 USB 웨이크 업이 깨졌을 수 있습니다. 기본 깨우기 정책 ( http://www.spinics.net/lists/linux-usb/msg53661.html )을 변경 했으므로 몇 가지 사항을 변경해야합니다.

  • 더 이상 깨우기를 활성화 할 필요가 없습니다. /proc/acpi/wakeup기본적으로 활성화되어 있습니다.
  • 장치 외에 USB 허브에 대해 웨이크 업을 활성화해야합니다. /sys/bus/usb/devices/*/power/wakeup

그래서 이건:

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

된다 :

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

바라건대 이것은 다른 사람들이 같은 문제를 해결하지 못하게합니다.


2

Ubuntu 15+의 경우 systemd대신 대신 사용해야 합니다 rc.local. Google "시스템 서비스 만들기"를 수행하고 지침을 따를 수 있지만 출력을 리디렉션하는 /proc/acpi/wakeup것은 까다 롭습니다. 제대로 작동하려면 다음과 같은 작업을 수행해야합니다.

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

서비스 파일의 출력 예 (예 :) /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

아니면이 요점에서

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.