一昨日いろいろ試しても失敗したのは、バッテリ駆動中だったからでした。てっきりWindowsのよくあるノートPCと同じだと…。今日、AC電源につないで試したら無事成功。TeamViewer自体は少し不安定で、クライアントからログインできない時もあるけど、スリープから復帰してるのでSSH接続はでき、普段はディスプレイを閉じてMacBookを使う態勢が一応整いました。
Windowsノートのネットワークアダプタと「電源の管理」
例えばNECのVK26M(詳細:前ブログでの記事)で、有線LANアダプタのデバイス情報の「電源の管理」を見ると ↓ こんな感じ。警告という中に「バッテリ電源を使用している場合、ネットワークアダプターにコンピューターのスリープ状態の解除を許可すると、バッテリの消耗を早める可能性があります」など、AC電源に非接続でもWOLでスリープから復帰できると分かります。 てっきりMacBookも同じだと思い、システム設定 → 省電力 → ACアダプタでWake for network accessを有効にし、バッテリ設定にはその項目がないけど共通でオンになるだろうと勘違いしてました。
AC電源で常に100%充電は、何か気になる
これも今ごろ知ったのですが、国内メーカのWindowsノートにはたいていある「バッテリいたわり充電モード」が、MacBookには無いんですね。だからACにつなぎ放しだと常に100%充電状態になる。バッテリの劣化・寿命が気になるので(いろんな意見があり正確なところは分からないけど)、80%充電後、バッテリ駆動にしてました。 でWake on LANをいろいろ試したけど当然ながら全く成功せず。ネット検索して例えば ↓ などを見るとMac初心者の自分には厳しいと思い、いったん諦めました。 諦めて他のことをやり出すと、意外な所からヒントが見つかるという「あるある」で、MacBookのバッテリについて検索してたら下記サイトに「バッテリ駆動ではNG(無線LAN経由でスリープ解除できない)」と。えっMacはそうなのと初めて知り、ACにつないで試したら嘘みたいに成功しました。
実行環境・設定まとめ
Macの有線LANアダプタ設定は、先ほどの繰り返しですがシステム設定 → 省電力 →ACアダプタでWake for network accessを有効にします。Firewallは有効のまま(ステルスモードも有効)、特に接続許可の追加等は不要でした。 Mac側のTeamViewer設定は、「一般」にあるWake-on-LANを開いてTeamViewer IDs within your networkを選び(二つ目の画面)Windows側のTeamViewerに表示されているIDを入力。あと「一般」のWake-on-LANの次にあるIncoming LAN ConnectionsもAcceptにしましたが、これは必須かどうか未確認です(試行錯誤中に有効にしていたのを忘れ、後で気付いた)。 MacBookのデフォルトでは「ディスプレイを閉じたらスリープ」と決まっていますが、不便なのでNoSleepというアプリを入れ無効にしました。これと併用状態で、TeamViewerによるスリープ解除できています。なおNoSleepは当初、最新の1.4を入れたらNoSleep Kernel Extension is not loaded.と出て起動せず、下記を参考に前のバージョン1.3.3を入れ、Macを再起動したら使えるようになりました。
テスト時の様子
↓ WindowsからTeamViewerでMacに接続し、Finderのメニューでいったんスリープ。 ↓ Macがスリープ状態になると、TeamViewerのコンピュータ一覧で黒いアイコン(オフライン)になります。この右端をクリックするとメニューが出て、その右下のWake upを押して少し待つ。 ↓ スリープから復帰すると「オンラインになりました、接続しますか?」というダイアログ。接続を選ぶとパスワード入力画面を経て(セキュリティ設定によって少し違う)、再びリモート制御できます。 ただ時々 ↓ こんな風に「接続できません、相手側でTeamViewerが起動していません」と言われログインに失敗します。実機の画面を開くと普通に動いていて、TeamViewerも立ち上がっており、実機で何か操作しているうちTeamViewerでログインできる状態になったり、結構謎です。
SSHでのリモートログインも準備
前項のようにTeamViewerでの再ログインは不安定ですが、スリープ解除自体はできてるのでSSHも使えるようにしました。設定は簡単で、システム環境設定 → 共有を開き、リモートログインをオンにするだけ。自動的に接続用のSSHコマンド(ユーザ名とIPアドレス)が出ます。これをWindows側の好きなSSHクライアントに設定したり、メモしておき必要な時に手動で打てばOK。 ↓ いつも使ってるGit Portable付属のSSHクライアントで接続した様子。コマンド操作ならこの方が楽で、わざわざTeamViewerを使う必要はないですね。