モブ沢工房

プログラミングとかLinux関連(特にOSSのグラフィックツール関連)とかレトロゲームとか3Dプリンタやら日曜大工等、色々。

[Ubuntu] 14.04でサスペンドが直後に勝手に復帰してしまう時(備忘録)

この記事はfc2から引っ越した記事です

なんだか、14.04にしてから勝手にサスペンド(スリープ)が直後に復帰してしまうことがあるようです。
毎回ならまだしもなのですが、時折だったりするからよくわかりません。
/var/log/syslogとか、/var/log/pm-suspend.log等のログを見ても何がトリガーになったのかさっぱりわかりません。

まず疑ったのはNIC(Realtek r8169)なのですが、これが確かにWOLやら、サスペンド解除可否の/sys/bus/pci/devices/パス/wakeupがenabledになっております。

WOLはethtool eth0で、解除可否はcatで確認しました。

PCIのパスはlspciでわかります。一部を抜粋しますと

02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)


この先頭の02:00.0がそうで、
cat /sys/bus/pci/devices/0000\:02\:00.0/power/wakeup
というようにします。帰ってくるのはenabledかdisbledになっていると思います。あるいは存在しないというエラーが出た場合は、そのデバイスはwakeupに対応していないのでしょう…

しかし、ethtool -s eth0 wol dしたり、rootからecho 'disabled' > /sys/bus/pci/devices/0000\:02\:00.0/power/wakeupとしても、反映はするのですが、動作は一向に改善しません。どうも濡れ衣の模様。

次は疑わしいのはUSBかな〜と思って/sys/bus/usb/devices/以下を調べまくったのですが、そもそもwakeupがなかったり、あってもdisabledになってたりします。

そこでまたもlspciして、もよかったのですが、とりあえず/proc/acpi/wakeupを思い出したのでcatしてみました

: cat /proc/acpi/wakeup | grep enabled
EHC1      S4    *enabled   pci:0000:00:1d.0
EHC2      S4    *enabled   pci:0000:00:1a.0
XHC   S4    *enabled   pci:0000:00:14.0


むぅ…?

それでこの出力に従い、enabledになってる部分をとりあえず片っ端から、

echo 'disabled' > /sys/bus/pci/devices/0000\:00\:1d.0/power/wakeup
echo 'disabled' > /sys/bus/pci/devices/0000\:00\:1a.0/power/wakeup
echo 'disabled' > /sys/bus/pci/devices/0000\:00\:14.0/power/wakeup

としていったら、サスペンド(スリープ)が勝手に解除されることはなくなりました。
どうもusbがらみのようですね。それももしかするとインターフェース側のドライバかなぁ?と…

ちなみにこの環境でlspciした時の、上記のバスに該当する部分は

00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04)
00:1a.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (rev 04)
00:1d.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)



当然ながら、これでキーボードから復帰することができなくなってしまいましたが、本体電源ボタンで復帰できるのでおいら的には実用上、問題はないです。

なんだか、14.04にしてから勝手にサスペンド(スリープ)が直後に復帰してしまうことがあるようです。
毎回ならまだしもなのですが、時折だったりするからよくわかりません。
/var/log/syslogとか、/var/log/pm-suspend.log等のログを見ても何がトリガーになったのかさっぱりわかりません。

まず疑ったのはNIC(Realtek r8169)なのですが、これが確かにWOLやら、サスペンド解除可否の/sys/bus/pci/devices/パス/wakeupがenabledになっております。

WOLはethtool eth0で、解除可否はcatで確認しました。

PCIのパスはlspciでわかります。一部を抜粋しますと

02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)


この先頭の02:00.0がそうで、
cat /sys/bus/pci/devices/0000:02:00.0/power/wakeup
というようにします。帰ってくるのはenabledかdisbledになっていると思います。あるいは存在しないというエラーが出た場合は、そのデバイスはwakeupに対応していないのでしょう…

しかし、ethtool -s eth0 wol dしたり、rootからecho 'disabled' > /sys/bus/pci/devices/0000:02:00.0/power/wakeupとしても、反映はするのですが、動作は一向に改善しません。どうも濡れ衣の模様。

次は疑わしいのはUSBかな〜と思って/sys/bus/usb/devices/以下を調べまくったのですが、そもそもwakeupがなかったり、あってもdisabledになってたりします。

そこでまたもlspciして、もよかったのですが、とりあえず/proc/acpi/wakeupを思い出したのでcatしてみました

: cat /proc/acpi/wakeup | grep enabled
EHC1      S4    enabled   pci:0000:00:1d.0
EHC2      S4    enabled   pci:0000:00:1a.0
XHC   S4    *enabled   pci:0000:00:14.0


むぅ…?

それでこの出力に従い、enabledになってる部分をとりあえず片っ端から、

echo 'disabled' > /sys/bus/pci/devices/0000:00:1d.0/power/wakeup
echo 'disabled' > /sys/bus/pci/devices/0000:00:1a.0/power/wakeup
echo 'disabled' > /sys/bus/pci/devices/0000:00:14.0/power/wakeup

としていったら、サスペンド(スリープ)が勝手に解除されることはなくなりました。
どうもusbがらみのようですね。それももしかするとインターフェース側のドライバかなぁ?と…

ちなみにこの環境でlspciした時の、上記のバスに該当する部分は

00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04)
00:1a.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (rev 04)
00:1d.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)



当然ながら、これでキーボードから復帰することができなくなってしまいましたが、本体電源ボタンで復帰できるのでおいら的には実用上、問題はないです。

fc2コメント:

2014/06/02 09:23:29 | Ubuntuユーザ

trip:kLX8MjfbHlY9BifB

/etc/pm/config.d/unload_modules に SUSPEND_MODULES=xhci でどうですか? USB3.0が出てきたころから定番の問題です

Re: タイトルなし

2014/06/02 16:43:02 | dothiko

trip:NbbOyPNtM/4/flzI

> Ubuntuユーザさん:

> /etc/pm/config.d/unload_modules に > SUSPEND_MODULES=xhci > でどうですか? > USB3.0が出てきたころから定番の問題です

情報ありがとうございます! 定番だったのですね。なんか、行けそうな気がします。 しかし残念ながら、都合により月末まで試すことができなさそうです…orz

2014/06/03 05:09:38 | Ubuntuユーザ

trip:kLX8MjfbHlY9BifB

失礼、10.10以降はモジュール名がxhci-hcdです SUSPEND_MODULES="xhci-hcd"

Re: タイトルなし

2014/06/03 12:09:27 | dothiko

trip:NbbOyPNtM/4/flzI

> Ubuntuユーザさん: > 失礼、10.10以降はモジュール名がxhci-hcdです > SUSPEND_MODULES="xhci-hcd"

更なる情報、ありがとうございます 了解しました〜

2014/06/29 18:37:20 | dothiko

trip:4pKgCPtosQ99Cs/c

ようやく試せましたがダメでした…顛末は http://dothiko.blog.fc2.com/blog-entry-130.html に書いておきましたです…
この記事におけるコメントのトリップは、バックアップによって取得されたものを、更に独自の方法でハッシュ化したものであり、fc2ブログでの表示とは異なります