Armadilloフォーラム

StickNFind

zs-nakanishi

2015年8月27日 11時20分

以前、BLEのことでお世話になって中西です。

StickNFindで過去投稿された方がいたので、その追っかけ検証です。
StickNFindがAIOT(Armadillo-IoT)で受信できないのは、AdvertiseTypeがCONNECTABLEになっているからで、BT00のRN4020で受信開始すると一回だけMAC(random)とRSSIだけが受信できて、packet内にはまだUUID、MAJOR,MINORがあるにもかかわらず表示できません。
iPhoneアプリにiBeacon Scannerというものがあり、この中でVirtual iBeaconという機能があり、CONNECTABLEなpacketを送信できます。
AIOTではStickNFindと同様全部受信できないので、mbed_HRM1017を使い、そのBLE_observerというsourceを修正し、RSSI以降も表示できるようにします。

AIOTで受信可能なpacket(Braveridge BVMCN1001)
Adv peerAddr: [xx xx xx xx xx xx] rssi -79, ScanResp: 0, AdvType: 3
02 01 04 1a ff 4c 00 02 15 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx 03 e8 00 03 c5

#MACとUUIDはxxで伏せています。

AIOT受信不完全なpacket(iPhone iBeacon Scanner:virtual iBeacon )
Adv peerAddr: [7f 02 80 71 8a 54] rssi -62, ScanResp: 0, AdvType: 0
02 01 1a 1a ff 4c 00 02 15 95 f4 28 b1 4a 3a 4e 39 b0 86 21 bf f3 8d eb 6d 01 b8 02 ba c7

AdvTypeが0であるとconnectableになり、AIOTのRN4020では受信できないことがそのDataSheet(P39)に下記のように
書いてあります。

J,<0,1>
Description
This command places the device into or out of an observer role.
If the input parameter is ‘1’, the RN4020 module enters Observer mode. After issuing
the “F” command, the RN4020 module is able to receive undirected, unconnectable
advertisements from broadcasters. If the input parameter is ‘0’, the RN4020 module
exits Observer mode.

つまりRN4020を使う限り、iBeaconとして販売されている一部のものは受信できないわけです。
RN4020のFWを書き換えれば、可能になる気もしますが、方針として下記理由からconnectableなBLEは
使用しないほうがいいような気がします。
1.connectableだと、容易にconnectできて、UUID、MAJOR,MINORなど書き換えられる可能性がある。
 (注:BraveridgeのBLEも書き換えは可能ですが、わざわざ基板を取出し、内部SWを操作してconnectable
    モードにしてからの設定になります。最終的にケースを密閉構造にすれば基板は容易には取り出せないので
    こういうハッキングも難しくなります。何もさわらずにできるStickNFindよりはずっと安全です。)
2.受信状態になることが多く電池の消費が大きい。

Atmark社としての見解はいかがでしょうか?

コメント

竹之下です。

検証ありがとうございます。

> つまりRN4020を使う限り、iBeaconとして販売されている一部のものは受信できないわけです。
そうですね。Microchip社にも確認してみましたところ、「Beaconの方をNon connectableにして試してくれ」と
言われてはぐらかされてしまいました。。

> RN4020のFWを書き換えれば、可能になる気もしますが、方針として下記理由からconnectableなBLEは
> 使用しないほうがいいような気がします。
ご指摘の通りだと思います。

ただ、StickNFindは元々忘れ物防止のためのモノですので、スマホとペアリングをして
音を鳴らすといった使い方も想定されているようです(Beaconというよりは
タグに近い)。そのような用途で使いたい場合には、connectableである必要が
あるのでしょう。

そのようなBLEタグをArmadillo-IoTで扱いたい場合には、現状は
アドオンモジュールBT00ではなく、USB接続のBluetooth ドングルを
使う必要があります。