Last update:2007/03/03

[TopPage] [FMTOWNS] [Hardware] [Freesoft] [怪飲料] [CHAT兼掲示板] [LINK/etc] [About]

■ M-AUDIO KEYSTATION49e を w2k環境で使う ■
KeyStation49e

以前購入した M-AUDIOのUSB-MIDIキーボード KEYSTATION 49e をメインのデスクトップ機で使おうとしたのですが、 モノの見事にUSBコネクタに接続しただけでハングアップ、もしくはリブートしてしまいます。

私の環境ではここ最近Intel系のチップセットを使用したマシンが無かったこともあり、 長いあいだこの現象はマザーボードとの相性、というかUSBホストコントローラが載っている サウスブリッジとの相性だと思い込んでいたのですが、ある日試しに USB黎明期の鉄板たる i440BXチップセット搭載のASUS P2Bに接続してみたところ、やはり同じように ハングアップしてしまいました。

これはおかしいな??? もしかしたらウチだけ?

ということで、google先生に聞いてみたところ、少数ながらも似たような報告がある模様です。 どうやらWindows2000だとこのような症状になるとの事でした。確かに動いた環境は皆WinXPだった気がします。
なになに、ドライバ組み込み中にデバイス側の電源をOFFすれば良い・・・? やっては見たものの、タイミングが難しくてうまく行きません。

仕方なく、レジストリをいじって正しく認識させることにしました。

ちなみに、WindowsXPならOS側でUSB-MIDIデバイスのクラスドライバを持っているので、 ドライバの追加インストール無しで使用可能です。というかドライバがインストールできません(怒)

■ 詳細 ■

KeyStation49e

M-AUDIOのUSB接続MIDIキーボード KEYSTATION 49eは、USBバスパワーで動作するMIDIキーボードです。 ACアダプタからの電源供給で、通常のDIN 5pinのMIDI OUTだけを使うことも出来ます。

前述のようにWindowsXPであれば、ドライバをインストールする必要なくOS標準のドライバで 動作するため便利です。 しかしWindows2000の場合、ドライバを先にインストールしようとすると「既にMIDIキーボードが接続されているので抜いてくれ」 という趣旨のメッセージでインストールを拒否され、デバイスを挿してからインストールしようとすると、 先にUSBオーディオの標準クラスドライバを組み込もうとした挙句、ハングアップもしくはリブートしてしまいます。 うちの環境だけですかねぇ。

ドライバがインストールできない
デバイスを抜け、さもなくば死を。(何か違う)

原因は、Windows2000がUSB-MIDIキーボードのクラスドライバを持っていないのにデバイス側のコンフィグレーションが それを要求する為らしいのですが、ドライバを先にインストールできない以上は回避のしようがありません。

先達の方々の記録を見ていると、ドライバを組み込んでいる真っ最中に電源をOFFし、USBオーディオのドライバが 読み込まれるステップをパスした上で、再度電源ONしてドライバを組み込む、という荒業をやっているようです。 しかし、何度かやってみたもののタイミングを掴むことが出来ず、別の方法を考えました。

デバイスとデバイスドライバの関連付けは、レジストリに書かれています。 よって、レジストリ内に有るドライバと関連付けているキーを書き換えて正しいドライバのファイルを 指定することが出来れば、間違ってUSBオーディオデバイスとして認識されなくなります。

M-AUDIOのサイトからドライバを落としてきて.infファイルを読むと分かりますが、 {36FC9E60-C465-11CF-8056-444553540000} というUSBデバイスとしてのクラスと {4D36E96C-E325-11CE-BFC1-08002BE10318} というサウンド・オーディオデバイスとしてのクラスに含まれます。

INFファイル

なので、
  HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{36FC9E60-C465-11CF-8056-444553540000} と、
  HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318} に対して
あらかじめ \WINNT\INF\ 以下にコピーしておいた.infファイルとの対応を書いておいて、
  HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB\Vid_0a4d&Pid_0090
  HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB\Vid_0a4d&Pid_0090&Mi_00
に対して前述のClassを参照するように書いてやれば良いと思われます。

書き込む内容については・・・、IDそのものはハードとドライバ依存で固定ですので、 一度WinXPが動作するマシンでセットアップしてから、それを見ながらやるのが良いと思います。

私の環境では、\Enum\USB\Vid_0a4d&Pid_0090 の Driverには {36FC9E60-C465-11CF-8056-444553540000}\0021 が書かれていたので Classのほうに 0022 を追加してWinXP機と同じ内容を書き込みました。

Class

Enum

もしかしたら後者(Enum)のほうが書き換えできないかもしれませんが、対応さえ正しく取れていれば良いので 前者の方だけで修正しても良いかもしれません(私の場合はそうしました)。 が、他の部分もきちんと考えてから直さないと、今度はUSBオーディオデバイスが動かなくなる可能性が大です。

以上のレジストリの書き換えに加えて、配布されているドライバに含まれる EVOLUSB.INF と、EVOLUSBM.INF を 適当な名前にリネームして \WINNT\INF にコピーしておきます。 上記の例では、それぞれ oem_user0101.inf, oem_user0102.inf という名前にリネームしました。

その上で KEYSTAITION 49e を接続すると、勝手にUSBオーディオの標準クラスドライバを読み込まずに .INF ファイルに従った設定をかけに行きます。 ドライバの実体ファイル(*.DLL)が無いのでドライバ組み込み中に要求されますが、配布されているドライバ を指定すればよいだけです。

ようやく正しく認識された図

以上で何とか使えるようになりました。

しかしM-AUDIO製品、安いのは良いけどドライバはどうにも心配です。 こんな対策をしないとならないのはウチの環境だけとは思えないのですが・・・。何が違うのかな・・・。

Windows2000で使おうなどと考えず、素直に GarageBandあたりで使った方が適切かもしれません。

初出:2007/03/03

[参考にさせて頂いたサイト]
Altneuland様(→■) → Profile → マシン詳細
ありがとうございましたm(__)m

もどる