BluetoothモジュールZEALとAndroid端末とのSPP接続について

 In BluetoothモジュールZEALの使い方, Bluetooth入門&無線化.comトピックス
【2015/02/25更新】動作確認済みAndroid端末リストを更新しました

ZEALとAndroid端末は接続可能です

こんにちは、無線化.comカスタマーサポート担当の清水です。

ここ最近「Android端末とZEALとの接続」についてお問い合わせが増えています。各キャリアが力を入れていることもあり、対応端末は増える一方ですが、いくつものAndroidバージョンが存在することから、「どの端末ならつながるのか?」というご質問が後を絶ちません。

ここでは実際に当社で確認したZEAL-C02と各デバイスとの接続テスト結果や、各Androidバージョンごとの接続方法、そして万が一つながらない場合の対策法についてご説明していきます。

AndroidバージョンとAPIレベルとBluetooth機能の関係

AndroidはAPIが公開されていますが、そのバージョンごとにAPIレベルが定められており、基本仕様や使える機能などが異なります。 AndroidにおけるBluetooth機能もAPIレベルによって異なっており、特にAPIレベル8~10の間で大きな仕様変更が行われていますので注意が必要です。

各APIレベルとZEALとの接続結果

Androidバージョン APIレベル ZEAL-C02 ZEAL-S01
5.0 21
4.4 19
4.3 18
4.2 17
4.1 16
4.0.3 – 4.0.4 15
4.0 – 4.0.2 14
3.2 13
3.1 12
3.0 11
2.3.3 – 2.3.7(※) 10
2.3 – 2.3.2(※) 9 △(※後述)
2.2 8
2.1 7
2.0.1 6 (日本未発売)
2.0 5
1.6 4 ×(API非公開)

※メーカー発表ではどちらも「Android2.3」と表記されている場合があります。
日本での発売端末(Wikipedia)

ZEAL-C02、ZEAL-S01ともに主要バージョンとの接続ができることを確認しております。

接続確認済みAndroid端末リスト

テストに使用したAndroidアプリ

テストで使用したAndroidアプリは「BluetoothChat for ZEAL」です。これは有志の方がご自身のZEAL動作確認用に作成されたターミナルアプリです。GoogleがBluetooth通信用のサンプルソースとして提供しているBluetooth Chatがベースになっています。GooglePlayに公開されていますので、ご自由にご利用ください。
【BluetoothChatの使い方】Nexus5とBluetoothモジュールZEAL-C02のSPP接続手順解説

BluetoothChat for ZEAL
kuronekotolucky
価格:無料  平均評価:0.0(0 件)

接続テストに使用したデバイス一覧

【2015/02/25更新】
デバイス名称 メーカー・キャリア Androidバージョン APIレベル
Nexus6 Google 5.0.1 21
Nexus5 Google 4.4.2 19
Xperia Z1 SOL23 SONY・KDDI 4.4.2 19
AQUOS SERIE SHL25 シャープ・KDDI 4.4.2 19
Nexus7(2013) Google 4.3 18
Nexus7(2012) Google 4.3 18
4.2.2 17
Nexus10 Google 4.3 18
INFOBAR A02 HTC・KDDI 4.1.1 16
Xperia SX
SO-05D
ソニーエリクソン・docomo 4.0.4 15
AQUOS PHONE
SH-01D
シャープ・docomo 4.0.4 15
ARROWS Z
ISW11F
富士通・KDDI 4.0.3 15
XOOM MOTOROLA・KDDI 4.0.3 15
3.1 12
3.0 11
Sony Tablet S
SGPT111JP/S
SONY 3.1 12
3.2.1 13
4.0.3 15
Galaxy Nexus
SC-04D
Samsung・docomo 4.0.1 14
4.0.4 15
MEDIAS PP
N-01D
NECカシオ・docomo 2.3.5 10
INFOBAR A01 シャープ・KDDI 2.3.4 10
Xperia acro
SO-02C
ソニーエリクソン・docomo 2.3.4 10
Xperia arc
SO-01C
ソニーエリクソン・docomo 2.3.2 9
2.3.3 10
HTC Desire
X06HT
HTC・Softbank 2.2 8
Xperia X10
SO-01B
ソニーエリクソン・docomo 2.1 7
その他、数多くの端末と接続できることを、お客様よりご報告頂いております。

APIレベル別接続方法

対ZEAL-S01の場合

対ZEAL-S01の場合、主要となるAPIレベル7~12(Android2.1~3.1)を通じて、BluetoothDevice.createRfcommSocketToServiceRecord(以下、セキュアメソッド)というメソッドで接続させることが可能です。

対ZEAL-C02の場合

APIレベル8(Android2.2)以前の端末との接続

