ThinkPad X201のWake On Lan (WOL) その他もろもろ | DIY

パソコン関連DIY
ThinkPad X201 WOL

X201のSSDが逝きました。いろいろと試しましたが復活ならず。常時起動が悪かったのでしょうか?そこで、これを機会にリモートからオンオフ出来るように、Thinkpad X201 のWake On LANを実行出来るようにしてみました。SSDを再度購入してOSの復活劇は、こちらのブログに記載しました。

故障までの経緯

私のThinkPad X201は、今迄、常時稼働で運用していました。X201はベッドの下の奥まった場所に設置してあり、手の届かない場所なので簡単にはスイッチ操作が出来ない場所にあります。定期的なプログラムの実行や、外部からのアクセス、Backupデータの定期的な保存や、他のPC(家庭内LAN)からのプログラムコード更新(SVNサーバーを運用) も担っているので常時稼働にしてました。ThinkPadなので停電しても、しばらくバッテリーでも稼働できるので常時稼働にうってつけでした。停電するとLAN環境はアウトなんですけどね。(汗;

ThinkPad X201でやりたい事

HDDからSSDに換装して爆速になったX201でしたが、残念ながらSSD故障でSSDを新品に交換してOSの再導入からの再出発となりました。さて、このX201でやりたい事は以下です。

  1. Wake On Lanで、ON/OFFする(実際にはSleepにしたり、復帰できたりすれば良い。なるべく電力消費を抑えて、SSDへの書き込みも減らしたい)
  2. 他のPCから、SCPでファイルを保存したい。(LinuxのMySQLのBackup DataをLinux側のCronジョブで一日一回ファイルを受信したい)
  3. 家庭内LANの他のPCでプログラム開発の為、このX201でSVNサーバーを立ち上げてコード変更を管理したい。(Githubでも良いのですが、自分でしか使わないのと、Privateデータなので外部ネットへは出したくない)SVNは自分のコード上に、Autherとか更新日とかIdとかRevision番号などの情報を自動的に残せるので便利なのです。
  4. タスクスケジューラーで、定期的にX201からプログラムを起動したい(Python Seleniumを使用したWebアクセス自動化。)
  5. ブログのGoogle検索順位取得自作プログラムをタスクスケジューラーで毎朝起動したい。
  6. X201で作業したい時だけWOLでX201起こして作業して、作業してなければ自動的にまたスリープさせたい。

では、これらを1つ1つ私がやった事を解説していきます。

Wake On Lanで、ON/OFFする

(ThinkPad X201ってWOLできるの?)

まず、チャレンジしたのはWOLを実現する事です。正確に言うと私が目指したのはPCのオンオフではなくてリモートからのスリープ状態にあるX201をWake Upさせると言う事です。Wi-Fiのアダプターではこれが実現できません。有線LANが必要なようです。有線LANじゃなく無線LAN(Wi-Fi)でWake on LANをしたい場合は、それ対応のWi-Fiのネットワークアダプターカードが必要となりそうです。WOLに対して、WoWLAN(Wake On Wireless LAN)と言うそうですが、早々に諦めて有線LANでWOLする為に調べてみました。私のネットワークアダプターは以下です。

Intel(R) 82577LM Gigabit Network Connectionと言う有線のEthernet LANアダプタで電源の管理の設定は、Magic Packetでのみ~ もチェックしてます。

スタンバイからの Wake On LAN 有効化パッチ

私のX201はWOLを可能にするにはWOL有効化のパッチが必要でした。以下のリンクからパッチプログラムがダウンロードできます。ダウンロードして実行してみるとInstallのダイアログで一瞬コマンドプロンプトが立ち上がって、アッと言うまにインストールが完了したようです。これも結果論ですが、WOLが出来るようになったので、ちゃんとインストールできたのだと思います。^^;

スタンバイからの Wake On LAN 有効化パッチ (エネルギー・スター対応) (Windows 10/8.1/ 8/ 7/ Vista/ XP) - ノートブック - Lenovo Support JP
スタンバイからの Wake On LAN 有効化パッチ (エネルギ&...

電源詳細の管理でスリープ解除タイマーを無効に変更したらタスクスケジューラーもスリープ解除できなくなった。

この設定はスリープ中でも、Windowsの更新やメンテナンスが夜中の2時頃に自動でスリープを解除して実行する為のものとの事で、夜中にスリープが解除されるのは嫌なので当初無効にしました。しかし、無効にしたら、タスクスケジュラーで仕込んだ自分のプログラムもスリープ解除せずトリガーの時間になっても実行されないので、有効に設定を戻したところ動きました。なんか紛らわしい。

使っている途中でも頻繁にスリープになる。

しかし、ちょっと問題発生しました。WOLで起動できても、ほぼ2分で勝手に再度スリープしてしまいます。ネットワークアダプターの設定をみても数分後のスリープするような設定は無く困っていましたが、なんとネットを知らべると情報がありました。

スリープの原因は「システム無人スリープタイムアウト」の設定でした。

このエントリーは電源管理には当初表示されていなかったのですが、別途コマンドを打って表示させる必要があります。管理権限のコマンドプロンプトを立ち上げて、以下のコマンドの入力が必要です。デフォルトでは2分となっていて、何も操作しなければ2分でスリープしてしまうようです。Googleの時代で中かったらなかなか辿り着けない情報。^^; 投稿してくれた人ありがと~。システム無人スリープタイムアウトとは、スリープ解除されてからユーザーが何も操作を行わなかった際に再度スリープに移るための時間設定のことだそうです。しかも、以下のコマンドを打たないと、その設定がネットワークアダプターのプロパティに現れない。

powercfg -attributes SUB_SLEEP 7bc4a2f9-d8fc-4469-b07b-33eb785aaca0 -ATTRIB_HIDE

上記のコマンドを打つとネットワークアダプターに設定が表示されたので、電源接続時に2分となっていたものを、30分に変更しました。

他のPCから、SCPでファイルを保存したい。

これは以外に簡単に出来るはずだったのですが、結構ハマりました。かなり色々と行ったので別なブログに記載しておきました。

結果としては無事にRSA認証でSCP出来ているのですが、結構苦労しました。ふつうにWindows OSのOpenSSHDを開始しても、うまくできないのでは????って思います。

家庭内LANの他のPCでプログラム開発の為、このX201でSVNサーバーを立ち上げてソースコードの管理をしたい。

こちらに関しては、以前自分で書いたブログ記事が役立ちました。参考記事として貼っておきます。ハマりポイントはこちらで解決するはずです。^^;

タスクスケジューラーで、定期的にX201からプログラムを起動したい(Python Seleniumを使用したWebアクセス自動化。)

これに関しては無事完了です。少しハマった点としては、SeleniumでWebブラウザーの情報をgetして、そのページのidが”csv”のボタンをクリックするのですが、クリックのアクションした後すぐにBrowserのオブジェクトをquitしていたいので、Clickのアクションが成功していませんでした。

クリックでJavaScriptの処理が呼び出されるのですが、そのJavaScript(Ajax)が終了する前にbrowser.quit()を終了していたのが原因でした。これは、タスクスケジューラーでpython xxxx.py で起動していたのですが成功せず、Juptyer Notebookで実行するときは成功していたのでかなり悩みましたが、タイミングの問題でした。Juptyerで実行するときは、brower.quit()が別のセルになったので、十分JavaScriptの実行を待ってからのquit()であったためです。

browser.get(MONITOR_URL)
elem_login = browser.find_element(By.ID,"csv")
elem_login.click()
browser.quit()

この問題は単に、以下のようにtime.sleep(10)で10秒待つ事で解決しました。

browser.get(MONITOR_URL)
elem_login = browser.find_element(By.ID,"csv")
elem_login.click()
time.sleep(10) # 10秒待ってからbrowser.quit()
browser.quit()

まとめ

意外と、WOLって微妙な動きをして問題多いです。私の場合、色々と試している内になんとかうまくいった感があります。

SSDへのアクセスを減らす為、常時起動状態にはしないで必要な時だけスリープから解除してプログラムを実行すると言う方法を取りました。タスクスケジューラーはトリガー時のスリープ解除オプションがあるので、チェックボックスにチェックをいれてスケジュールする事で無事にトリガー指定時にスリープ解除してプログラムを実行してくれました。

あと、LAN上のLinux機からのSCPでのファイル受信時は、タスクスケジューラーでスリープ解除して実行するプログラムの起動直後の時間帯にLinuxからCronジョブでSCP(RSA公開鍵認証)する事で、X201が立ち上がっている時にファイル転送を受け付ける方法で解決しました。

常時起動にしたくないので、タスクスケジューラーで、UWSCを使ってスリープにする事も試したのですが、なぜかタスクスケジューラー経由ではスリープにできませんでした。色々と試してみましたがどれも失敗。

結局、「システム無人スリープタイムアウト」を30分にする事で、X201で操作していない時が30分続くと常時起動状態で無くスリープにする事ができるので良しとしました。X201にWOLを送付して、Remote Desktopでログインして作業している間はスリープしないので、私としては思ったとおりの使用方法です。タスクを起動して定期的なタスクを実行する時と、Remote Desktopでログインして作業する時だけX201は起動していて、使わないでほっておくと30分程度でスリープになってくれます。

他のマシンでコード開発するときはSVNが必要なので、WOLでX201をONにする必要はありますが、その時はWOLを送信して起こしてます。^^;

以上、見事に当初の目的が無事に達成できました。X201はベッド下、奥深い場所に設置してあるので電源のオンオフは不便なので通常スリープで必要な時にWOLでオンに出来るのは大変便利です。これでSSDの寿命とX201の寿命が延びることと期待してます。^^;

最後まで読んでいただき、ありがとうございました。

投稿者プロフィール

diy-hs
diy-hs
”なんでも自分でやってみる” をテーマに、ブログを書いてます。素人には無理と思う様な事も、実際にやってみるとあっさりと出来たりする事もあります。失敗もありますが、失敗する事で経験となり、次は少し上達したりします。それが楽しいです。そんなDIYの情報を発信して行けたらと思ってます。仕事はAIやクラウド関連を担当してます。そんな訳でプログラミングやシステム構築も趣味と実益を兼ねてDIYを楽しんでます。ギターはもともとクラシックギターを学び、インストルメンタル専門でしたが、高校生の頃にテレビでみた卒業の映画でPaul Simonの曲に憧れて、それ以降いろんなジャンルの弾き語りも楽しんでます。S&Gの曲なら楽譜なしで弾けます。^^; Twitterの方でも発信していますので、ぜひフォロー下さい。
(Amazonのアソシエイトとして、当サイト(diy-hs.com)は適格販売により収入を得ています。)

コメント

タイトルとURLをコピーしました