Armadilloフォーラム

Armadiilo-IoT G3LでのBLEアクセスについて

ykawashima

2018年4月27日 18時40分

川島と申します。

Armadillo-IoT G3LにてBLE通信を行うプログラムの開発を行っています。

自社開発したBLEデバイスが1秒ごとにアドバタイズを送信しているのですが、
これが安定して受信出来ません。送信自体はAndroidのアプリ等で確認できています。

手始めにhcitool lescanとして受信してみましたが、短い時では数秒に1度受信できる物の、
長いときでは数十秒間隔になってしまいます。

また、hcitoolのソースコードからlescanに関わる部分を抜き出してテストプログラムを作成し、
intervalやwindowのパラメータを変更してみましたが、やはり長時間受信できない場合があります。

同じアドレスのアドバタイズデータがフィルタされたりしているのでしょうか?

また、BLEデバイスをスキャンしてコネクト、通信を行うプログラムの開発について調べて見ましたが、
どうにもコレだという方法にたどり着きません。どうやらbluezのデーモンに対してdbusを経由してアクセス
するようなのですが、どちらも資料に乏しく難航しています。

何かセオリーのような物はあるのでしょうか。

宜しくお願いします。

コメント

at_mizo

2018年5月8日 9時55分

溝渕です。

> 自社開発したBLEデバイスが1秒ごとにアドバタイズを送信しているのですが、
> これが安定して受信出来ません。送信自体はAndroidのアプリ等で確認できています。
>
> 手始めにhcitool lescanとして受信してみましたが、短い時では数秒に1度受信できる物の、
> 長いときでは数十秒間隔になってしまいます。

lescanをオプション無しで実行すると、重複したパケットを纏めてしまうこと
があります。この機能を無効化するには、次のように"duplicates"オプション
を付けてみてください。

root@armadillo:~# hcitool lescan --duplicates

> また、BLEデバイスをスキャンしてコネクト、通信を行うプログラムの開発について調べて見ましたが、
> どうにもコレだという方法にたどり着きません。どうやらbluezのデーモンに対してdbusを経由してアクセス
> するようなのですが、どちらも資料に乏しく難航しています。
>
> 何かセオリーのような物はあるのでしょうか。

Debian Code Search[1]で"AF_BLUETOOTH", "bt_io_"あたりを探してみました
が、BlueZのソースが一番見易そうでした。
[1]: https://codesearch.debian.net/

資料/セオリーについては、申し訳ありませんが把握していません。ただ、
"linux bluetooth プログラミング"あたりでgoogle検索すると、サンプルプロ
グラムを含んだページはいくつか見つかると思います。

ykawashima

2018年5月23日 9時32分

川島です。返信遅くなり申し訳ありません。

> Debian Code Search[1]で"AF_BLUETOOTH", "bt_io_"あたりを探してみました
> が、BlueZのソースが一番見易そうでした。
> [1]: https://codesearch.debian.net/

> 資料/セオリーについては、申し訳ありませんが把握していません。ただ、
> "linux bluetooth プログラミング"あたりでgoogle検索すると、サンプルプロ
> グラムを含んだページはいくつか見つかると思います。

有難う御座います、参考にさせて頂きます。