AndroidのBLE機能対応状況調査(Coded PHY/ペアリング編)
こんにちは、ムセンコネクトCMOの清水です。(プロフィール紹介はこちら)
今回はAndroidスマホのBLE動作に関するお話です。
AndroidスマホのBLE機能はカタログスペック通りに動作するとは限らない
BluetoothモジュールとスマートフォンをBLE通信をさせるときに、ちょっと頭を悩ませるのがAndroidスマホとの対応です。
iPhone/iOSとは異なり、Androidスマホは各メーカーがOSを独自にカスタマイズしており、加えてハードウェアの仕様やスペックも多種多様です。よって「BLE通信」の動作ひとつとっても各機種ごとに挙動は異なり、Androidバージョンが対応していても、Bluetoothバージョンが対応していても、実際に動かしてみたら「通信できない」といったケースも少なくありません。日本にAndroidスマホが登場した頃からBLE通信を試みている経験から言うと、「実際に動作確認してみなければ、その機能に対応しているとは言い切れない」のがAndroidスマホなのです。
AndroidスマホのCoded PHY/ペアリングの対応状況を調べてみました
今回はあるお客さまからAndroidアプリ開発のご相談をいただき、その中で「LE Coded PHY」と「ペアリング機能」を使いたいというご要望がありました。前述のように、対Androidの場合は実際に試してみるまで「対応できます」と言い切れないため、まずは数種類のAndroidスマホを入手して実際に動作確認をしてみることにしました。本記事ではその調査結果をご紹介しますので、開発時の参考情報としてご活用ください。
なお、これからお伝えする本記事の内容は2022年2月現在の調査結果であり、今後OSのバージョンアップや各端末のファームウェアアップデートによって挙動が変わる可能性もあります。
調査環境
今回調査の対象として用いたAndroidスマートフォンは下記の6機種です。
- Google Pixel 5
- Galaxy S10
- OPPO Reno5 A
- Xiaomi 11T
- Xperia Ace Ⅱ
- AQUOS sense6
LINBLE-LR1のユーザー様より、下記機種のLE Coded PHY接続可否情報をご提供いただきましたので、検証結果に追記いたしました。
- Galaxy Fold
- Galaxy S21
- Galaxy S21+
- OPPO A54 5G
- OPPO Reno 7A
- OPPO Find X2 Pro
- OPPO Find X3 Pro
- Mi 10 Lite 5G
- Redmi Note 10 JE
- Pixel 6 Pro
- AQUOS R5G
調査に使用したAndroidアプリは「nRF Connect for Mobile」、調査に使用したペリフェラルデバイスは「LINBLE-LR1(Coded PHYモード)」です。
LE Coded PHY
Bluetoothのバージョン5.0から採用された長距離通信機能(LE Coded PHY)は、ソフトウェアとハードウェアの両方がLE Coded PHYに対応している必要があります。つまり、Bluetooth 5.xだからと言って必ずLE Coded PHYが利用できるわけではありません。
当然、Androidスマートフォンの場合もBluetoothバージョンだけではなく、スマートフォン本体(ハードウェア)が対応していなくてはなりませんが、それをカタログスペックやマニュアルから判断するのは難しいケースがほとんどです。まさにLE Coded PHYは「実際に動作確認してみないと対応しているかわからない機能」の一つと言えます。
検証結果
実際の検証結果は表1の通りです。
デバイス | 結果 |
---|---|
Google Pixel 5 | NG |
Galaxy S10 | OK |
OPPO Reno5 A | OK |
Xiaomi 11T | NG |
Xperia Ace Ⅱ | NG |
AQUOS sense6 | NG |
- OPPO Reno5 A, Galaxy S10の2機種はLE Coded PHYでの正常動作が確認できました。
(検証方法:LE Coded PHYで接続後、Notification送信まで成功) - 残りの4機種はLE Coded PHYのアドバタイズを受信できず、BLE接続ができませんでした。
- この内、Google Pixel 5, Xiaomi 11T, Xperia ACE ⅡはnRF Connectで「LE Coded PHY対応」と表示されたにも関わらず、実際の動作はNGとなりました(AQUOS sense6はnRF Conncectでも非対応表示)。
- このようにAndroidでは「一見、対応しているように見えるが、実際に動かしてみるとダメ」というパターンがあることがわかります。
LINBLE-LR1のユーザー様より、下記機種のLE Coded PHY接続可否情報をご提供いただきました。
デバイス | 結果 |
---|---|
Galaxy Fold | OK |
Galaxy S21 | OK |
Galaxy S21+ | OK |
OPPO A54 5G | OK |
OPPO Reno 7A | OK |
OPPO Find X2 Pro | OK |
OPPO Find X3 Pro | OK |
Mi 10 Lite 5G | OK |
Redmi Note 10 JE | OK |
Pixel 6 Pro | NG |
AQUOS R5G | NG |
- Galaxy Fold, Galaxy S21, Galaxy S21+, OPPO A54 5G, OPPO Reno 7A, OPPO Find X2 Pro, OPPO Find X3 Pro, Mi 10 Lite 5G, Redmi Note 10 JEの9機種はLE Coded PHYでの正常動作が確認できました。
(検証方法:LE Coded PHYで接続後、Notification送信まで成功) - Pixel 6 Pro, AQUOS R5GはLE Coded PHYのアドバタイズを受信できず、BLE接続ができませんでした。
- この内、Google Pixel 6 ProはnRF Connectで「LE Coded PHY対応」と表示されたにも関わらず、実際の動作はNGとなりました(AQUOS R5GはnRF Conncectでも非対応表示)。
- 2022年2月の検証結果と見比べると、LE Coded PHYに対応しているメーカー、対応していないメーカーが同じであることがわかります。メーカーによってLE Coded PHYへの対応スタンスが異なるようです。
ペアリング(LESC-Passkey)
次に、ペアリング動作(LESC-Passkey)の検証結果です。
なお、LESC-Passkeyの解説など、ペアリング機能の基礎については下記の記事で解説しています。
検証結果
実際の検証結果は表2の通りです。
デバイス | 結果 |
---|---|
Google Pixel 5 | OK |
Galaxy S10 | OK |
OPPO Reno5 A | OK |
Xiaomi 11T | OK |
Xperia Ace Ⅱ | OK |
AQUOS sense6 | OK |
調査した6機種全てでペアリングの正常動作が確認できました。
(検証方法:1M PHYで接続後、LESC-Passkeyによるペアリングに成功。さらに、LINBLEからスマホへのNotification送信が成功。)
ペアリングに関してはLE Coded PHYとは異なり、ハードウェアの制約がないため、ある程度カタログスペックで対応可否を判断することができます。
しかしながら、「ペアリング機能」はいわゆる「Bluetoothの相性問題」が起きやすい部分であり、実際に接続させてみたらうまく繋がらなかったというケースもあります。
過去にお客さまが遭遇したトラブルとして、製品リリース後に「動作未確認だった複数機種」との接続不良が続出してしまった事例がありました。お客さまでは不具合の原因がわからず、調査依頼を受けたわたしたちが解析してみた結果、ペアリング機能が接続不良の原因だったケースもありました。その実例から学んだことは、「Androidの場合はカタログスペックだけの判断で対応機種を決めてはいけない」ということです。
先の実例では製品レビューが荒れるなどの大トラブルに発展してしまいました。今回の検証では全ての機種で正常動作が確認できましたが、必ずしもそうなるとは限りませんので、該当端末での事前調査は必須であると考えています。
まとめ
- 2022年2月現在、LE Coded PHYに対応しているAndroidスマートフォンは一部の機種に限られている。
- ペアリング機能(LESC-Passkey)については、試した6機種全てで正常動作が確認できた。
- Androidスマートフォンにおける「BLE機能」は、機種ごとにその対応可否が異なる。加えて、AndroidやBluetoothの標準仕様とは異なる挙動を示す場合もあるため、カタログスペックだけで判断はせず、実際に各端末を用いて動作確認してみることが肝要である。
AndroidスマートフォンのBLE通信についてお困りのことがございましたら、お気軽にムセンコネクトまでご相談ください。