miauのブログ

はてなダイアリー「miauの避難所」をはてなブログに移行しました

OCZ nia 解析とっかかり

もう 2 週間くらい前のことになってしまうんですが、脳波マウスこと OCZ nia - Neural Impulse Actuator を購入しました。もともとインターフェイスバイスには興味があるので発売当初に買いたかったんですが売り切れて買えず。乗り遅れたものに高い金を出すのも癪だなーと思っていたら、

ちなみに、代理店では今回の“ドラマ出演”を記念して、脳波マウスを特価販売するキャンペーンを計画しているとか。

とのことで 15,000 円前後で販売されはじめたのでこの機会に購入してしまえと。結局クレバリー 2 号店で ¥15,900 くらいで購入。ちゃんと探せば ¥15,000 くらいで売ってるんだけど、この店がつぶれると困るので、ちょっと高いくらいならここで買うようにしてたり。

脳波マウスを使うコツ

この辺が参考になりました。ある程度動かせるけど・・・結局 Glance と Muscle で動かすだけで、脳波はオマケってこと?

脳波拾いたくなった

といったところで、マウス操作よりも脳波を記録したい衝動のほうが強くなりまして。その辺の情報を手当たりしだいに調べてみました(結構遠回りしてる気がします)。

まだ調査始めたばかりで半端状態ですが、調査を途中まで進めてそのままお蔵入りになったり、調査結果が膨大になって blog に書く気力なくしたりするケースが多いので、このタイミングで書いてみるテストでもあったりします。

バイスの一覧を拾ってみる

以前

でやった方法ですね。ActivePerl で

use Win32API::File qw(:ALL);
my $osTargetPath = "\0" x 65536;
QueryDosDevice( [], $osTargetPath, length($osTargetPath) ) or die "$^E";
print join "\n", split /\0/, $osTargetPath;

みたいにやって、デバイスの一覧を出力してみて、nia の接続前後を diff ってみる。すると、

HID#VID_1234&PID_0000#6&13d0e88a&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
USB#VID_1234&PID_0000#5&344213de&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed}

あたりが増えてた。(別のポートに挿したから?)とりあえず VID_1234 ってのが怪しいらしい。

DriverWalker でいろいろ眺めてみる

この辺りで使ったツールですね。当時よりはデバイスドライバ周りに詳しくなってるので、なるほどー、という感じ。

で、見たのはいいんだけど、それっぽいデバイスはなし。HID として認識されてる?

SnoopyPro で USB の通信を拾ってみる

その辺詳しそうな人に教えてもらったツール。今回初使用。

データ拾ってみると、起動時(?)の通信は拾えたけど、それ以降のデータ転送部分については拾えなかった。

nia.exe を解析してみる

OllyDebug で起動して API 呼び出し部分を探し当てて〜、とできると楽だったんだけど、今回それはできないみたい。インポートしている .dll も異常に少なくて、メインは mscoree.dll とか。調べてみるとこの DLL は .NET 関連のものらしい。

.NET アプリを解析方法をググると、どうも Visual Studio .NET なんかで普通に開けるそうで。試しに手元の VC++ 2005 EE で開いてみると、BrainActuated.Brainfingers.Devices とか CyberlinkDevice とかそういう名前空間レベルの情報は表示された。

BrainActuated とか Cyberlink とかを基にググってみる

ここに行きついた。nia の開発元らしい。

それっぽい情報発見

じゃあここへのリンクを探せば情報拾えそうだなー、と再度検索。

ようやくそれっぽい情報に行きついた。やっぱり VID 1234 ってやつでよさげ。まだ読んでないけど、かなり参考になりそう。

ついでにもひとつ紹介

Brainfingers について解説あり。それにしても、よりによって東方で試すとかマゾっぽい。