2012/06/11

Logitecの無線LANアダプタ LAN-W300N/U2購入&正常にスリープしました

背景

私の自作PC(OS: Windows7 x64)は引越し後より無線LANアダプタ(PLANEX GW-USValue-EZ)を使ってインターネットに接続していました. が, このアダプタを接続するようになってからスリープに失敗するようになりました.

スタートメニューからスリープを選んでも, ディスプレイの電源は落ちますが, パソコンのファンが回りっぱなしで止まりません. 暫く放置するとディスプレイの電源が再度入り, BSOD(ブルースクリーン)となります. エラーの種類はDRIVER_POWER_STATE_FAILURE (0x9f)です.

マイクロソフト公式のメモリダンプ解析ツールであるWinDbgでMEMORY.DMPの中身を見てみると, どうやらGW-USValue-EZのせいでスリープに入れていないことがわかりました.


以下は解析結果です.
0: kd> !analyze -v
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************
DRIVER_POWER_STATE_FAILURE (9f)
A driver is causing an inconsistent power state.
Arguments:
Arg1: 0000000000000003, A device object has been blocking an Irp for too long a time
Arg2: fffffa80092bf060, Physical Device Object of the stack
Arg3: fffff80000b9c518, Functional Device Object of the stack
Arg4: fffffa800ca4ab40, The blocked IRP
Debugging Details:
------------------

DRVPOWERSTATE_SUBCODE:  3
IMAGE_NAME:  usbhub.sys
DEBUG_FLR_IMAGE_TIMESTAMP:  4d8c0b08
MODULE_NAME: usbhub
FAULTING_MODULE: fffff88005800000 usbhub
DEFAULT_BUCKET_ID:  VISTA_DRIVER_FAULT
BUGCHECK_STR:  0x9F
PROCESS_NAME:  System
CURRENT_IRQL:  2
STACK_TEXT:
fffff800`00b9c4c8 fffff800`040eb702 : 00000000`0000009f 00000000`00000003 fffffa80`092bf060 fffff800`00b9c518 : nt!KeBugCheckEx
fffff800`00b9c4d0 fffff800`0408be4c : fffff800`00b9c600 fffff800`00b9c600 00000000`00000000 00000000`00000001 : nt! ?? ::FNODOBFM::`string'+0x34050
fffff800`00b9c570 fffff800`0408bce6 : fffff800`04228f20 00000000`001b973b 00000000`00000000 00000000`00000000 : nt!KiProcessTimerDpcTable+0x6c
fffff800`00b9c5e0 fffff800`0408bbce : 00000041`ad39b172 fffff800`00b9cc58 00000000`001b973b fffff800`041f69e8 : nt!KiProcessExpiredTimerList+0xc6
fffff800`00b9cc30 fffff800`0408b9b7 : 00000015`6d92b1c1 00000015`001b973b 00000015`6d92b170 00000000`0000003b : nt!KiTimerExpiration+0x1be
fffff800`00b9ccd0 fffff800`04078eca : fffff800`041f3e80 fffff800`04201cc0 00000000`00000002 fffffa80`00000000 : nt!KiRetireDpcList+0x277
fffff800`00b9cd80 00000000`00000000 : fffff800`00b9d000 fffff800`00b97000 fffff800`00b9cd40 00000000`00000000 : nt!KiIdleLoop+0x5a

STACK_COMMAND:  kb
FOLLOWUP_NAME:  MachineOwner
FAILURE_BUCKET_ID:  X64_0x9F_3_rtwlanu_IMAGE_usbhub.sys
BUCKET_ID:  X64_0x9F_3_rtwlanu_IMAGE_usbhub.sys
Followup: MachineOwner
---------
後半のFAILURE_BUCKET_ID等に, 「rtwlanu」というワードが出てくると思います. 予想ですが, RealTek Wireless Lan Utilityかなんかの略だと思います. 私はメモリダンプの解析には詳しくないですが, 以上のことからPLANEX GW-USValue-EZが怪しいと思うようになりました.
実際, このアダプタを挿していない状態だと正常にスリープしています(多分).
検索してみると, PLANEX製はx64環境では安定していないようです.
http://goo.gl/gClxS

また, 抜き差ししている時に気づいたこととしては
  • USBポートからGW-USValue-EZを抜いても, デバイスがデバイスマネージャから消えないことがある.
  • デバイスマネージャからGW-USValue-EZを無効にしようとしても, デバイスマネージャが応答なしになってしまう(マウスポインタがくるくるしたまま).
  • ログオフすればデバイスが無効になってくれる模様.
などがあります. 毎度ログオフは面倒なので, 別なメーカーの無線LANアダプタへの買い換えを検討することにしました.

BUFFALO WLI-UC-G301Nを購入(失敗)

アマゾンで\1,854でした. 理論値で送受信300Mbpsが特徴です.
いざ設定してみると, リンク速度が6.5Mbpsにしかなりません. 実際ネットをブラウジングしてみると, 明らかに以前より速度低下を感じました. GW-USValue-EZでもリンク速度は150Mbpsだったので・・・.
自作PCの他にもMacBook Pro上のWindows 7 x64でも試しましたが, 同様にリンク速度は6.5Mbpsでした. 64bitなのが原因かと思い, XP x86入りのミニノートでためしてみると, 130Mbps位になりました. 64bit環境では安定していないということでしょうか.

Logitec LAN-W300N/U2を購入(成功!)


Amazonで\1,180でした. 理論値で送信150Mbps(買った後気づきました^^), 受信300Mbpsです.
こちらはリンク速度が150Mbps(送信), 243Mbps(受信)になってくれました(Logitec クライアントユーティリティにより確認).
今のところ, このアダプタをつけたままでもスリープへの以降も正常に行えます. また, デバイスマネージャからのデバイスの無効化も正常に行えます.
スリープ問題はおそらく解決です! (今回は本当に※)

なお, Logitecの公式HPで公開されているドライバはかなり古いものだったので, チップメーカのRalinkのHPから直接最新版をダウンロードしました. チップ名はRT2870です(http://wikidrivers.com/wiki/Ralink_RT2870 よりチップ名を確認).
ダウンロードはこちらから↓

最新版(3.2.9.0)にアップデートすることで, スリープ復帰後の接続が一瞬で行われるようになったと思います. 私の環境では, Logitecで公開している古いドライバを使うとスリープ復帰後に安定しないです(接続→切断を30秒くらい繰り返す等).

また, 通信速度についてはGW-USValue-EZと大差なく感じます.
しばらくこの環境でスリープ出来るか毎日試したいと思います.
万が一再度スリープ失敗したら, 追記 or 記事を書きます.

0 件のコメント:

コメントを投稿