Armadilloフォーラム

BLEのConnection Intervalのデフォルト値変更について

y.hara

2021年7月16日 12時36分

お世話になっております。
Armadillo X1標準のAEH-AR9462をBLEのセントラルとして動作させています。ここでペリフェラルとのBLEの接続時間を短縮
するためにConnection Intervalのデフォルト値を変更したいのですが可能でしょうか?
各種ブログ等から/sys/kernel/debug/bluetooth/conn_min_interval、conn_max_intervalを変更してみましたが、
Connection Iintervalの数値は変わりませんでした(BLEのSnifferで数値を確認しています)。
よろしくお願いいたします。

コメント

at_akihito.irie

2021年7月20日 10時36分

入江です。

当方で以下の環境にてテストを行いましたが、Armadillo-X1で設定した
Connection Intervalが正しく適用されているようでした。

- Armadillo-X1(セントラル)
- Armadillo-640+BT/THオプションモジュール(ペリフェラル)
- nRF52840 dongle (BLE Sniffer)
https://www.nordicsemi.com/Products/Development-hardware/nRF52840-Dongle
https://www.nordicsemi.com/Products/Development-tools/nrf-sniffer-for-b…

Connection Intervalを設定後、Armadillo-X1からArmadillo-640にConnectし、
BLE SnifferにてConnection Intervalを調べました。
結果、設定したConnection Intervalのminとmaxの値の間に収まっていました。

お客様の環境で具体的にどのような値に設定し、どのような手順で測定したか
など詳細を頂けると、何かわかるかも知れません。

以上、よろしくお願いいたします。

y.hara

2021年7月20日 14時23分

アットマークテクノ 入江様

ご確認ありがとうございます。

> 入江です。
>
> 当方で以下の環境にてテストを行いましたが、Armadillo-X1で設定した
> Connection Intervalが正しく適用されているようでした。
>
> - Armadillo-X1(セントラル)
> - Armadillo-640+BT/THオプションモジュール(ペリフェラル)
> - nRF52840 dongle (BLE Sniffer)
> https://www.nordicsemi.com/Products/Development-hardware/nRF52840-Dongle
> https://www.nordicsemi.com/Products/Development-tools/nrf-sniffer-for-b…
>
> Connection Intervalを設定後、Armadillo-X1からArmadillo-640にConnectし、
> BLE SnifferにてConnection Intervalを調べました。
> 結果、設定したConnection Intervalのminとmaxの値の間に収まっていました。
>
> お客様の環境で具体的にどのような値に設定し、どのような手順で測定したか
> など詳細を頂けると、何かわかるかも知れません。
>
> 以上、よろしくお願いいたします。
>
★Connection Intervalを30ms程度にするために、minには24、maxには30を設定しました。
 手順はArmadilloを起動後に/sys/kernel/debug/bluetooth/hci0/conn_min(max)_intervalを変更し
 ペリフェラルと接続しています。SnifferはnRF52840ベースの太陽誘電モジュール(EBSKJN)を使用して
 います。
 
 Armadillo X1を起動後とIntervalを変更時のX1接続のコンソールの内容と、それぞれのBLE接続時の
 Snifferで取得したCONNECT_INDのPDUの内容を添付いたします。
 CONNECT_INDのConnection Intervalはどちらも67.5msで変化していないようにみえます。
 
 変更できないことについて指摘を頂けると助かります。

ファイル ファイルの説明
X1_CONNECT_IND_20210720.txt Snifferで取得したInterval変更前と変更後のBLE接続時のCONNECT INDとなります。
X1コンソール_20210720.txt Armadillo接続のコンソールの内容でInterval変更前と変更後の画面です。

at_akihito.irie

2021年7月26日 9時18分

入江です。

1点確認なのですが、Armadillo-X1がConnect時にペリフェラルに対して送信す
るCONNECT_REQ内のConnection Intervalも同様に変化しない状況でしょうか。

ご確認よろしくお願いいたします。

y.hara

2021年7月26日 10時10分

アットマークテクノ 入江様
お世話になっております。

前回添付させて頂いたデータはCONNECT_INDとSniffer上で表示されていますが、
PDU Type(b3b2b1b0)=0101なので、Armadillo-X1がConnect時にペリフェラルに対して
送信するCONNECT_REQに該当いたします。Snifferの表示内容をそのまま記載したため
混乱させてしまい失礼しました。

