Android 6.0 Marsmallow BLE: Verbindungsparameter

Bluetooth Low Energy-Verbindung-Parameter-management scheint sich verändert zu haben im Android 6.

Habe ich eine BLE-Peripheriegerät, muss auf einige spezifische Verbindungsparameter (vor allem, die Verbindung Intervall), und ich möchte die minimale Anschluss-Intervall erlaubt die BLE-Spezifikation (D. H. 7,5 ms).

Dem Android SDK nicht erlauben, wählen Sie es aus der BLE-zentrale LÜCKE (auf dem smartphone) Seite, so ist der richtige Weg, es zu tun ist, um meine LÜCKE Peripheriegerät senden Sie eine L2CAP Connection Parameter Update Request nach der LÜCKE-Verbindung hergestellt ist.

Die Parameter, die ich Anfrage sind:

  • conn Intervall min : 7,5 ms
  • conn Intervall max : 7,5 ms
  • slave latency : 0
  • überwachung timeout : 2000ms

Diese wie erwartet funktioniert mit allen Android-Geräten, die ich habe testen, von 4.3 auf 5.x : nach dem senden der L2CAP Connection Parameter Update Request mein Gerät erhält eine L2CAP Connection Parameter Update Response mit 0x0000 (angenommen), gefolgt von einem LE Connection Update Complete event wo kann ich sehen, dass die angeforderten Verbindungsparameter haben, auch berücksichtigt wurden.

Nun mit einem Nexus 9 tablet oder mit 2 verschiedenen Nexus-5-Geräte, alle mit Android 6.0.1, ich kann sehen, dass die L2CAP Connection Parameter Update Request immer abgelehnt (ich erhalte eine L2CAP Connection Parameter Update Response mit 0x0001 (abgelehnt)). Dann bekomme ich einen LE Connection Update Complete event wo kann ich sehen, dass die angeforderten Verbindungsparameter wurden NICHT berücksichtigt.

Ich habe versucht dies mit 2 verschiedenen Implementierungen auf der Peripheren Seite (mit ST Microelectronics, die BlueNRG, mit Nordic Semiconductor nRF52), beide mit dem exakt gleichen Ergebnis.

Dann, nach weiteren Tests : ich habe versucht, verschiedene parameter-sets, die änderung der conn-Intervall max (ich hielt die anderen Parameter gleich sind). Hier ist was ich gefunden habe :

  • mit conn-Intervall max = 18.75 ms, update-Anfrage wurde akzeptiert mit Intervall einstellen, bis 18,75 ms
  • mit conn-Intervall max = 17.50 ms, update-Anfrage wurde akzeptiert mit Intervall eingestellt, um 15.00 ms
  • mit conn-Intervall max = 15.00 ms, update-Anfrage wurde akzeptiert mit Intervall eingestellt, um 15.00 ms
  • mit conn-Intervall max = 13.75 ms, update-Anfrage wurde akzeptiert mit Intervall festlegen zu 11,25 ms
  • mit conn-Intervall max = 11.25 ms, update-Anfrage wurde akzeptiert mit Intervall festlegen zu 11,25 ms
  • mit anderen conn Intervall max-Wert unterhalb von 11.25 ms, bekomme ich abgelehnt.

Also die Beobachtung ist, dass etwas, das sich deutlich verändert hat mit der Art, wie Android-6 - BLE-stack verarbeitet die Parameter der Verbindung. Aber es scheint nicht zu sein jede Art von information oder Dokumentation, um zu bestätigen, dass.

Meine Beobachtungen führen zum Schluss, dass die minimale Anschluss-Intervall erlaubt ist, ist jetzt 11.25 ms (was eigentlich genau meinen Anforderungen) anstelle von 7.5 ms in früheren Android-Versionen. Aber gefunden haben Sie empirisch, ich würde wollen, um sicher zu sein, dass ich nicht bin fehlen einige andere Einschränkungen/Regeln oder, wenn das minimum nicht dynamisch sein, je nachdem, zum Beispiel über den aktuellen Akkustand...

Was toll wäre, wäre äquivalent zu Apples Bluetooth-Design-Richtlinien (vgl. §3.6), um die Dinge klar auf, wie eine LE Peripheren sollte sich mit diesem Thema beschäftigen.

Ist jemand mit dem gleichen Problem oder ist bewusst, dass einige mehr hilfreiche Informationen von Google ?

InformationsquelleAutor der Frage veranith | 2016-01-05

Schreibe einen Kommentar