レゴ マインドストーム NXTにプログラムを転送する際、今までUSBを使用していたのだが、せっかくBlueToothをサポートしているのだからということで、BlueToothのUSBアダプタを買ってきた。D-Link DBT-120 USB Bluetoothアダプタ。厳密に言うとこいつじゃない。おかげで非常に苦労したのでその顛末を記述する。
Lego MindstormsのBluetoothのページによると、
PC Users:
LEGO MINDSTORMS NXT is compatible with Bluetooth Software included in Microsoft Windows XP Service Pack 2 and WIDCOMM Bluetooth Software for Windows v 1.4.2.10 SPS or newer.
ということになっている。このWIDCOMM Bluetooth Softwareというのが曲者だった。
Lego MindstormsのBluetoothのページの下のほうに、MINDSTORMS NXT Bluetooth Compatibility Matrixというのが出ている。
こいつを印刷して、CompUSAまでお買い物。
CompUSAでちょっと不愉快な思いをさせられたが、それはさておき、このCompatibility Matrixに出ていた、Dlink DBT-120というBluetoothのUSBアダプタを購入。実はこのリスト以外にもいろいろなタイプのBluetoothUSBアダプタは打っていたのだが、このリストに載っていたのは、唯一Dlink DBT-120であった。このCompatibility Matrixに出ているそのまんまのメーカー型番なので、苦労するなんてことはまったく考えもしなかった。
家に帰って早速、インストール。家で使っているWindowsは日本語版XPであるが、Dlink DBT-120のソフトのインストール時のGUIは自動的に日本語が表示された。
ラッキー。日本語サポートじゃん。
License Agreement では、東芝と表示されている。なんだ、ドライバは東芝なんだ。だから日本語サポートのばっちりなのね。確かに取扱説明書のインストール時の写真もTOSHIBA CORPORATIONって出てるや。
これがあとで苦労する羽目に。。。
まず、NXTのBlueToothをONにする。メニューでBluetoothの画面に行き、ONにすればOK。ついでに他のデバイスからNXTを見つけられるようにVisibleになっているか確認する。なっていなければ、Visibleに設定。
NXTのBlueToothの状態は画面内の左上でわかる。
BluetoothがOFFならば、左上には何も表示されない。
BluetoothがONで、他のBluetoothデバイスからは見えない状態ならば、Bluetoothのマークのみ表示される。
BluetoothがONで、他のBluetoothデバイスから検索可能ならば、Bluetoothのマークとその横に「<」が表示される。
BluetoothがONで、他のデバイスと接続状態にあるならば、Bluetoothのマークとその横に「<>」と表示される。
DBT-120のCDをパソコンに入れて、さくさくインストールして、DBT-120の添付のソフトでデバイスの検索をかけるとちゃんとNXTが見える。パスワードを入力せぇとくる。なんにもいじってないので、NXTのデフォルトのパスワード「1234」を入力。NXTの方も「ぴろりん!」という音とともに、パスワードを聞いてくる。そのままOK。
デバイスの認識ができたので、接続。あれ?DBT-120添付のソフトでは接続と表示されているが、NXTの方では接続されたことになってないぞ?
DBT-120の添付ソフトを終了させて、NXTの開発環境からNXTにBluetoothで接続してみる。
これが、検索をかけても、まったくもって、NXTが見つからない。
さて困ったぞ。
ふと、「WIDCOMM Bluetooth Software」という記述を思い出す。
困ったときのGoogle頼み。検索してわかったことは、
Bluetoothは、「Bluetooth Stack」というレイヤを利用してアプリケーションとコミュニケーションをとるらしい。
「WIDCOMM Bluetooth Software」というのはちまたのBluetooth USBアダプタに添付してあるソフトとしては結構定番らしい。
Windows XP のSP2では、Microsoftが「Bluetooth Stack」を提供しているらしい。
「WIDCOMM」というのは会社名だが、Broadcomが買収したらしい。(買収学派4900万ドル)
あり?んじゃ、WIDCOMMのソフトはどこから手に入れるんだ?D-Linkのドライバアップデートに置いてあるのか?
ということで、D-LinkのDBT-120のサポートページを見てみると、無印、revB3、revB4、revCとの4つのタイプのDBT-120があることがわかる。
ちなみに、僕の手元にあるのは、revC。
もしかして、古いのにはWIDCOMのドライバがついているんじゃないだろうな。
ということで、先ほどインストールしたドライバソフトをアンインストールし、ためしにrevB4のドライバを入れてみる。
確かにLicense Agreementのところで、WIDCOMとの表記が。。。
おぃおぃ。これじゃ、Legoのページに書かれてる、DBT-120はサポートしてますってのは、昔の話じゃん。ってまだNXTって発売されたばかりなんですけど。。。
D-LinkはWIDCOMMのソフトを使うのをやめて、東芝に乗り換えたということですな。
だめじゃん。
しかし、revB4のドライバでは、revCのBluetooth USBアダプタを見つけることができない。デバイスが見つかりませんといわれちゃう。
う~ん。
何気に、違うUSBポートにつないで見ると、、、、
あれ?動いてる。NXTの開発環境で検索できるぞ。お、プログラム転送できるかな。あ、できた。
なんでだぁ?
ということで、元のUSBポートに戻すと。。。
やっぱり動かん。。。
なんでこっちのポートだと動くかなぁ。と試してみると、ドライバをインストールしますとの表示。あれれ?ということで、ドライバをインストールすると。。。
やっぱり動かん。
どないなってんねん。
ちなみに、動かんというのは、検索してもNXTが見つからなかったり、たまに見つかっても接続できない状態を指す。
NXTの電源を入れなおしてみたり、PCを再起動してみたり。悪戦苦闘すること数時間。
ついに、解をみつけました。
ポイントは3点。
USBのポートごとにドライバがインストールされる。ポートを変更するとドライバを入れなおす。
東芝のBluetoothスタックではNXTの開発環境からは見えない。Windows標準装備のBluetoothスタックを使えばうまく動く。
だからといって、D-Linkに添付されているソフトを一切入れなくてもいいかというと、一切入れないと、Windows標準装備のBluetoothスタックは動かない。
普通に、D-Linkの添付CDからインストールすると、
という状態になる。
USBコントローラのGeneric Bluetooth Radioというのが、どうも犯人のようだ。
こいつが生きていると、
みたいなエラーが表示される。エラーはこのタイプだけじゃなくて、何種類か見たけど。。。
ということで、Generic Bluetooth Radioというのを右クリックして削除する。デバイスを無効にするだけでは駄目だ。USBを指しなおしたら、無効のまま帰ってきてしまう。
削除した状態で、USBを指しなおすと、
一番上に注目!Bluetooth Radiosとその中に、Generic Bluetooth Radio、Microsoft Bluetooth Enumeratorとアイコンつきで表示されているのが見える。
ここで重要なのは、「Microsoft Bluetooth Enumerator」。
こいつが出てきてないと、NXTの開発環境が、NXTを見つけられないようである。
こうなっていれば、NXTの開発環境からちゃんとBluetoothでNXTと接続できる。
この状態でも動くときがあるところが、ややこしいところである。どうやら、 「Microsoft Bluetooth Enumerator」が鍵を握っている模様。
ちなみに、「ポート(COMとLPT)」の中にある、「Bluetooth リンク経由の標準シリアル(COM16)」というのがNXTとの接続で作られたポートである。
「Microsoft Bluetooth Enumerator」が表示されてなかった状態のとき、すなわち動かない状態のときは、接続した瞬間に「ポート(COMとLPT)」の中になにやら見たこともない接続が黄色いアイコンとともに作成され、あっというまに消えてしまう。
ちなみに、USBポートを差し替えると、再びドライバを勝手に入れようとするので注意。入れられてしまったら、再び同じ手順を行わなければならない。
PCの電源を切ると、これらの情報はどっかにいってしまい再び動かなくなる。何かしらのドライバが勝手にインストールされてしまうようである。
え~いめんどくさい。ということで、結局、動いたり動かなかったり。
まだ安定して動かす方法は解決してない。
そのうち、NXTの開発環境のソフトがアップデートされることを期待します。
まだまだBluetoothは発展途上なのねぇ。というのを実感。
Bluetoothスタックの標準化がされてないのか、Microsoftが独自路線で走ったのか。。。それとも、東芝のスタックがおかしいのか。。。こんな面倒なことになるのは、僕の環境だけなのか。
どちらにしても、非常にてこずった。動かないわけじゃないので返品はしないが、実際問題、使える状態ではない。
ということで、D-LinkのDBT-120をNXT用に購入するのはお勧めしない。自己責任でどうぞ。
まぁそのうち、NXTの開発環境がアップデートされるでしょう。というか、お願いします。修正版を公開してください。
URLに書いてある情報を試してみてはいかがでしょうか?
自分はこの方法でbluesoleilスタックが標準だったドングルを、
widcommスタックで起動し、NXTと通信できました。
参考にしていただけたら、と思います。
貴重な情報をありがとうございます。
なるほど。確かにうまくいきそうですね。
さっそく挑戦してみます。
Lego Mindstorm NXT と Windows Vista
Windows Vistaをインストールしてからというもの、レゴ マイ…
Lego Mindstorm NXTと Windows Vistaと BlueTooth
以前、悪戦苦闘しまくったNXTとDBT-120。mwk様から情報をいただいたのだ…