Windows PCのUSB-HDDの電源が自動で落ち、HDDにアクセスすると電源がONになるまで30秒ぐらい待たされてイライラする、といった経験をされている方は多いかと思います。
この現象の対処方法を調べると、Windowsの機能「USBセレクティブサスペンド」を無効化する、といった方法がたくさん出てきます。今回は、これらを試しても改善しなかった場合の対処方法を紹介します。
現象
かくいう私も、USBセレクティブサスペンドの無効化や、レジストリをいじる方法など、検索で出てきた方法を一通り試したのですが、改善の兆しが全く見られませんでした。
PC環境は以下です。
- OS: Windows 11 Home
- CPU: AMD Ryzen 7 3700X
- マザーボード: PRIME B550M-K (ASUSTeK COMPUTER INC.)
- USB-HDD: WD Elements 25A3 (10TB)
AMDのCPUがwindowsと相性が悪いのか、WesternDigital製HDDに特殊な設定があるのか、原因はわかりませんが、とにかく、何をやってもダメでした。HDDにアクセスするとエクスプローラが30秒ぐらい固まる現象が度々発生し、ストレスがたまる日々を過ごしてました。
対処方法
ようやくたどりついたのは、シンプル、かつ、原始的な方法ですが、
一定時間毎にUSB-HDDに自動アクセスする
です。
これを具体的にどう実現するか、は、色々なやり方があると思いますが、今回は以下方法で実現しました。
USB-HDDにテキストファイルを出力するスクリプトを、
WSL2+Ubuntuのスケジューラcronで定時実行
WSL2、Ubuntuのインストール手順は、長くなってしまうので省略します。
以下記事等を参照してインストールしてください。
WSL2、Ubuntuのインストール後の手順は以下です。
- USB-HDDに自動アクセスするスクリプトを作成
- スケジューラcronの有効化
- スクリプトをcronに設定
1. USB-HDDに自動アクセスするスクリプトを作成
ファイル名/保存場所は適当でOKです。
テキストファイルの中身は何でもよいですが、テキストファイルを出力する場所は、
ターゲットとなるUSB-HDD内
にします。
以下例は、現在時刻をテキストファイル(hdd_accessed.txt(※名前は任意))に出力する処理です。
ターゲットとなるUSB-HDDがFドライブだったので、/mnt/f/
以下にテキストファイルを出力するようにしてます。
#!/bin/bash
echo `date` > /mnt/f/work/hdd_accessed.txt
2. スケジューラcronの有効化
WSL2 Ubuntu内で、/etc/wsl.confを以下内容で作成し、wslを再起動 wsl --shutdown
すれば有効化できます。
[boot]
systemd=true
3. スクリプトをcronに設定
WSL2 Ubuntuのターミナル上でcrontab -e
と入力すると、テキストエディタが起動するので、末尾行に以下を入力します。
*/10 * * * * /mnt/f/work/hdd_access.sh
行頭の*/10
が、「10分毎」という設定です。10を20にすれば、20分毎、にできます。その後は「*」を4つ書いた後に、上述で作成したスクリプトファイル名をフルパスで書きます。
詳細な書き方は、以下記事等が簡潔にまとめられてわかりやすかったです。
これで、スクリプト(hdd_access.sh)が10分毎に実行され、USB-HDDに10分毎に自動アクセスするようになり、USB-HDDの電源が切れることがなくなりました。
なお、WSL内のスケジューラcronは、PC起動後にWSLを一度でも起動しないと動作しません。
なので、日常的にWSLを使ってない方は、スタートアップフォルダにWSL+Ubuntuターミナルのショートカットを置くなど、PC起動後に必ずWSLが起動するような一工夫が必要です。
起動したWSL+Ubuntuターミナルウィンドウは、「×」ボタンで終了しても、cronは動き続けます。
おわりに
今回の対処方法は、やること自体は原始的でシンプルなのですが、具体的な実現方法が、WSLやLinuxに馴染みのない方にはとっつきづらい方法となってしまいました。最近、会社でたまたま、cronを使った定時実行をやったので、こちらの方法を実施しました。
Windows標準のタスクスケジューラやバッチファイルを使ったやり方で実現できれば、実現のハードルがかなり下がると思うので、そちらのやり方が確立できれば、また投稿しようと思います。
(後記)以下に、Windows標準のタスクスケジューラを使ったやり方をUPしましたので、ぜひご覧ください。