VIA製USB 2.0ドライバを削除して汎用ドライバを入れ直す [Win98]
Win98機でBuffalo IFC-USB2P4(PCIバス用USB 2.0カード、NEC μPD720101チップ)を使っていて、OHCI (USB 1.1) は正常に動いているのだが、EHCI (USB 2.0) のドライバーがエラーで動かない状態になっていた。USB 1.1としては使えるし、起動時にエラーが出るわけでもないので、何年も放置していたのだが、いい加減原因を探ろうという気になった。
まず、Win+Pauseキーでシステムのプロパティを出して、デバイスマネージャを見る。
「NEC uPD720101 USB 2.0 Enhanced Host Controller」に感嘆符が付いているので、ここが正常に動作していないとわかる。USBメモリ(JetFlash Transcend 16GB)のデバイスは「NEC USB Open Host Controller」にぶら下がっているため、OHCI、つまりUSB 1.1で動作していることになる。ちなみに、一覧の上の方にある「Intel 82371AB/EB/MB PCI to USB Universal Host Controller」はマザボのUSBホストコントローラーで、もともとUSB 1.1しか対応していない。
エラーが出ているデバイスのプロパティを開いてみる。「このデバイスは、存在しないか、正常に動作していないか、またはすべてのドライバがインストールされていません。(Code 10)」と出る。つまりは、ドライバーに対してデバイスが応答しないと言うことなのだろうが、その原因は広範囲にわたるので困る。USBコントローラチップが故障している可能性もあるが、他にPCIスロットのあるPCを持っていないので、動作を確認しようがない。
インストールされているドライバを確認してみる。Microsoftの2007年となっている。これは、初期状態のWindows 98はUSBメモリとUSB 2.0に対応していないが、非公式ツールのWindows 98 USB Mass Storage Driverを使っているため。
ドライバファイルの詳細を開いてみると、おや?製造元がVIAになっている。以前にVIA VT6212チップのUSB 2.0カードを使っていたので、その時に入れたドライバーが残っているのだろうか。自分で後からインストールしたものだと思うが、よく覚えていない。汎用のドライバかのように見せておいて、他社製チップでは動かないという罠かな?
Windows 98 USB Mass Storage Driverの中身を適当な場所(usb33jフォルダーとする)に展開する。ドライバの更新でusb33jフォルダーを指定して更新を試みるが、既に最新のドライバーがあるとかいって更新できない。
エクスプローラーでC:\WINDOWS\SYSTEM32\DRIVERSを開く。更新日時順に並び替えてみると、この2008年3月31日の日付のものが怪しいだろうか。
プロパティのバージョン情報を見ると、やはりこれが問題のファイルのようだ。
これら4つのファイル(usbport.sys, VUSTR98.sys, usbehci.sys, usbhub20.sys)をごみ箱に入れて、Windowsを再起動する。もっと念入りにやるなら、C:\WINDOWS\INFフォルダー(隠しフォルダー)にある該当のinfファイルも削除した方がいいだろう。
デバイスマネージャを開くと、感嘆符アイコンは同じだが、NTKERN.VXDがドライバーを読めないというメッセージに変わっている。
リストのこの項目を右クリックしてデバイスを削除し、「更新」ボタンをクリックする。デバイスドライバの更新ウィザードが立ち上がる。
「USB 2.0 EHCI Driver Diskラベルの付いたディスクを挿入して…」というメッセージが出たら、usb33jフォルダーを指定する。
ドライバーのインストールが完了して、デバイスマネージャーのリストから感嘆符アイコンが消えれば解決。感嘆符アイコンの付いた「USB 2.0 Root Hub」が追加された場合は、それを右クリックして削除し、「更新」ボタンをクリックする。
デバイスマネージャからUSBメモリのデバイスを探してみる。USB 2.0 Enhanced Host Controllerにぶら下がっているので、正常。
CrystalDiskMarkでベンチマークをとってみる。シーケンシャルリードで17.42MB/s (139Mbps) 出ている。USB 1.1の時にとった記録とは大違いだ。USB 2.0で動作しているとみて間違いない。