> 入江です。
>
> 1点確認なのですが、Armadillo-X1がConnect時にペリフェラルに対して送信す
> るCONNECT_REQ内のConnection Intervalも同様に変化しない状況でしょうか。
>
> ご確認よろしくお願いいたします。
>

at_akihito.irie

2021年7月26日 11時19分

入江です。

> 前回添付させて頂いたデータはCONNECT_INDとSniffer上で表示されていますが、
> PDU Type(b3b2b1b0)=0101なので、Armadillo-X1がConnect時にペリフェラルに対して
> 送信するCONNECT_REQに該当いたします。Snifferの表示内容をそのまま記載したため
> 混乱させてしまい失礼しました。

承知しました。
つまり、Connect前にArmadillo-X1が要求するIntervalがもう設定した値になっ
ていないということですね。

またしても確認していただきたいのですが、Intervalの設定後に一度対向のデ
バイスとのペアリング情報を削除し、再度ペアリング・connectを行った上で
BLE SnifferにてIntervalの値を確認していただけますでしょうか。

// Connection Interval設定
[armadillo]# echo 24 > /sys/kernel/debug/bluetooth/hci0/conn_min_interval
[armadillo]# cat /sys/kernel/debug/bluetooth/hci0/conn_min_interval
24
[armadillo]# echo 30 > /sys/kernel/debug/bluetooth/hci0/conn_max_interval
[armadillo]# cat /sys/kernel/debug/bluetooth/hci0/conn_max_interval
30
 
// ペアリング情報を削除
[armadillo]# bluetoothctl
[bluetooth]# paired-devices //ペアリング済みのデバイス一覧を表示
Device AA:AA:AA:AA:AA:AA target // 対向機(ペリフェラル)のBDアドレス
[bluetooth]# remove AA:AA:AA:AA:AA:AA //指定したBDアドレスのデバイスを切断し、ペアリング情報を削除
: (省略)
Device has been removed
 
// 再度対象のデバイスを探す
[bluetooth]# scan on
[NEW] Device AA:AA:AA:AA:AA:AA target
[bluetooth]# scan off
[bluetooth]# pair AA:AA:AA:AA:AA:AA //ペアリング、connect

y.hara

2021年8月2日 11時14分

アットマークテクノ 入江様

平素お世話になっております。

ご教授頂いた手順でConnection Intervalを変更したところ、connect時のInterval値が30(=37.5ms)に変更できました。
/sys/kernel/debug/bluetooth/・・・・の変更が反映されるのは、パラメータの設定後に登録したリモートデバイスのみと
いうことなのですね。
お忙しいところ、いろいろ助言をしていただきありがとうございました。

> 入江です。
>
> > 前回添付させて頂いたデータはCONNECT_INDとSniffer上で表示されていますが、
> > PDU Type(b3b2b1b0)=0101なので、Armadillo-X1がConnect時にペリフェラルに対して
> > 送信するCONNECT_REQに該当いたします。Snifferの表示内容をそのまま記載したため
> > 混乱させてしまい失礼しました。
>
> 承知しました。
> つまり、Connect前にArmadillo-X1が要求するIntervalがもう設定した値になっ
> ていないということですね。
>
> またしても確認していただきたいのですが、Intervalの設定後に一度対向のデ
> バイスとのペアリング情報を削除し、再度ペアリング・connectを行った上で
> BLE SnifferにてIntervalの値を確認していただけますでしょうか。
>
>

> // Connection Interval設定
> [armadillo]# echo 24 > /sys/kernel/debug/bluetooth/hci0/conn_min_interval
> [armadillo]# cat /sys/kernel/debug/bluetooth/hci0/conn_min_interval
> 24
> [armadillo]# echo 30 > /sys/kernel/debug/bluetooth/hci0/conn_max_interval
> [armadillo]# cat /sys/kernel/debug/bluetooth/hci0/conn_max_interval
> 30
> 
> // ペアリング情報を削除
> [armadillo]# bluetoothctl
> [bluetooth]# paired-devices //ペアリング済みのデバイス一覧を表示
> Device AA:AA:AA:AA:AA:AA target // 対向機(ペリフェラル)のBDアドレス
> [bluetooth]# remove AA:AA:AA:AA:AA:AA //指定したBDアドレスのデバイスを切断し、ペアリング情報を削除
> : (省略)
> Device has been removed
> 
> // 再度対象のデバイスを探す
> [bluetooth]# scan on
> [NEW] Device AA:AA:AA:AA:AA:AA target
> [bluetooth]# scan off
> [bluetooth]# pair AA:AA:AA:AA:AA:AA //ペアリング、connect
> 

>