PCのUSBポート認識が頻繁に失敗するようになってしまったので…
私は職場に自作PCを持ち込んでいます。もう5年ぐらい前に自作したもので、それまで使っていたPentium 4マシンの排熱に懲りた(夏などはこのせいで汗をかくほど暑くなっていました)ためできるだけ省電力設計にしようと思い、CPUはCore i3-2100T(Sandy Bridge)、マザーボードはASUSのH67チップセット採用のMicro ATXマザー、P8H67-M EVOを選択して組みました。Windows 7→8→8.1→10とアップグレードを繰り返しており、致命的なトラブルはないものの、どのバージョンのころからかは忘れてしまいましたがUSBポートのドライバの認識に時々失敗するようになりました。

このようなときはデバイスマネージャから無効化→有効化を行うと問題なく認識されるのですが、さすがにマウスが接続されているUSBポートでこれが起きてしまうと不便で仕方がありません。そこでこの操作を自動的に行えないものか調べたところ、Windows Driver Kit(WDK)に含まれる devcon.exe というコマンドラインツールを用いればよいということがわかりました。まずはMicrosoftのサイトからWDKをダウンロード、インストールします。
インストールが完了したら、64bit Windowsの場合はProgram Files (x86)¥Windows Kits¥10¥Tools¥x64 フォルダを、32bit Windowsの場合は、Program Files¥Windows Kits¥10¥Tools¥x86 フォルダを開きます。このフォルダ内に devcon.exe があるのを確認します。

次に、認識に失敗するデバイスのハードウェアIDを調べます。デバイスのプロパティで「ハードウェアID」を確認し、最も上のIDをメモします。

devconコマンドを用いてバッチファイルを作成します。devconコマンドでデバイスの有効化、無効化を行うのには下記のようにします。
devcon disable "ハードウェアID" → デバイス無効化
devcon enable "ハードウェアID" → デバイス有効化
私の場合はUSBコントローラが2つあるのでその二つを指定しました。
cd C:\Program Files (x86)\Windows Kits\10\Tools\x64
devcon disable "PCI\VEN_8086&DEV_1C2D&SUBSYS_844D1043&REV_05"
devcon disable "PCI\VEN_8086&DEV_1C26&SUBSYS_844D1043&REV_05"
devcon enable "PCI\VEN_8086&DEV_1C2D&SUBSYS_844D1043&REV_05"
devcon enable "PCI\VEN_8086&DEV_1C26&SUBSYS_844D1043&REV_05"
次に起動時に自動的にこのバッチファイルが実行されるようにしてみました。タスクスケジューラを起動し、「基本タスクの作成」を実行します。

トリガーとして「コンピュータの起動時」を指定します。

操作は「プログラムの開始」を指定します。

先ほど作成したバッチファイルを指定します。

設定完了。

最後に設定したタスクのプロパティを開き、「ログオンしているかどうかにかかわらず実行」と「最上位の特権で実行」にチェックを入れます。

PCを再起動してみると、このように実行されていることが確認できました。

この設定を行ってからは、PC起動時にマウスやキーボードが効かなくて困るということはなくなりました。起動時にデバイスの認識に失敗する症状でお困りの方は試してみられてはいかがでしょうか。

このようなときはデバイスマネージャから無効化→有効化を行うと問題なく認識されるのですが、さすがにマウスが接続されているUSBポートでこれが起きてしまうと不便で仕方がありません。そこでこの操作を自動的に行えないものか調べたところ、Windows Driver Kit(WDK)に含まれる devcon.exe というコマンドラインツールを用いればよいということがわかりました。まずはMicrosoftのサイトからWDKをダウンロード、インストールします。
インストールが完了したら、64bit Windowsの場合はProgram Files (x86)¥Windows Kits¥10¥Tools¥x64 フォルダを、32bit Windowsの場合は、Program Files¥Windows Kits¥10¥Tools¥x86 フォルダを開きます。このフォルダ内に devcon.exe があるのを確認します。

次に、認識に失敗するデバイスのハードウェアIDを調べます。デバイスのプロパティで「ハードウェアID」を確認し、最も上のIDをメモします。

devconコマンドを用いてバッチファイルを作成します。devconコマンドでデバイスの有効化、無効化を行うのには下記のようにします。
devcon disable "ハードウェアID" → デバイス無効化
devcon enable "ハードウェアID" → デバイス有効化
私の場合はUSBコントローラが2つあるのでその二つを指定しました。
cd C:\Program Files (x86)\Windows Kits\10\Tools\x64
devcon disable "PCI\VEN_8086&DEV_1C2D&SUBSYS_844D1043&REV_05"
devcon disable "PCI\VEN_8086&DEV_1C26&SUBSYS_844D1043&REV_05"
devcon enable "PCI\VEN_8086&DEV_1C2D&SUBSYS_844D1043&REV_05"
devcon enable "PCI\VEN_8086&DEV_1C26&SUBSYS_844D1043&REV_05"
次に起動時に自動的にこのバッチファイルが実行されるようにしてみました。タスクスケジューラを起動し、「基本タスクの作成」を実行します。

トリガーとして「コンピュータの起動時」を指定します。

操作は「プログラムの開始」を指定します。

先ほど作成したバッチファイルを指定します。

設定完了。

最後に設定したタスクのプロパティを開き、「ログオンしているかどうかにかかわらず実行」と「最上位の特権で実行」にチェックを入れます。

PCを再起動してみると、このように実行されていることが確認できました。

この設定を行ってからは、PC起動時にマウスやキーボードが効かなくて困るということはなくなりました。起動時にデバイスの認識に失敗する症状でお困りの方は試してみられてはいかがでしょうか。
※本サイトで紹介する内容は、すべて個人的研究の範囲内で行っていることです。ここに書かれた内容を実行したことによる、データ(クラウド上を含む)・ソフトウェア・ハードウェアの障害および金銭的損害について、私が責任を負うことはできません。重要なデータはあらかじめバックアップを行い、内容を十分に理解したうえで、ご自身の責任の下で行ってください。 |
- 関連記事
-
- Windows 10のモバイルホットスポットを試してみました (2016/12/20)
- PCのUSBポート認識が頻繁に失敗するようになってしまったので… (2016/12/17)
- SSDがプチフリ起こすようになってきたので… (2016/08/07)
スポンサーサイト