スリープした Mac を起こす

スリープ中の Mac も起こせます。ただし、深く眠りすぎていないことが条件です。

Mac がスリープしていて接続できません

ペアリング済みリストで左にスワイプして「起動」(Wake-on-LAN)を選んでから接続してください。前提条件:Mac の システム設定 → バッテリー/エネルギー で「ネットワークアクセスによるスリープ解除」を有効にしておくこと。電源接続時や有線 LAN 接続時が最も確実です。

起きたのに、まだつながらない

  • Mac の電源が入っていて、TouchNow Host が動作している必要があります。App を終了していると接続を受け付けません。
  • MacBook のふたは閉じないでください。閉じるとすぐにスリープします。
  • 外出時は電源につないだままにしてください。バッテリー駆動では macOS が Wi-Fi も止めるため、リモートからは起こせません。
  • 「システム設定」で「ディスプレイがオフのときに自動でスリープさせない」をオンにします。MacBook は「バッテリー → オプション」、デスクトップ Mac は「省エネルギー」にあります。画面は消えますが、本体は深く眠りません。

起きたのに、画面がずっと「受信中」のまま

Wake-on-LAN で Mac を起こすと、入るのは DarkWake です。本体は動いていて、ネットワークもつながり、Host も接続を受け付けます。ところがディスプレイにはまだ電力が来ていません。ディスプレイがなければフレームバッファもないので、画面収録の API は起動に成功したうえで 1 フレームも出しません。だから「つながったのに受信中のまま」に見えます。

これは回線が遅いのでも、権限が足りないのでもありません。macOS の「システムのアイドルスリープを防ぐ」も効きません。DarkWake のあとに来るのはメンテナンススリープであって、アイドルスリープではないからです。

TouchNow Host は、ディスプレイがまだ眠っていることを検出したらユーザー操作を宣言します(IOPMAssertionDeclareUserActivity)。実測では 38 ミリ秒で DarkWake が完全な復帰に昇格し、画面が点灯します。同時に、ディスプレイが本当に起きるまで(最大 6 秒)収録を保留し、映すものがない状態で空回りしないようにしています。

自分で確かめるなら、Mac で pmset -g log を実行して DarkWake の行を探してください。成功した復帰は HID Activity として記録されます。

同じ Wi-Fi でなくても起こせる——ただし期限つき

Wake-on-LAN のパケットは同一のローカルネットワーク内しか届きません。ですから理屈のうえでは外出先から起こせないはずです。しかし実測(macOS 26 / Apple Silicon)では、スリープ中の Mac は別の経路で起きます。

macOS はスリープ中、ネットワークカードがすでに確立された TCP 接続を維持しますpmset -g logTCPKeepAlive=active と出ます)。Host のシグナリング接続はスリープ中もルームに残っているので、iPhone が参加した時点でサーバーが送る通知だけで DarkWake が発生します(ログでは wifibt による復帰)。この経路はネットワークをまたいで有効で、ルーターの設定も不要です。

ただし期限があります。ログには powerd request=TCPKATurnOff wakeAt= のあとに約 4 日後の時刻が出ます。それより長く眠るとこの仕組みは静かに切られ、「起きるときと起きないときがある」という状態になります。長期間留守にするなら、Mac を起動したままにするか、「ディスプレイがオフのときに自動でスリープさせない」を有効にするほうが確実です。

よく混同される点をひとつ。MacBook はバッテリー駆動でスリープすると Wi-Fi ごとオフになるため、Wake-on-LAN は成立しません。これは Apple 側の制約です。一方で上記の TCP キープアライブの経路は、実測でバッテリー残量 2% でも有効でした。両者は別の仕組みです。