S01同様、APIレベル8(Android2.2)までの端末と接続させる場合には、BluetoothDevice.createRfcommSocketToServiceRecord(セキュアメソッド)で接続が可能です。

APIレベル9(Android2.3.2)の端末との接続

APIレベル9(Android2.3.2)以降ではAndroid側のBluetoothにおけるセキュリティ仕様が変更されており、ZEAL-C02はAndroidからセキュリティレベルの低い機器(※後述)とみなされてしまうため、セキュアメソッドを使って接続させることができなくなっています(ペアリングはできますが、接続・通信ができません。)。APIレベル9の端末とZEAL-C02を接続させようとした場合、対応するメソッドが存在しないため、ZEAL-C02側で特別な操作を行う必要があります。Android2.3.2との接続をご希望の場合には別途当社までお問い合わせください。

APIレベル10(Android2.3.3)以降の端末との接続

APIレベル10(Android2.3.3)からはBluetoothDevice.createInsecureRfcommSocketToServiceRecordというメソッドが新たに追加され、セキュリティレベルの低いZEAL-C02とも再び接続させることができるようになっています(このメソッドの場合は、ペアリングの際に数値比較がなく、単純にペアリングを承認するかどうかだけが問われます)。

ZEAL-C02は組込みモジュールという製品の形態上、認証の途中経過でユーザが介入することが難しいため(ユーザの介入とは具体的には「数値の比較」や「はい、いいえ」といった判断や意思表示のことです)、Bluetooth2.1から適用される「セキュアシンプルペアリング(以下、SSP)」では「ユーザ介入不可の機器」=「セキュリティレベルの低い機器」と判別されます。 ZEALのそのような仕様は意図したものであり、双方の機器のセキュリティに対する仕様が異なることから生じた相性のようなものであると言えます。

ZEAL-S01の場合は?

S01はC02と同じ組込みモジュールであり、同じくユーザの介入ができない仕様となっておりますが、S01はBluetooth2.0であるためSSPが適用されず、よって「セキュリティレベルの低い機器」と判断されないため、APIレベル9以降でもBluetoothDevice.createRfcommSocketToServiceRecordを用いて接続させることが可能です。

各Androidデバイスと各メソッドで接続させた場合の結果一覧

デバイス APIレベル C02 S01
vs. セキュア vs. インセキュア vs. セキュア vs. インセキュア
Xperia 7 未実装 未実装
Desire 8
Xperia Arc(2.3.2) 9 ×
Xperia Arc(2.3.3) 10 ×
XOOM(3.0) 11 ×
XOOM(3.1) 12 ×

※上記略語は以下の通り
セキュア: BluetoothDevice.createRfcommSocketToServiceRecordを使った場合
インセキュア: BluetoothDevice.createInsecureRfcommSocketToServiceRecordを使った場合

このように、ZEAL-C02はほとんどのAndroidバージョン(APIレベル)との接続を確認しております。一部、APIレベル9(Android2.3.2)のデバイスと接続させる場合のみ、ZEAL側に特別な操作が必要となりますが、2011年9月現在、日本国内で販売されているAndroidスマートフォンのうち、Android2.3.2に該当するものはほとんどありません。
唯一、「Xperia arc(ドコモSO-01C)」のみが2011年3月の発売当初、Android2.3.2を搭載しておりましたが、そのXperia arcも2011年7月6日にはAndroid2.3.3への公式バージョンアップが実施されており、実質的にAndroid2.3.2の端末を入手することは困難な状況であることから、この問題が発生するケースは極めて限定的であると考えています。
XperiaTM arc SO-01Cのバージョンアップ情報(docomo)

接続がうまくいかない場合には?

日頃お客様より「ZEALとAndroidがつながらない」というお問い合わせが少なくありません。基本的には上述の通り、Androidバージョンと紐付いたAPIレベルを意識していれば接続に問題はないと考えられますが、Android端末は各メーカーが独自の機能を実装していることがあるため、同じAndroidバージョン、同じメーカー、同じ機種であっても、機種の違いや端末の個体差によって接続できたり、接続できなかったりする場合があります。
接続できない場合には、まず以下の様な点をご確認ください。

Android端末が最新のファームウェアかどうか確認する

Android端末は機能追加や不具合修正のため、ファームウェアアップデートが実施されることがあります。ファームウェアアップデートでは不具合修正としてメーカーから発表されている現象以外にも、発表されていないいくつもの不具合が同時に修正されていると言われています。Bluetooth機能も例外ではありません。

過去の実例として、ZEALと接続できなかったAndroid端末が、最新のファームウェアへアップデートしたところ、接続できるようになった例がありました。どうやらAndroid端末において、動作が不安定だったBluetooth機能が、ファームウェアアップデートによって改善されることがあるようです。

まずAndroid端末が最新のファームウェアになっているかどうかをご確認ください

Android端末を一度再起動してみる

