2008/09/24(Wed)MTPモードのトラブル

2008/09/24 16:18 Software::Windows
最近の携帯電話やポータブルプレーヤーには、「MTP(Media Transfer Protocol)モード」という転送方法が数多く採用されている。先日のSH906iにもこの方式が実装されていた。
MTPはMicrosoftが開発した技術仕様で、それぞれのデバイスドライバを必要することなく、マルチメディアデータを標準インストールされているWindows Media Playerで転送することが出来る。DRMもサポートしていることから、マスストレージモードを搭載していない物などにもこのモードがあることが多い。(パナソニック等の製品にはSD-Audioという規格があり、これとは別。)


非常に便利なMTPモードであるが、Windows Media Player絡みのアップデートでうまく動作しなくなることがあるようで、実際に私がハマったので、そのトラブルシュートをご紹介。

現象

Windows Media Playerからは同期デバイスとして認識せず、デバイスドライバでは!マークが表示されている。
(IEEEコントローラが×になってるのは、ノートPCの消費電力削減のため、給電を停止しているからであり、本題とは関係ない。)
mtp01.png

mtp02.png


「ドライバの再インストール」を選んでみると、一見インストールが成功したように見えるのだが、最後に「このINFのサービスインストールセクションは無効です。」と難しいエラーメッセージが表示される。

mtp03.png


解決方法

先ほどもちらっと書いたように、これはWindows Media Playerをアップグレードしてしまうと問題が起こる模様。
色々とググってみたところでは「XPの修復インストールで直った」という情報が出てきたが、さまざまな部分が元に戻ってしまうのでこれは避けたい。
半ば勘に頼ってだが、私の場合は、WMAのエンコーダーに同梱されていた「Windows Media Format 11 runtime」をインストールしてしまったのが原因らしい。
Windows Media Player 10を使っているのに、11用のランタイムを間違えてインストールされてしまったのが原因かな?
Windows Media Player 11を使ってる人はこれをアンインストールしていいのか良く分からないが…。

▼これをアンインストール
mtp04.png



メッセージに従って、どんどん進む。
mtp05.png

チェックをつけて続行。ここのメッセージによると、保護されたファイルのライセンスは削除されるので再度取得せよ、とのこと。私はDRM保護されたファイルは管理していないので問題なし。
mtp06.png

mtp07.png

mtp08.png


ここで再起動

仕上げ

この段階ではトラブルを起こしているドライバが読み込まれているので、デバイスマネージャから一旦問題のデバイスを削除する。
それから、USBケーブルを挿しなおし、今度は認識されることを確認。

mtp09.png

mtp10.png

2008/09/13(Sat)バッチファイルで時計表示

2008/09/13 17:56 Software::Windows
あるステータスをバッチファイルで延々流し続けたいときに、パッと見て、その行のレコードが何時何分何秒のデータかを分かりやすくしたかったので、バッチファイルで時計を表示するコードを書いてみた。

とまぁこれが、結構面倒で^^;
time /Tコマンドでは、秒まで出てきません。
秒は%time%という変数を使うことまで1/100秒単位までご丁寧に出てくれるのですが、はっきり言って無駄…

で、これを使わざるをえないことに。
結構XPだったり2000だったりで出力に差があるらしいのですが、ここはXP x64 SP2ベースで書きます。
自分の場合は、24時間制で0補完済みの2桁ごとで区切られた数が得られたので、「あぁ、substringかけるだけじゃん~」と思ったら……

実は厄介でした。0の扱いが。
先頭に0がついた、06といった数字は、8進数の6を表すような解釈をするらしく、秒の部分だけを切りだして変数に入れる(set /aでは式の評価が行われる)と、システムの時計が8秒と9秒のとき、"無効な数字です"と文句を言われます。

というわけで、結構苦肉の策。
@echo off
set n=-1
:LOOP
set /a t=%time:~6,1%
if %t% == 0 (set /a s=%time:~7,1%) else (set /a s=%time:~6,2%)
if %s% == %n% goto LOOP
set /a n=%s%
echo %time:~0,8%
goto LOOP
実行結果
17:53:40
17:53:41
17:53:42
17:53:43
17:53:44
17:53:45
17:53:46
17:53:47
17:53:48
17:53:49
…
もっとスマートに書けるのかもしれんが……。あぁ、とりあえず外部アプリのsleep.exeとか、JSを開く手はナシで。
ちなみに、ping -n [止めたい秒数] localhost >NULという書き方も紹介されてましたが、なんか1秒置きにうまく動いてくれませんでした。


まったくもって、Linuxのbashは賢すぎる。
あっちなら
echo -e "`date "+%Y/%m/%d %H:%M:%S"`"
なんて手軽に書ける。曜日や"1日前"、なんてのもお茶の子さいさい。
あぁ、こんな表現使うの久々…(笑)

