MacのBluetoothはどれくらい使えるのか

感想を先にすると、ダメだった。PCとして使われるMacはともかくとして、同じスタックがiPhoneとかiPodで使われていると思うと気の毒になる。(多少は改善されているのかもしれないけど)

良いところ

Macbluetoothは、ハードウェアと一体に提供されるのでBluetoothの良いところを発揮する素地が有る。

実はこれらの特徴はMacが特別なことをしているわけではなくて、大抵のBluetoothチップはペアリングの情報を記憶して、起動時にHIDデバイスとして振る舞う機能が有るので、それを単に使っているにすぎない。
でも、Windowsや他のスタックでは上手く働かないケースが多いので、この点は標準装備のメリットと言える。
あと、開発ツールが豊富なのも良いところ。。Broadcom等と同様にパケットキャプチャを標準で提供している。Bluetooth回りのAPIもIOKitで統一されているので、それなりに開発もしやすいと考えられる。
WindowsWindows7でようやくこのラインに立ったと言える。API関連では確実に一定のアドバンテージが有り、Apple製品を使う限りはうまく働く。

悪いところ

逆にサードパーティ製品を混ぜてつかうのはそれなりに困難が伴なう。。

  • A2DPやヘッドセットの接続を回復するまでアプリケーションが応答しなくなる
  • 不正なメッセージを送ると反応が停止するケースが有る
  • 複数のBluetoothバイスを認識させると共倒れになることがある
  • スリープによる接続断を正しく扱っていないように思える

MacA2DP実装は何故か必要以上に弱気で、帯域が十分でもそれを活用しないケースが目立つ。それでいて、警告音を鳴らすと、それを鳴らし終わるまでイベントに反応しなくなるので、あまり実用的でないように感じる。
試した限りでは、Broadcomスタックとの相性が非常に悪く、A2DPやPANは正確に機能しなかった。
あと、Macにはスタックの選択肢が無いので、A2DPサーバとして動作させるといったことができない(ソフトを書けばできるので、探せば有るかもしれない)。
個人的には、複数のPCの音を一括して聞くためにA2DPを使っているのでそこの出来が微妙なMacはちょっと困る。もっとも、MacはOS側の機能で音声のルーティングが出来るのでA2DPを使ってわざわざ遠まわりする必要性は無いが。。