連載
» 2018年04月03日 05時00分 公開

山市良のうぃんどうず日記(123):数日ごとに使えなくなるBluetooth、Windows 10にこれからも働いてもらうために…… (2/2)

[山市良,テクニカルライター]
前のページへ 1|2       

Bluetoothをリセットするためのサンプルバッチ改良版

 試行錯誤の末に、できたのが以下の改良版「resetbt.cmd」です(リスト2)。

@ECHO OFF
REM Qualcomm Atheros AR3011 Bluetooth 3.0の問題をチェック
C:\demo\devcon.exe status "@USB\VID_0CF3&PID_3002\6&3B0CF529&0&4" |findstr "problem"
IF %ERRORLEVEL% == 0 GOTO RESETBT
C:\demo\devcon.exe status "@USB\VID_0CF3&PID_3002\6&3B0CF529&0&4" |findstr "stopped"
IF %ERRORLEVEL% == 0 GOTO RESETBT
REM その他の任意のBluetooth関連ドライバが実行中であることをチェック
C:\demo\devcon.exe status "@BTHENUM\*" |findstr "running"
IF %ERRORLEVEL% == 0 GOTO END
:RESETBT
ECHO Bluetoothデバイスの問題を発見!
SET /P YESNO="Do you want to reset this device ? (y/n): "
IF "%YESNO%"=="n" GOTO END
ECHO 問題のデバイスのアンインストール(再起動が必要な場合あり)...
C:\demo\devcon.exe -r remove "@USB\VID_0CF3&PID_3002\6&3B0CF529&0&4"
IF %ERRORLEVEL%==0 GOTO NEXT
ECHO コンピュータの再起動が必要です。
PAUSE
shutdown /r /t 0
GOTO END
:NEXT
ECHO ハードウェア変更の再スキャン...
C:\demo\devcon.exe rescan
ECHO デバイスのステータスを更新(15秒間待ってから)...
TIMEOUT /T 15 /NOBREAK
C:\demo\devcon.exe status "@USB\VID_0CF3&PID_3002\6&3B0CF529&0&4"
:END
リスト2 改良版「resetbt.cmd」

 改良版では、最初のBluetoothデバイスで問題がある場合(The device has the following problem...またはDriver is stopped)、そのデバイスをアンインストールして、再スキャンします。デバイスが正常に動作している(Driver is running)にもかかわらず、関連する他のデバイス(インスタンス名「BTHENUM\」から始まるデバイス)のドライバが1つも動作していない場合も、最初のデバイスをアンインストールします。

 また、デバイスのアンインストール時に再起動が要求される場合(devcon removeの「-r」オプションは再起動が必要な場合に「0」以外のエラーコードを返します)、バッチを一時停止してユーザーに示します。

 それでは改良版を試してみましょう。問題のBluetoothデバイスに[!]マークが付いている場合、問題を検出してデバイスをリセット(アンインストール)するかどうかをユーザーに問い合わせます(画面5)。「y」と入力すると、デバイスをアンインストールし、再スキャンして、デバイスが検出されるまでしばらく(15秒)待ち、その後、デバイスのステータスを再確認します(画面6)。

画面5 画面5 [!]マークが付くケース。yと入力すると、Bluetoothデバイスのリセットが始まる
画面6 画面6 コンピュータの再起動なしで、Bluetooth環境が正常化

 Bluetoothデバイスに[!]マークが付いておらず、他の関連デバイスが認識されていない場合は、デバイスをアンインストール後、コンピュータの再起動を知らせるためにバッチを一時停止します(画面7)。何かキーを押すと、再起動が始まり、起動が完了すると、Bluetoothデバイスが全て正常な状態に戻ります。

画面7 画面7 [!]マークが付かないケース。コンピュータの再起動が行われる

 リスト2のバッチは、筆者のノートPCで動くように作ってあります。他のPCでそのまま使えるものではありません。また、問題を根本的に解決するものではなく、ごまかしながら使い続けるために、面倒な操作をバッチ化しただけのものです。

 筆者の場合は、しばらく使っていたところ、デバイスのインスタンスIDが変わってしまい、バッチを修正する必要がありました。しかしながら、デバイスの制御にPowerShellコマンドレットやdevcon.exeが利用可能であることと、これらの使い方のヒントにはなると思います。同じような問題に悩んでいる方の手助けになれば幸いです。

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows Server 2016テクノロジ入門−完全版』(日経BP社)。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

「Windows 7」サポート終了 対策ナビ

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。