2008/09/12(Fri)BSOD 0x35 NO_MORE_IRP_STACK_LOCATIONS with KIS 解決法

2008/09/12 21:20 Software::Windows
BSOD中間まとめで書いたが、このKaspersky Internet SecurityとWindowsファイル共有が相性悪くて、BSOD 0x35 NO_MORE_IRP_STACK_LOCATIONSで止まる件について解決法が分かった。
この話がマイナーな事を考えると、Windows XP x64 SP2限定の話で、x86には全く関係ないのかもしれない。

MSKBを探し回った結果

0x35エラーが引っかかったが、ドメイン参加ではないのでドメインにログオンしようとすると、「 STOP 0x00000035 NO_MORE_IRP_STACK_LOCATIONS」エラー メッセージを表示することがあります。は関係ない。
SP2も適応済みであり、mup.sysのバージョンは公開されているパッチよりもずっと新しかった。

mup.png


Kaspersky Laboを探しまわった結果

このエントリが引っかかって、
I should also mention, I tried changing HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Klif Start key to 2 (currently still set that way), and that did not help. I then added to HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters an IRPStackSize key, started at 15, ran it up to 50, but that also did nothing.
というのがあったので、ダメ元で、
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\KLIF]
"Start"=dword:00000002
に変更。元々は、
"Start"=dword:00000001
でした。
このStartの値が何を示すかというのは、MSKBによると0x01の方が0x02よりローレベルな段階で起動する模様。
ゆえに、エラーが起こった時はKernel Panic=BSODとなるわけですか…。ふむ。

とりあえず、結果からいえば、これで直った。
この変更を加えても、一応Firewallは正常に動作しているようで、未定義のルールについてはちゃんと警告出してきているし、Sambaのやり取りも問題なくなった。


一件落着。
今回はBSOD系のエラーでも、すごくマイナーな物だったから余計に苦労したな…。

追記 2008/09/15

x86にKIS7をインストールしている場合でもStart=0x01だが、こちらはBSODにならない。
ということは、x64環境の場合だけの問題のようですね。

追記 2008/12/03

しばらく使ってたら、また青くなった。
今度は、ここを変更してみた。
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kl1]
"Start"=dword:00000002
現状とりあえず安定しているようなので、↑でダメだった人はやってみてください。

2008/09/11(Thu)DPC Latency Checker ひどい有様

2008/09/11 19:49 Software::Windows
ASUSブランドのPxBシリーズ*1にはよくお世話になっている私だが、最近P4B266-Eのシステムが調子が悪い。
スペック: P4B266-E, Pen4 1.8AGHz(Northwood), Mem 768MB, HGST 300GB, Winfast TDH 200

*1 : P3B-F, P4B266-E, P5B Deluxe/WiFiAPと…

DPC Latency Checker

まあディスクに対して非常に負荷のかかる使い方をしているので、I/O待ちとかでマウスカーソルがカクカク止まったり、音楽を再生しても飛んだりノイズが乗るのかと思っていたが、某氏に教えていただいたDPC Latency Checkerというのを使って割り込み遅延をみると、ひどい有様。

▼通常のWebブラウズ、フォルダ閲覧程度の負荷
dpclc1.png


▼同時にいくつもファイルコピーなど負荷をかけた状態
dpclc2.png



多分、2chの【大丈夫?】DPC LATENCY CHECKER【レイテンシ】というスレでもここまでひどい人は居ないんじゃないかな…と某氏と話していたが…。


原因究明のため、色々調べてみた。
まず、カーソルがカクカクして、数十秒に一回、2~3秒カクカクする現象が起こるのは、「1つあたりが比較的大容量の数メガ以上ファイルをコピーしたりするとき」ということが分かった。小さなファイルをたくさんコピーするときや、フォルダを開くだけでは全く問題がない。ディスクキャッシュ絡み???
同様に、ネットワーク越しにアクセスしたとき・された時にも重くなる。

イベントビューワを開いてみると、何やらdiskエントリで怪しいものが……。

eventviewer-diskerror.png

diskerror.png



ファイルコピーの度に出てるわけではなさそうだが、これはまずい。
と思って、とりあえず全てのドライブに対して、chkdsk /f X:をかけた。すべて問題なし。あれ??
ちなみにシステムは、Windows XP SP3。比較的OSがすっからかんの状態でSP3をインストールしたので、あんまりこれによる影響とは考えられない。


とりあえずファイルコピーが重いというのは致命的だが、幸いTrueImageなどのバックアップがあったので、大部分はそれに頼ることにして、必要なものだけ退避させてシステムを入れなおし。

ようこそでフリーズ

P4B266-Eには、ディスク系のPCIカードを2枚突っ込んでいて、一つは玄人志向 SAPARAID-PCI*2, もう一つはITE IT8212というATAカード*3。システムディスクは、SAPARAID-PCIに接続したS-ATAディスクから起動している。