弊社での動作テストにおいて、「Android端末は接続ー切断を繰り返す内に端末内部のBluetooth機能が正常に動作しなくなってしまうことがある」ことを確認しております。はじめは正常に接続できていたのに、動作検証のため、接続と切断を繰り返している内に、急に接続できなくなってしまうことがありました。

エアパケットを解析してみたところ、Bluetooth接続は維持されている状態にも関わらず、Android端末画面上には「切断しました」というメッセージが表示されたり、逆にAndroid端末画面上ではBluetooth接続処理を行っていないように表示されるものの、無線電波上ではBluetooth接続処理を行っていたりと、実際の無線部処理とAndroid端末内部のステータス管理が一致しなくなってしまうことがあるようです。こうなってしまうと、Bluetooth機能のON/OFFではなく、端末自体を再起動しないと復帰できない場合があります。

Android端末を一度再起動してみてください。

ZEALを初期化してみる

事前にZEALをいろいろと動かしていると、知らぬ間に意図しない設定になってしまっているケースがあります。Android端末の再起動と同時に、ZEALの初期化(”BTY35CA”コマンド)をお試しください。初期化することによって接続できるようになった事例がいくつもあります。

「あれっ?」と思った時にはZEALの初期化をお試しください。

隠しコマンド”BT:g1”を実行してみる(ZEAL−C02の場合)

ZEAL−C02にはAndroid端末と接続しやすくするための隠しコマンド”BT:g1″が実装されています。このコマンドは「おまじない」です。もしC02対Android端末でうまく接続ができないときには”BT:g1”をお試しください。このコマンドは1度だけ実行すればOKです。元に戻したい時には”BT:g0″を実行してください。

「おまじない」の隠しコマンド”BT:g1″をお試しください。

違う端末で試してみる

Android端末は様々なアプリを自由にインストールできるというメリットの弊害として、同一メーカー、もしくは同一機種であってもアプリ動作環境が全く同じとは言い切れないため、同じAndroidアプリでも同じように動作するとは限らず、その個体(Android端末)特有の問題であることも少なくありません。これは一般的なネットの書き込み情報を見ても、ある不具合が確認できる人(端末)もいれば、そうではない人もいることから、Bluetooth機能に限らず、Androidアプリ全般的な現象と言っても良さそうです。

これまでのケースでは、お客様からの「つながらない」というご報告に対し、同一機種の端末を入手し、弊社内でも接続テストを行ってみたところ、弊社内テストでは問題なく接続が確認できたというケースが大半でした。このような場合には、そのAndroid端末個体に原因があるのか、はたまたZEAL側(故障含む)に原因があるのか、原因切り分けのためにも、一度他のAndroid端末でも接続させてみることをおすすめ致します。

Android端末には個体差があります。もしつながらない場合には他のAndroid端末も試してみてください。

Android端末のWiFi機能をOFFにしてみる

過去の実例として、ZEALとのBluetooth接続が安定しない(接続できたり、できなかったりする)というご報告をいただいたお客様からの続報として、「WiFi機能をOFFにしたらBluetooth接続が安定するようになった」というケースがありました。

これは単純にAndroid端末内部の問題であると思いますが、こういった実例もありました。

一旦ペアリングを解除してみる

一度はつながっても、その内つながらなくなってしまうことがあります。この場合は上述の通り、Android端末の再起動やZEALの初期化に加え、一旦ペアリングを解除して仕切り直ししてみると再接続できることがあります。

一旦ペアリングを解除して、再度ペアリングしてみることで接続できる場合があります。その場合はZEAL側のリンクキー削除(BTKコマンド、または初期化)も忘れずに行ってください。

接続相手を間違えていないか確認してみる

これは本当に稀なケースですが、接続相手を間違えていたという単純なミスが実例としてありました。例えばZEALを複数台ご利用いただいている場合、表示される機器名称が同じなので、本来つなぎたいほうではないZEALを選択してしまうというミスも考えられます。

これは極々稀なケースですが、念のため接続相手を間違えていないかどうか、改めてご確認ください。

まとめ

  • Android端末はAndroidバージョンとAPIレベルによってBluetooth機能の仕様が異なります
  • APIレベルによってAndroidアプリ内で呼び出す接続メソッドが異なります
  • ZEALシリーズは数多くAndroid端末と接続実績がございます
  • もしAndorid端末と接続できない場合には、いくつか確認事項をお試しください

もしZEALと接続できないAndroid端末があったら?

Android端末に限らず、今後ZEALと接続ができないBluetooth機器がございましたら、原因調査致しますので当社までお問い合わせください。
ZEALとAndroid端末との接続に関するお問い合わせはこちら

カスタマーサポート担当へ
直接メールできます

堅苦しい形式不要でご用件をお気軽にお問い合わせください。

Not readable? Change text.