nmtysh.log

Tech系のネタや日々の独り言などを書いています。

Ubuntu でサスペンド/ハイバネートの失敗とその対策

昨日気がついたのですが、 Ubuntu 10.04 でサスペンド/ハイバネート(以下、サスペンド)が出来なくなっていました。
サスペンドを行おうとすると、数秒間画面が真っ黒になりますがすぐに画面ロックの状態になります。 サスペンドに移行できていません。 ログ(/var/log/kern.log)を見ると、

...
PM: Device usb9 failed to suspend: error -2
...

とエラーが出ていました。
エラーログを Google で検索すると、 Linux-Kernel Archive: Re: pm_op(): usb_dev_suspend+0x0/0x10 returns -2 on USB device8087:0020 Bug #522998 in linux (Ubuntu): “XHCI (USB 3.0) kernel Module Prevents Suspend” などが出てきました。
どうやら最近追加した USB 3.0 の拡張インターフェースボードが原因でサスペンドに失敗していたようです。
サスペンドが出来ないと不便なので、先ほどのサイトを参考にして /etc/pm/config.d/00sleep_module/etc/pm/config.d/unload_modules に次の1行を追加しました。

SUSPEND_MODULES="xhci"

ファイルを編集した後、サスペンドに挑戦すると無事にサスペンドすることが出来ました。 その後、ちゃんとサスペンドから復帰しました。

2010/09/30追記:
/etc/pm/config.d/00sleep_module に追加するだけでサスペンド出来るようになりましたが、念のため /etc/pm/config.d/unload_modules にも記述しました。
追記するのは /etc/pm/config.d/00sleep_module だけで良いと思います。

2010/11/17追記:
Ubuntu 10.04 ではモジュール名が変更されています。 /etc/pm/config.d/unload_modules には

SUSPEND_MODULES="xhci-hcd"

と記述してください。(参考:MaverickMeerkat/ReleaseNotes/ja - Ubuntu Wiki)