Armadilloフォーラム

BLEアドオンで一部BLE端末からのパケットが受信できない

koseki-k

2015年4月23日 17時31分

お世話になっております。
小関 と申します。

表題のとおり、BLEアドオンにて一部BLE端末からのパケットがどうしても受け取れなかったため、解決法をお尋ねしたく投稿させていただきました。

現在、ArmadilloIoT + BLEアドオン + iBeacon端末 の構成での運用を検討しております。

下記のBLEアドオンに関する記事を参考に、iBeacon信号の受信を試みたところ、無事成功いたしました。
https://users.atmark-techno.com/blog/46/1203
(大変参考になりました、ありがとございます)

しかしながら、複数種類のビーコンで試したところ、下記の機種ではアドバタイジングパケットが正常に表示されません。(内容の詳細は後述致します)

商品名:STICKNFIND
販売元:ベイシスイノベーション株式会社

他のBLEアプリ(iPhone用アプリのMyBeaconTool,LightBlue,その他自作のアプリ)では問題のビーコンからの情報(uuid,major,minor)を正しく受信出来ておりましたのでBLEアドオンの設定が必要かと思い、 BLEアドオンのチップセット(RN4020)のマニュアルを参考にBLEアドオンの設定値を変えてみたのですが、状況は改善しておりません。。

使い勝手(ビーコンのサイズなど)の観点から、可能であれば上記のビーコンで運用したいと考えております。
設定により正常に受信可能になる方法がございましたら、何卒ご教授いただけないでしょうか。

以下、詳細です。

-----------

