最近iPhone 14 Pro Maxを購入した。写真を撮るためだとかマンガを読むためだとかいろいろ理由をつけて買ったが実のところRemote DesktopでWindowsに繋いで適度なサイズの画面でノベルゲームをしたかったのだった。
Remote Desktopで接続することはできたが、しばらく放置しているとスリープ状態になってしまい、わざわざ机の下にあるWindows端末の電源ボタンを押さないといけない。布団でぬくぬくゲームをしようというときにわざわざ出るのは面倒なのでiPhoneから起動できるようにした。いまも昔もこういう操作をシュッとやるならWake-on-LANと相場が決まっている。この記事はWake-on-LANをiPhoneからやろうという話。
iOS向けのアプリとしてWOLのマジックパケットを送出できるものはあるけれど、得体の知れないものを入れるのはやや抵抗がある。最近のiOSには純正のショートカットアプリがあり、SSHで任意のコマンドを発行できるので、これを利用してRaspberry Pi上からマジックパケットを送出するのがよかろうと考えた。いまやRaspberry Piはどこにも在庫がないけど、手元にいくつか余っているのでこれを利用した。Raspberry PiでなくてもNano PiやOrange Piとかでもだいたい同じことができるはず。
WOLの設定
Windows上で、まずはIPをDHCPではなく固定にしておく。続いてデバイスマネージャから利用している有線LANのインターフェースのプロパティを開き、WOLを有効にしておく。加えて、UEFIの設定でもWOLを有効にする。このあたりはマザーボードによって違いそう。最後にインターフェースのMACアドレスを控えておく。マジックパケットはこのMACアドレス宛に送ることになる。
この状態で動くかどうかを確認しておくと良い。Arch Linuxであれば wol
コマンドでマジックパケットを送出できる。
$ wol MAC_ADDR
スリープや休止状態であれば復帰できたが、完全に止めた状態から起動することはできなかった。そういうものだった気がする。
Raspberry Piの初期設定
以前書いた通りRaspberry Pi用のSDカードはRaspberry Pi Imagerで作ることができる。最近はSSH用のパスワードの設定などもできて便利。できあがったSDカードの /
直下に touch ssh
などでsshという名前の空ファイルを作っておけば立ち上げ時にsshdも起動する。
Raspberry Piは起動するとDHCPでIPを取得しにいくので、 arp-scan
でこれを確認してsshする。
$ sudo arp-scan -l Interface: eno1, type: EN10MB, MAC: **:**:**:**:**:**, IPv4: 192.168.0.101 Starting arp-scan 1.9.8 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.0.1 **:**:**:**:**:** YAMAHA CORPORATION 192.168.0.10 **:**:**:**:**:** ASRock Incorporation 192.168.0.102 **:**:**:**:**:** Raspberry Pi Foundation
こういう調子。このIPにSSHで接続して、さらにIPを固定にする。 /etc/dhcpcd.conf
を編集しつつ再起動すればOK。最後にWOLのマジックパケットを送出するアプリケーションを入れておく。
$ sudo apt install wakeonlan
iOSの設定
ショートカットアプリを開いて新規ショートカットを作成し、以下のように設定を行う。
SSH用の鍵はiOS側が生成してくれるので、公開鍵をコピーしてRaspberry Pi側に登録しておく。
あとはこのショートカットを実行すれば、Windowsが起動する。
SSHで任意のコマンドを実行できるので応用の幅が広くて便利そう。