SP2と様々な更新を統合したインストールCDからセットアップして、ユーザー名を決めた後、ようこそ画面が出る所でフリーズ。

これは、ITE IT8212がドライバ未組み込みの状態だったのが原因かな?
一時的にボードを取り外してやったら、すんなり起動して、引き続きKBパッチの適用へと進んでいった。

*2 : S-ATAが2台、P-ATAが2台x1チャンネル接続可能

*3 : P-ATAが2台x2チャンネル接続可能

そういえばネットワークカード

時系列順にだらだら書いていて申し訳ないが、P4B266-Eのネットワークカードのドライバをインストールする際、前回のシステムではASUSのIntel(R) PRO/100+ Lan Adapter Driver & Utility V5.1を使おうとしたのだが、自動的に検索させてもうまく認識しないので、IntelサイトのPRO2KXP.exe*4を使ったっけ。
そもそもこのカードが、Intel PRO/100の何シリーズなのかよく分からず、別ドライバを突っ込んでしまってたのかなあ?

ASUSのサイトに合った82562_51.zipの中身のoemsetup.infを手動で指定してやって、PRO/100 Desktop Adapterを選択してやると、これでもちゃんと認識して繋がる。

そういえば、と思って、製品添付のCDから\Drivers\Lan\Intel\Info\Drivers.htmに書かれているとおり、ドライバフォルダを指定して自動選択させてやると、PRO/100 VE Desktop Adapterとして認識した。あれ?これが正しいの?無論繋がるけど。うーん……。

*4 : セットアップVer4.0.100.1124, CRC32=BAAB738B, どこのページからDLしたか忘れた

改めてDPC Latency Checker

再インストール後はこんな感じに。時折赤くなるけど、マウスが飛ぶほどのことはなくなった。
こりゃもしかして、SAPARAID-PCIのせいかなぁ?流石にこいつは無効にできないので、もう我慢するしかないか。

dpclc3.png

あれまたおかしい

また不定期にマウスカーソルや画面描画が止まる現象に悩まされるようになった。クリーンインストールでこれぇ?
あ、そういや、さっきIT8212経由で接続したHDDがカッタンカッタンスピンアップに失敗するような変な音立ててるし!さっきはこんな音してなかったのに……。
イベントビューワの警告は本当だったんだ…。chkdskで何で問題が出なかったんだろう。気まぐれ?

ようやく元通り?

とりあえず死んだHDDを外してやったら安定したので、再セットアップする前のOSにTrueImageで復元。
1時間ほど放置しておくだけでまるまる戻ってラッキー♪

DPC Latencyは相変わらずたまに赤いバーが出てきて、その時何か音楽や映像を流してると音飛びするけど、もうこりゃどうにも直らんでしょ。
バックエンドサーバーだし、期待しないでおこう。

2008/09/09(Tue)BSOD中間まとめ

2008/09/09 19:58 Software::Windows
Windows XP x64システムを数か月使ってみたが、たまにBSODが起こる。
これが何の原因かなぁということで、x64用βドライバを使ってる音源ボード*1の線や、各種ドライバなんかを見てみたのだが、原因はPFW兼ウイルス対策ソフトのKasperskyじゃなかろうかという線が出てきた。

今日、LAN上の別PC(Windows XP x86 + Virus Buster 2008)からWindowsファイル共有を使って数百メガのデータを送ろうとしたり、SleipnirでそのPCにダウンロードファイルを保存しようとしたりした際、BSOD 0x35 NO_MORE_IRP_STACK_LOCATIONSが発生した。

過去、BSODの種類別発生回数。
  • 0x3b - SYSTEM_SERVICE_EXCEPTION (7 times)
  • 0x35 - NO_MORE_IRP_STACK_LOCATIONS (5 times)
  • 0x24 - NTFS_FILE_SYSTEM (2 time)
  • 0x1a - MEMORY_MANAGEMENT (1 time)
  • 0x7f - UNEXPECTED_KERNEL_MODE_TRAP (1 time)

詳しく調べてみると、KIS 2009 Vista x64 Ultimate BSoD - Kaspersky Lab Forumがひっかかった。
他にも、BSOD Ultimate x64 - Tech Support Forumという記事も。
今までに起こったBSODの種類が、2番目の記事に出てきたコードとよく似ている。
for the 3b error reinstall your video drivers
今もう最新版だけど……。

私のMBはASUSのP5B Deluxe/WiFiAPだが、これと似たP5Qでも似たような現象が起こってる人がいる模様で、その人はメモリが原因だったらしい。
うーん、memtestするっていっても、6GBも何回も回すだけ使わない時間帯ないしなぁ。

引き続き調査中。

*1 : Creative Sound Blaster Live! Platinum 5.1という古いやつ