In Bluetoothモジュールの使い方・開発お役立ち情報
こんにちは、無線化.comカスタマーサポート担当の清水です。
本日は各OSごとのBLE対応状況についてご説明します。(BLE = Bluetooth Low Energy, Bluetooth Smart:以下、BLEと表記します。)

尚、下記状況は2016年1月現在の情報です。今後は各OSともに、状況が改善されていくことが予想されます。

通信相手デバイスがBluetooth4.0(BLE)に対応していても、ユーザが自由にBLE通信できるとは限りません。

『BLEモジュールを使って、スマートフォンやパソコンとBLE通信させたい。』
というエンジニアの方が増えています。無線化.comでもBLEモジュールZEAL-LE0をご提供しておりますが、通信相手選びには少し注意が必要です。

通信相手デバイスがBluetooth4.0(BLE)に対応していても、ユーザが自由にBLE通信できるとは限りません。

Windows, iOS, Android – 各OSごとにBLEの対応状況は異なり、対応デバイスも様々です。通信させたい相手デバイスがBLE通信を行えるのか、事前にしっかりと確認、把握しておくことが重要です。ここでは各OSごとのBLE対応状況と注意点について解説していきます。

Logo 6 Bluetooth Smart

BLE通信を行うのはGATTプロファイル。重要なのはGATT APIが利用できること

BLE通信は、GATT(Generic ATTribute)というプロファイルを使用します。当社のZEAL-LE0も当然GATTを搭載していますし、通信相手デバイスもGATTを搭載していることが必須条件となります。

ただ、相手デバイスにGATTが載っていればOKかというと、それだけでは十分ではありません。
ユーザ(メーカーエンジニア)がBLE通信のデータにアクセスするためには、OSレベルでGATTのAPIが用意されている必要があります。
※意味合い的には「Bluetooth(BLE)ドライバが用意されている」と置き換えても結構です。

つまり、仮にWindowsPCやスマートフォンにBLE(GATT)が搭載されていても、OSにGATT APIが用意されていなければ、ユーザが自作アプリ内で自由にBLEデータを扱うことはできません。

各OSごとにBLE対応状況が異なるというのは、各OSごとにGATT APIの対応状況が異なるということです。

各OSごとのBLE対応状況

各OSのGATT API対応状況は下記の通りです。

Windows:8.1以降(※要注意)
iOS:iOS6以降
Android:Android4.4以降(注:正式には4.3以降だが、4.3は不具合あり)

iOS

もし安定したBLE通信を望むのであれば、真っ先に候補として挙がるのがiOSです。Apple自身がBLEの活用に積極的であり、BLEへの対応が一番進んでいます。(※AppleがBluetoothに力を入れていることは、昨年、Bluetooth SIGのプロモーターメンバーに参画したことからもわかります)

OSとしてはiOS6以降でGATT API(CoreBluetooth)が本格採用され、特に目立った不具合も聞かれません。
また、デバイス(ハードウェア)としてもiPhone4S以降でBLEに対応していることから、現在、国内で利用されている多くのiOSデバイス(iPhone、iPad)がBLEに対応していると考えられ、安心して利用できる通信デバイスと言えます。

当社でもiOSを中心にZEAL-LE0の動作確認を行っています。
ZEAL-LE0の製品紹介はこちら

iOSの注意点

  • iOSアプリの開発には、Appleの iOS Developer Program 契約とMac本体が必要。
  • iOSアプリの配信にはAppStoreへの登録審査が必要。

Android

AndoridはAndroid4.3からOSレベルでGATT APIに正式対応していますが、4.3では不具合があり、実質、Android4.4以降と考えて良さそうです。AndroidもBLEへの対応が進められていますが、iOSに比べると、機種によって動作が不安定な場合があり、その点がネックと言えます。利用機種を指定できる案件であればさほど問題にはなりませんが、多機種への対応が必要な案件であれば、BLE非対応機種が多いAndroidは大変かもしれません。

もし対AndroidでBLE通信を行う場合には、Googleがリリースしている「Nexusシリーズ」がおすすめです。Nexusシリーズはキャリアやメーカー独自のアプリがインストールされていないため、「混じりけのないAndroidOS」として扱うことができ、トラブルも少ないです。当社でもNexus6やNexus5, Nexus7を用いて動作確認を行っております。

AndroidでのBLE利用につきましては、下記サイトのようにかなり詳しく解説しているページがございますのでそちらをご参考ください。
http://mslgt.hatenablog.com/entry/2015/05/17/212257
http://qiita.com/HideMatsu/items/6a6758eca86500881126
http://blog.fenrir-inc.com/jp/2013/10/bluetooth-le-android.html

Androidの注意点

  • 対応機種が限られているため、機種選定に制約がある。
  • しかもAndroidは各メーカー、各機種ごとに、OSが独自カスタマイズされているため、仮にAndroid4.4以降の端末だとしても、実際に試してみなければBLE通信できるかわからないという懸念材料もある。

Windows

MicrosoftはWindows8.1からGATT APIに正式対応しました。従って、もしWindowsでBLEデータを扱いたければ、必然的にWindows8.1以降縛りということになり、Windows8以前のPCは対象外となります。

しかも、WindowsのGATT APIは不安定との情報が多く、まだ実用レベルに達していないとの見方が強いです。Microsoftが作るBluetoothドライバは、Windows Mobileの時代から不安定ということもあって、当社も極力利用を避けてきました。そう言った経緯もあることから、Windows OSで安心してBLE通信が行えるようになるまでには、まだまだ時間を要するかもしれません(今後、改善されていくことも間違いないと思いますが・・・)。

よくある誤解!Bluetooth4.0対応の市販USBドングルを使えばBLE通信できる?

Windows PCでBluetooth通信を行う場合、市販のUSBドングルを利用されている方も多いと思います。しかし、BLE通信において特にご注意いただきたいのが市販USBドングルの存在です。

市販されているUSBドングルの中には、Bluetooth4.0(GATT)に対応した製品もありますが、ドングル付属のBluetoothドライバはGATT APIを用意しているわけではないため、ユーザが自由にBLEモジュールと通信を行えるわけではありません(ZEAL-LE0に限らず、一般的なBLEモジュールでも通信できません)。例えばキーボードやマウスのような、ドングルが用意した使い方に限り、BLE通信ができるような仕組みになっています。このため、現状、対Windows PCでBLE通信を行いたい場合は、Windows8.1以降で、且つ非常に不安定なBluetoothドライバを用いるしかないというのが実情です。

対WindowsでのBLE通信は非常にハードルが高い

解決策は、OSに依存しない無線化.comオリジナルドングルを利用すること

zeal-usb-dongle無線化.comオリジナルBLEドングル

このような状況を受け、当社ではZEAL-LE0と通信可能な「セントラル専用モジュールZEAL-LE0-C」と「専用USBドングル」をご提供しています。

市販USBドングルと比べるととても高価なものになってしまいますが、ドングル内部にGATTプロファイル内蔵のBLEモジュールを組み込むことで、従来のSPP同様、COMポートでBLEデータを受けられるというメリットがあります。

しかも、Windows側に必要なのはFTDIのUSBドライバだけになりますので、Windows OSのバージョンや環境変化に影響されないという大きなメリットが生まれます。エンドユーザ様から『Windowsのバージョンを上げたら、動いてたアプリが動かなくなった』というご経験があるメーカー様なら、このメリットはご納得いただけるのではないでしょうか。

zeal-usb-dongle2