Làm cách nào để tôi thay đổi vĩnh viễn / Proc / acpi / Wakeup?


17

Tôi gặp vấn đề với Ubuntu 12.04 của tôi thức dậy ngay lập tức sau khi bị đình chỉ. Tôi đã giải quyết vấn đề bằng cách thay đổi cài đặt trong / Proc / acpi / Wakeup, như được đề xuất trong câu hỏi này: Làm cách nào để ngăn tôi thức dậy ngay lập tức khỏi việc tạm dừng và / hoặc ngủ đông? .

Sau khi thay đổi cài đặt, hệ thống sẽ hoàn toàn tạm dừng và tạm dừng, nhưng sau khi tôi đánh thức lại, các cài đặt trong / Proc / acpi / Wakeup khác với những gì tôi đặt.

Trước khi đình chỉ:

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

Tôi nói với hệ thống tạm dừng, và nó hoạt động như bình thường. Nhưng sau khi thức dậy, các cài đặt được thay đổi thành:

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

hoặc là

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

Có ý kiến ​​gì không?


Cảm ơn bạn đã phản hồi của bạn. Thật không may, nó không giải quyết được vấn đề của tôi.

tất cả

/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

cũng như

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

được đặt thành vô hiệu hóa và máy tính xách tay vẫn tự thức dậy ngay sau khi đi ngủ. Điều duy nhất nó dường như phản ứng với các cài đặt trong / Proc / acpi / Wakeup, luôn thay đổi (đặt lại) mỗi khi tôi tắt / khởi động lại máy tính xách tay của mình.

Câu trả lời:


11

Tôi gặp vấn đề này một lần nữa trên Ubuntu 12.10. Rất tiếc, những gợi ý từ người dùng MTS cũng không phù hợp với tôi. Tuy nhiên, bạn có thể viết một tập lệnh để tự động đặt thuộc tính usb /proc/acpi/wakeupngay trước mỗi lần tạm dừng.

Giải pháp dựa trên việc tạo ra một cái móc treo (dựa trên bài viết Archwiki này ). Lưu các mục sau dưới dạng /usr/lib/pm-utils/sleep.d/45fixusbwakeupvà đảm bảo làm cho nó có thể thực thi được ( 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

Điều này làm là thay đổi trạng thái của mọi thiết bị USB hiện đang được bật để tắt. Nếu bạn chỉ muốn thay đổi các thiết bị USB cụ thể, hãy thay đổi vòng lặp for trong tập lệnh. Ví dụ: chỉ thay đổi USB1 và ​​USB3 thay đổi

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

đến

for usb in 'USB1' 'USB3';

Hy vọng rằng điều này sẽ giúp người khác có cùng một vấn đề. Cách tiếp cận này đã giải quyết vấn đề cho tôi.


1
Cảm ơn! Tôi đã sửa đổi tập lệnh này để vô hiệu hóa wakup từ các thiết bị USB trên máy tính xách tay Sony Vaio của tôi: gist.github.com/rutsky/1ed8e9779f0b2941c5a6
Vladimir Rutsky

Tôi đã sửa đổi tập lệnh của bạn để vô hiệu hóa đánh thức khi mở LID (tính năng thực sự ngu ngốc và gây phiền nhiễu theo quan điểm của tôi). Cảm ơn bạn!
kẹo cao su

Móc hữu ích bổ sung này hoạt động trong Ubuntu & Kubfox, nhưng không có trong Xubfox 15.04. Tôi tự hỏi tại sao ... :(
reloader

1
Dưới đây là tập lệnh được sửa đổi từ Vladimir Rutsky cho hook hook systemd thay vì pm-utils: gist.github.com/kepi/9dea7aee8a59f3e7c10a
Kepi

1
Nếu điều này có thể được cập nhật cho Ubuntu 16.04, nó sẽ rất tuyệt. Tôi đã sử dụng giải pháp từ đây: Askubfox.com/a/620555/463546 (giải pháp cũ hơn), nhưng tổng cộng nó hơi cồng kềnh.
Alexanderr Dubinsky

9

Có lẽ http://forum.xbmc.org/showthread.php?tid=121158 sẽ giúp ích?

Đây là những gì nó nói:

Đối với những người đang cập nhật lên kernel 3.2 (đáng lẽ là tất cả mọi người do khai thác root gần đây), bạn sẽ nhận thấy việc đánh thức USB của mình có thể bị hỏng. Họ đã thay đổi chính sách đánh thức mặc định ( http://www.spinics.net/lists/linux-usb/msg53661.html ), vì vậy bạn sẽ cần thực hiện một vài thay đổi:

  • bạn không còn cần phải bật đánh thức /proc/acpi/wakeup, nó được bật theo mặc định
  • bạn cần bật chức năng đánh thức cho trung tâm USB ngoài thiết bị trong /sys/bus/usb/devices/*/power/wakeup

Vì vậy, đây:

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

Trở thành:

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

Hy vọng rằng điều này sẽ cứu người khác khỏi sự cố tương tự.


2

Đối với Ubuntu 15+, bạn phải sử dụng systemdthay vì rc.local. Bạn có thể google "Tạo một dịch vụ systemd" và làm theo hướng dẫn, nhưng lưu ý rằng việc chuyển hướng đầu ra đến /proc/acpi/wakeuplà khó khăn. Để làm cho nó hoạt động chính xác, bạn phải làm một cái gì đó như:

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

Ví dụ đầu ra cho tệp dịch vụ (ví dụ /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

Hoặc ở đây trong ý chính này

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.