Bagaimana cara membuat perubahan ke / proc / acpi / wakeup permanen?

17

Saya punya masalah dengan Ubuntu 12,04 saya bangun segera setelah masuk ke penundaan. Saya memecahkan masalah dengan mengubah pengaturan di / proc / acpi / wakeup, seperti yang disarankan dalam pertanyaan ini: Bagaimana cara mencegah bangun langsung dari penangguhan dan / atau hibernasi? .

Setelah mengubah pengaturan, sistem berjalan dengan mulus ke menangguhkan dan tetap ditangguhkan, tetapi setelah saya bangun kembali, pengaturan di / proc / acpi / wakeup berbeda dari apa yang saya atur.

Sebelum menangguhkan:

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

Saya memberitahu sistem untuk menunda, dan berfungsi sebagaimana mestinya. Tetapi kemudian setelah membangunkannya, pengaturan diubah menjadi:

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

atau

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

Ada ide?


Terima kasih atas tanggapan Anda. Sayangnya itu tidak menyelesaikan masalah saya.

semua

/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

sebaik

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

diatur ke dinonaktifkan, dan notebook masih bangun dengan sendirinya tepat setelah tidur. Satu-satunya hal yang tampaknya bereaksi adalah pengaturan di / proc / acpi / wakeup, yang terus berubah (reset) setiap kali saya mematikan / me-restart notebook saya.

Jolan
sumber

Jawaban:

11

Saya mengalami masalah ini lagi di Ubuntu 12.10. Saran dari pengguna MTS sayangnya juga tidak berhasil untuk saya. Namun, Anda dapat menulis skrip untuk secara otomatis mengatur properti usb /proc/acpi/wakeuptepat sebelum setiap penundaan.

Solusinya didasarkan pada pembuatan kait penangguhan (berdasarkan artikel Archwiki ini ). Simpan yang berikut sebagai /usr/lib/pm-utils/sleep.d/45fixusbwakeup, dan pastikan untuk membuatnya dapat dieksekusi ( 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

Yang dilakukan adalah mengubah status setiap perangkat USB yang saat ini diaktifkan untuk dinonaktifkan. Jika Anda hanya ingin mengubah perangkat USB tertentu, ubah loop for for di skrip. Misalnya untuk mengubah hanya perubahan USB1 dan USB3

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

untuk

for usb in 'USB1' 'USB3';

Semoga ini bisa membantu orang lain yang memiliki masalah yang sama. Pendekatan ini memecahkan masalah bagi saya.

GjjvdBurg
sumber
1
Terima kasih! Saya memodifikasi skrip ini untuk menonaktifkan wakup dari perangkat USB di laptop Sony Vaio saya: gist.github.com/rutsky/1ed8e9779f0b2941c5a6
Vladimir Rutsky
Saya memodifikasi skrip Anda untuk menonaktifkan wakeup pada LID open (fitur benar-benar bodoh dan menjengkelkan dari sudut pandang saya). Terima kasih!
Gumkins
Pengait ekstra bermanfaat ini berfungsi di Ubuntu & Kubuntu, tetapi tidak di Xubuntu 15.04. Saya ingin tahu mengapa ... :(
Reloader
1
Berikut ini skrip yang dimodifikasi dari Vladimir Rutsky untuk kait tidur systemd dan bukannya pm-utils: gist.github.com/kepi/9dea7aee8a59f3e7c10a
Kepi
1
Jika ini bisa diperbarui untuk Ubuntu 16.04, itu akan bagus. Saya menggunakan solusi dari sini: askubuntu.com/a/620555/463546 (solusi yang lebih lama), tetapi secara keseluruhan agak rumit.
Aleksandr Dubinsky
9

Mungkin http://forum.xbmc.org/showthread.php?tid=121158 akan membantu?

Inilah yang dikatakan:

Bagi mereka yang memperbarui ke kernel 3.2 (yang seharusnya semua orang karena eksploitasi root baru-baru ini), Anda akan melihat bangun USB Anda mungkin rusak. Mereka mengubah kebijakan bangun default ( http://www.spinics.net/lists/linux-usb/msg53661.html ), jadi Anda harus melakukan beberapa perubahan:

  • Anda tidak perlu lagi mengaktifkan wakeup in /proc/acpi/wakeup, ini diaktifkan secara default
  • Anda harus mengaktifkan wakeup untuk hub USB di samping perangkat di /sys/bus/usb/devices/*/power/wakeup

Jadi ini:

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

Menjadi:

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

Semoga ini menyelamatkan orang lain dari pemecahan masalah masalah yang sama.

MTS
sumber
2

Untuk Ubuntu 15 +, Anda harus menggunakan systemdbukan rc.local. Anda dapat google "Membuat layanan systemd" dan mengikuti instruksi, tetapi perhatikan bahwa mengarahkan ulang output ke /proc/acpi/wakeupadalah rumit. Agar berfungsi dengan benar, Anda harus melakukan sesuatu seperti:

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

Contoh output untuk file layanan (misalnya, /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

Atau di sini di intisari ini

Derek DeRaps
sumber