内容:
- 記事(https://users.atmark-techno.com/blog/46/1203)の「アドバタイジング・パケットを受信してみる」項を実施
- ビーコン「STICKNFIND」のアドバタイジングパケットを受信して表示しようとしたところ、

F1853941F252

のように先頭のMACアドレスのみ表示されます。
他のビーコンでは、

F1853941F252,1,-4E,Brcst:4C000215FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFC5

のようにアドバタイジングパケットがすべて表示されます。

環境:
- 使用したArmadillo
- ArmadilloIoT(BLEアドオン接続)
- 調査したビーコン(3種類)
- MyBeacon(ペンダント型) [受信可能]
- BLEAD [受信可能]
- STICKNFIND
- 受信距離
- 近距離(1m程度)

————

以上、乱筆にて失礼いたしました。
何卒よろしくお願い致します。

コメント

竹之下です。

BLEアドオンモジュール(BT00)で使用しているBLEモジュールはRN4020(Microchip社)です。
RN4020のマニュアルによると、Observer role(J,1コマンドで遷移)の時にブロードキャスト
メッセージを受信すると、下記のようなメッセージを出力するようになっています。

> If the RN4020 module is in the Observer role, when a broadcast message is
> received, it will output the message to the UART. Every new message starts
> a new line with the following format:
> <48bit MAC address>,<1bit Address Type>,<8bit RSSI value>,Brcst:

Stiknfind以外のBeaconモジュールで観測されている下記メッセージがそれに相当しますね。

F1853941F252,1,-4E,Brcst:4C000215FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFC5

RN4020のマニュアルでbroadcast messageと呼んでいるのは、Bluetoothの仕様書の言葉でいうと
Advertisement packetに含まれるAD Typeが"FF"のAD Structure、すなわち Manufacturer Specific Data
のことです。

Stiknfindだけがブロードキャストメッセージを受信したときの出力が異なるというのは、
Advertisement packetにManufacturer Specific Dataを含んでいないという状況なのではないかと
推測します。(Sticknfindの中身もNordicSemiconductor社のチップになっているらしいので、
基本は同じなはずなのですが。。)

気になる点としては、sticknfindはbroadcastパケットの形式をいじれるようですが、現在はどのような
設定になっているのか?というところですね。packet snifer的なものでパケットの中身を見たり、
どのような設定になっているか確認することはできますか?

お世話になっております。
小関です。

ご返信ありがとうございます。

ご教授いただいた情報を元にパケットを確認いたしましたところ、
正常に受信するビーコンと比べて、アドバタイジングパケットのサイズが異なるようでしたので、
・StickNFindを、ただのiBeaconとして振る舞うよう設定(sBeacon機能が有効になっていたので無効化)
を実施いたしました。
結果、パケットのサイズは一致するようになりましたが、
BT00の表示は前回と同様、`Brcst:`以降表示されません。

以下、キャプチャしたアドバタイジングパケットです。
(※UUIDは加工しております)
(※MacOSでPacketLoggerを使いキャプチャ)

# (1)MyBeacon(正常に受信できる)

## パケットの内容

00000000: 3E2A 0201 0300 775E 424D 1C00 1E02 0106
00000010: 1AFF 4C00 0215 XXXX XXXX XXXX XXXX XXXX
00000020: XXXX XXXX XXXX 0003 0130 BFC1          
 
[4月 27 13:46:49.938]  [HCI EVENT]  LE Meta Event - LE Advertising Report - 0 - 00:1C:4D:42:5E:77  -63 dBm - Type 2
    LE Meta Event - LE Advertising Report - 0 - 00:1C:4D:42:5E:77  -63 dBm - Type 2
    Parameter Length: 42 (0x2A)
    LE Advertising Report
    Num_Reports: 0X01
    Event_Type: Non connectable undirected advertising (ADV_NONCONN_IND)
    Address_Type: Public Device Address
    Peer_Address: 00:1C:4D:42:5E:77
    Length_Data: 0X1E
    Flags: 0x06
    Manufacturer Specific Data: -- 
    Data: 02 01 06 1A FF 4C 00 02 15 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX 00 03 01 30 BF 
    RSSI:  -63 dBm

## BT00の出力結果

001C4D425E77,0,-49,Brcst:4C000215XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX00030130BF

# (2)StickNFind(正常に受信できない)

## パケットの内容

00000000: 3E2A 0201 0001 8F4D E9FE D8CE 1E02 0106
00000010: 1AFF 4C00 0215 XXXX XXXX XXXX XXXX XXXX
00000020: XXXX XXXX XXXX 0005 0001 B6D0          
 
[4月 27 13:46:49.624]  [HCI EVENT]  LE Meta Event - LE Advertising Report - 1 - CE:D8:FE:E9:4D:8F  -48 dBm - Type 2
   LE Meta Event - LE Advertising Report - 1 - CE:D8:FE:E9:4D:8F  -48 dBm - Type 2
   Parameter Length: 42 (0x2A)
   LE Advertising Report
   Num_Reports: 0X01
   Event_Type: Connectable undirected advertising (ADV_IND)
   Address_Type: Random Device Address
   Peer_Address: CE:D8:FE:E9:4D:8F
   Length_Data: 0X1E
   Flags: 0x06
   Manufacturer Specific Data: -- 
   Data: 02 01 06 1A FF 4C 00 02 15 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX 00 05 00 01 B6 
   RSSI:  -48 dBm

## BT00の出力結果

CED8FEE94D8F,1,-4E

以上、お手数おかけしますが、
何卒よろしくお願いいたします。

竹之下です。

ご返信が大変遅くなり、申し訳ありません。

ようやく、メーカーからのコメントが得られました。

SticknfindとMyBeaconのログを見てみますと、Event_Typeに違いがあります。
> Event_Type: Connectable undirected advertising (ADV_IND)
"Sticknfind"がADV_INDということでConnectable設定のようですので、
"MyBeacon"と同じNon connectableの設定に変更することはできますでしょうか?

ご質問からかなり時間が経過しておりますので、解決/回避策を講じられているかもしれませんが、
ご確認いただければと思います。

小関です。
ご返信ありがとうございます。

> "MyBeacon"と同じNon connectableの設定に変更することはできますでしょうか?

StickNFindの設定ツール(SNF Beacon(iPhone版))にて、`Non connectable`を変更できないか試行錯誤してみましたが、
設定項目が見当たらず、残念ながら解決には至りませんでした。

現在は当該機種の組み合わせ以外にて運用しておりますので、時間を見てまた試行錯誤してみます。

この度はご調査いただき誠にありがとうございました。

> 小関です。
> ご返信ありがとうございます。
>
> > "MyBeacon"と同じNon connectableの設定に変更することはできますでしょうか?
> StickNFindの設定ツール(SNF Beacon(iPhone版))にて、`Non connectable`を変更できないか試行錯誤してみましたが、
> 設定項目が見当たらず、残念ながら解決には至りませんでした。
>
> 現在は当該機種の組み合わせ以外にて運用しておりますので、時間を見てまた試行錯誤してみます。
>
> この度はご調査いただき誠にありがとうございました。

横から失礼します。
同じ問題を抱えていたものです。
USB接続でmbed_HRM1017を使い、PCのwindowsでは無事問題解決しました。
ただし、StickNfind本来の用途(TAGとしての紛失物確認など)以外には使わないほうが
安全のようです。
AIOT用のmbedデバイスドライバは開発検討中です。