家のデスクトップを外から起動したいと思い立ち、その方法を探しました。
起動さえできてしまえばchromeのリモートデスクトップでどうにでもなります。
ポート開放してWakeOnLanすればいいらしいのですが、
家で使ってるルーターはアパートに元からついてるものなので、ポート開放なしでできるだけ最小費用でパソコンを遠隔起動する方法を模索しました。
最終的にラズパイをルーターにしてRealVNCで接続してWokeOnLanで起動することにしました。
この方法で外出先からパソコンだけでなくスマホからでも自宅のパソコンを起動することが可能です。
#環境
Winodws 10 Pro
Raspberry Pi Zero W (OSはRaspibian)
#BIOS/UEFIとOSの設定
最初にWakeOnLanという遠隔起動を有効にするためにBIOSとOS両方で設定行う必要があります。
まずはBIOSで設定をします。
BIOSそれぞれで方法が違うのですが、とりあえず自分が設定したものを書いておきます。
・内蔵LANから起動>有効
・ACPI設定>PCIEデバイス電源ON>有効
自分はこの2つを設定しました。
上のリンクに書いてあるように
・[WOL]
・[Wake On LAN ~]
・[Remote Wakeup]
・[PME Event Wake Up]
・[Power On by PCI Device(PCIによる電源ON)]
・[Power On By PCIE Device(PCIEによる電源ON)]
など様々な書き方があるようです。
次はOSの設定です。
ここでもネットワークアダプターによって様々です。
今回はWinodows10のやり方のみ書きます。
デバイスマネージャー>ネットワークアダプター>Realtek PCIe GBE Family Controller>詳細設定
から
ウェイクオンマジックパケットを有効
ちなみに自分のRealtek PCIe GBE Family Controllerのバージョンは10.31.828.2018です。
Windows10にアップデートしたらWOLが出来なくなった
上のリンクのように9.1.2015のようにドライバーが古いと使えないという報告もあるので気をつけましょう。
ドライバーのダウンロードのリンクが先程の記事とは変わっているように思えるので念の為貼っておきます。
https://www.realtek.com/ja/downloads
参考:
Wake on Lan で Windows 10 の PC を遠隔で起動する
Wake On LANでコンピュータを起動する (1/2)
Wake On LANでコンピュータを起動する (2/2)
#ラズパイでVNCの設定
RealVNCのアカウントを作成することで、クラウドを介してインターネット越しのVNCにアクセスすることができます。
クラウドを介してくれるので自分でポートを開放したりする必要がないわけです。
https://www.realvnc.com/
アカウントはHome版で大丈夫です。
アカウント作成完了後、自分のキーが発行されます。
このキーは後ほど使います。
RealVNCを使用するにはホスト側にVLCViewerクライアント側にVLCserverが必要です。
嬉しいことにラズパイのOSであるRaspbianにはVLCserverが最初から入っています。
しかしデフォルトでは無効になっているので有効にします。
参考:https://iot.keicode.com/raspberry-pi/raspi3-vnc-setup.php
ターミナルで以下を打ちます
$ sudo raspi-config
そしてInterfacing Options>VNCと選択し、VNCサーバーを有効化しますかと聞かれたらYesを選択します。
完了したら再起動しておきます。
$ sudo reboot
そして再びターミナルを開き、
$ sudo vnclicense -add KEY
このKEY
の部分に先程の自分のアカウントに書いてあったキーをいれます。
つぎにラズパイを操作する側のパソコンにVLCViewerをいれます。
https://www.realvnc.com/en/connect/download/viewer/windows/
スマホでもアプリがあるのでできます。
開いてアカウントを入力するとAdressBookにraspberrypiがあるはずです。
接続できるかどうかを確認してみてください。
参考:
ポートの開放することなく、Respberry Piに外からアクセスする
https://ameblo.jp/hagechip/entry-12303416402.html
様々な記事で、というか公式でもlisensingという項目からRealVNCのライセンス認証を行っているのですが、自分のVNCserverにはlisensingは見つかりませんでした。
代わりにsudo vnclicense -add KEY
をすることでうまくいきました。
もし詳しい方がいらっしゃれば教えてください。
公式には"ラズベリーパイに特有のVNC Connectは、クラウドと家庭の加入者への直接接続を提供するために事前にライセンス供与されています。"と書いてあるので、ラズパイ版は特別なのかな?
#PythonでWake On Lan
ネットワーク機器にはMACアドレスと呼ばれる物理アドレスが割り当てられます。
WakeOnLanはそのMACアドレスを16回繰り返した信号であるマジックパケットを送ることでパソコンを叩き起こす技術です。思ったより強引ですね。
仕組み自体は簡単なので様々な方法があります。
ソフトを使う方法もありますが、今回はラズパイにもともと入ってるpythonを使いたいと思います。
https://github.com/bentasker/Wake-On-Lan-Python
上のgitからラズパイにダウンロードします。
ダウンロードしたWake-On-Lan-Python
のwol_config.ini.example
の中身は以下のようになっています。
# Save this file as .wol_config.ini in the same directory as wol.py
[General]
broadcast=192.168.1.255
[myPC]
mac=00:2a:a0:cf:83:15
[myLaptop]
mac=00:13:0d:e4:60:61
これに起動したいパソコンのIPアドレスとMACアドレスをしらべて置き換えます。
windowsではそれぞれipconfig
とgetmac
でわかります。
そしてwol_config.ini.example
というディレクトリ名を.wol_config.ini
に変えます。最初のドットを忘れずに。
[General]
broadcast=(IPアドレス)
[myPC]
mac=(MACアドレス)
次にPythonの仮想環境を作り、有効化します。ここでは仮想環境の名前をwolvenv
とします。
ラズパイのターミナルで、
$ python -m venv wolvenv
$ source wolvenv/bin/activate
そしてパソコンを起動してみます。
(wolvenv)$cd Wake-On-Lan-Python
(wolvenv)$python wol.py myPC
うまく起動できたでしょうか。
#クリックで起動
前項のpython wol.py myPC
をすることで起動できるのですが、スマホ等でターミナル打つのはだいぶ無理があると思います。
そこでシェルファイルを作成することでクリックのみで起動できるようにします。
シェルファイルによってlinuxの複数のコマンド操作を一度に行うことができます。
#!/bin/bash
cd /home/pi/Desktop
source wolvenv/bin/activate
cd wol-python
python wol.py myPC
このシェルファイルをデスクトップにおいて置きます。(ここではwolvenv
もWake-On-Lan-Python
もデスクトップにあるとします)
そしてターミナルで
chmod 777 /home/pi/Desktop/wol.sh
これでwol.shをクリックし、Execute in Terminal
をクリックして起動したら成功です!
参考
https://ameblo.jp/hagechip/entry-12326256477.html
#おわりに
まさかこんなに大変だとは思いませんでした。WakeOnLanができる高機能ルーターを買うことでラズパイなしで出来るらしいです。もっと簡単なやり方があれば誰か教えてください。