プログラムからBluetoothを使う面倒さ

最近、Bluetoothアダプタを買ったので、WindowsプログラムからBluetoothを制御できるか調べていたんだけど、面倒というかいろいろ思ったようにいかないのね。

まず、BluetoothスタックがMicrosoft純正のものと、ベンダ製のが存在すること。買ったプリンストンのPTM-UBT3Sという小さなデバイス。これにはドライバとしてToshiba製のBluetoothスタックがついている。

このスタックだと、Microsoftが用意しているBluetooth APIも、Winsockを使ったBluetoothデバイス制御もできない*1。Microsoft純正ドライバで認識させないとプログラムから制御はできないということ。*2

Bluetooth APIが使えたところで、できるのはデバイス認識とリモートデバイスの検索とペアリングまで。実際に各プロファイルを使ってデータ通信したりするのには自力で作らないといけないようだ。OBEXを使ってファイルのやりとりをしたくても、標準のライブラリが無いので自作するか商用のライブラリかフリーのライブラリを探さないとダメ。

おおげさかもしれないけど、なんとなくBluetoothが垢抜け無いというか広まらないのはこういうところにあるんじゃないのかな。単純に製品付属のアプリでファイル転送したりするという普通の使い方をするには問題ないのだけど、独自にアプリケーションから制御できればもっといろいろ使い道が出ると思うんだよね…。USBと違って無線なわけだし。

ベンダのドライバではAPIが使えない、Microsoftのドライバだとプロファイルが少ない、APIが使えても実際のプロトコルは用意されていない…。このままだとWireless USBとかあの辺の新しい規格に持って行かれたりしないのかな。

けっこう開発者泣かせなBluetoothです。

  • *1: そもそもデバイスとしてAPIが認識せず、デバイス未接続と返ってくる
  • *2: WIDCOMMスタックだと別のAPIがあるらしいけど、仕様書を見つけられず

コメント

  1. ゆう より:

    Linux用のbluezがwindowsに移植出来ればと思ったんですけど、ドライバの問題がありますしねぇ。。。

  2. ゆう より:

    Linux用のbluezがwindowsに移植出来ればと思ったんですけど、ドライバの問題がありますしねぇ。。。

  3. findup より:

    たしかにそうですね。

    プロファイルやプロトコル部分は移植できても
    ハードのドライバだけはLinuxからの移植は厳しいですね…。

    MicrosoftのBluetoothAPIも、WinsockでのBluetooth制御も
    今ひとつAPIが使いづらい感じですし、MSもBluetoothサポートは
    おまけくらいにしか思ってないのかもなぁなんて
    思ってしまいます。

  4. ゆう より:

    こんにちは
    なかなか忙しいみたいですね。
    僕も携帯の組み込み開発やってた時は、土曜の出勤と終電が
    デフォルトみたいな時もありました。

    近距離無線だとZigBeeなんてのも出てるみたいですね。
    ルーティングが可能だとか

タイトルとURLをコピーしました