web-dev-qa-db-ja.com

MacBookAirにインストールされたUbuntu14.04でrtcwakeが機能しない(2012年半ば)

MacBookAirにUbuntu14.04 GNU/Linuxをインストールしました(2012年半ば)。 https://askubuntu.com/a/33192 (特定のユースケースは重要ではありません)のように、rtcwakeを使用して「サスペンドからの遅延休止」を実装しようとしています。ここに)。しかし、rtcwake、発行された例:なので、

Sudo rtcwake --seconds 120  --mode mem

suspend(--mode memを数秒間だけ--secondsオプションの内容に関係なく)入力し、すぐに戻ります。このシステムでは、サスペンドと休止状態の両方が正しく機能します。 pm-suspendまたはpm-hibernate(カーネルのswsuspを使用)によってトリガーされたとき、またはふたを閉じたとき。マシンは時間を正しく保持し、Ubuntuで表示または更新できます。同じコマンドが、同様のGNU/Linux OSを搭載した別の(Apple以外の)マシンで期待どおりに機能します。

MAC OS Xには、事前設定された時間または事前設定された期間の後にスリープから復帰するこの種の機能があることを私は知っています。ですから、彼らは内部時計にアクセスしていると思います。私の質問は(すべて関連しています):

この即時のウェイクアップをトリガーする、舞台裏で発生するウェイクアップイベントはありますか?上で述べたように、マシンが正しくサスペンドしないため、これが原因である可能性はありません。 (ただし、正しくサスペンドしない場合は、問題のあるモジュールがそのような「通常の」サスペンドの前にSUSPEND_MODULESフックによって削除されたことが原因である可能性があります。)また、マシンは通常のサスペンドからウェイクアップしません。スケジュールされたrtcwakeがそうすべきだと言ったときに、たとえばふたを閉じることによってトリガーされます。

「隠された」ウェイクアップイベントがない場合、rtcwakeが機能していないように見えるので、この内部クロックを使用して、GNU/Linuxでサスペンドからスケジュールされたウェイクアップをトリガーするにはどうすればよいですか?このクロックRTCは、GNU/Linuxツールからの標準ドライバーモデルウェイクアップフラグをサポートするために互換性がありますか?この結果を達成するための他の方法/回避策はありますか?

1
Omid

私は犯人を突き止めました。 cat /proc/acpi/wakeupを実行し、*enabledデバイスを1つずつ無効にします(たとえば、Sudo echo 'DEVABBRV' > /proc/acpi/wakeupを使用します。ここで、DEVABBRVcatにリストされているデバイスの略語です。上記の出力)、LID0がマシンを「時期尚早に」ウェイクアップしていることがわかります。

これはおそらく、蓋にある非標準の独自のハードウェアセンサーが原因です。 LID0のウェイクアップ機能を無効にすると(echo 'LID0' > /proc/acpi/wakeup/etc/rc.localに追加することで永続化できます)、rtcwake、特にSudo rtcwake --seconds 120 --mode memが機能します。予想通り。

ただし、rtcwake以降、この問題は私の特定のユースケース(スクリプトは https://askubuntu.com/a/33192 )では未解決のままです。そのスクリプトで実行されたときにマシンをウェイクアップしません。

1
Omid