2022-08-03 16:28:47

by Chris Laplante

[permalink] [raw]
Subject: Connection Event Length

Hi,

Can someone tell me if the Connection Event Min and Max lengths can be set in BlueZ? I have a customer using BlueZ and their throughput is less than optimal. It looks like from their sniffer logs that there is a single PDU sent every 18.75mS connection interval. Looking at the mgmt-api.txt doc in the BlueZ-5.64 release it doesn't seem the conn event length parameters can be changed.

New Connection Parameter Event
==============================

Event Code: 0x001c
Controller Index: <controller id>
Event Parameters: Store_Hint (1 Octet)
Param {
Address (6 Octets)
Address_Type (1 Octet)
Min_Connection_Interval (2 Octets)
Max_Connection_Interval (2 Octets)
Connection_Latency (2 Octets)
Supervision_Timeout (2 Octets)
}

This event indicates a new set of connection parameters from
a peripheral device.

The Store_Hint parameter indicates whether the host is expected
to store this information persistently or not.

Possible values for the Address_Type parameter:
0 Reserved (not in use)
1 LE Public
2 LE Random

The Min_Connection_Interval, Max_Connection_Interval,
Connection_Latency and Supervision_Timeout parameters are
encoded as described in Core 4.1 spec, Vol 2, 7.7.65.3.

I am a novice BlueZ user so if for one I am not looking in the right place please point me to where I should be looking for this info. And also if it is supported please could you provide details on how it can be supported.

Thank you in advance!

Chris
THIS MESSAGE, ANY ATTACHMENT(S), AND THE INFORMATION CONTAINED HEREIN MAY BE PROPRIETARY TO LAIRD CONNECTIVITY, LLC. AND/OR ANOTHER PARTY, AND MAY FURTHER BE INTENDED TO BE KEPT CONFIDENTIAL. IF YOU ARE NOT THE INTENDED RECIPIENT, PLEASE DELETE THE EMAIL AND ANY ATTACHMENTS, AND IMMEDIATELY NOTIFY THE SENDER BY RETURN EMAIL. THIS MESSAGE AND ITS CONTENTS ARE THE PROPERTY OF LAIRD CONNECTIVITY, LLC. AND MAY NOT BE REPRODUCED OR USED WITHOUT THE EXPRESS WRITTEN CONSENT OF LAIRD CONNECTIVITY, LLC.


2022-08-03 17:07:08

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: Connection Event Length

Hi Chris,

On Wed, Aug 3, 2022 at 9:28 AM Chris Laplante
<[email protected]> wrote:
>
> Hi,
>
> Can someone tell me if the Connection Event Min and Max lengths can be set in BlueZ? I have a customer using BlueZ and their throughput is less than optimal. It looks like from their sniffer logs that there is a single PDU sent every 18.75mS connection interval. Looking at the mgmt-api.txt doc in the BlueZ-5.64 release it doesn't seem the conn event length parameters can be changed.
>
> New Connection Parameter Event
> ==============================
>
> Event Code: 0x001c
> Controller Index: <controller id>
> Event Parameters: Store_Hint (1 Octet)
> Param {
> Address (6 Octets)
> Address_Type (1 Octet)
> Min_Connection_Interval (2 Octets)
> Max_Connection_Interval (2 Octets)
> Connection_Latency (2 Octets)
> Supervision_Timeout (2 Octets)
> }
>
> This event indicates a new set of connection parameters from
> a peripheral device.
>
> The Store_Hint parameter indicates whether the host is expected
> to store this information persistently or not.
>
> Possible values for the Address_Type parameter:
> 0 Reserved (not in use)
> 1 LE Public
> 2 LE Random
>
> The Min_Connection_Interval, Max_Connection_Interval,
> Connection_Latency and Supervision_Timeout parameters are
> encoded as described in Core 4.1 spec, Vol 2, 7.7.65.3.
>
> I am a novice BlueZ user so if for one I am not looking in the right place please point me to where I should be looking for this info. And also if it is supported please could you provide details on how it can be supported.

You can set the preferred parameter via main.conf:

https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf#n202

That said if the peripheral changes these parameters it might cause
them to stored and in that case that is used instead of the global
ones, btw it looks like some peripherals have started to set very high
values for interval in order to save power, the problem is that the
central has no idea about that and will not restore to the normal
settings once there is any traffic. We might need to start handling
the likes of PPCP characteristic in order to determine exactly what is
the prefered settings and when acting as peripheral we shall set it
based on what is configured over main.conf so the central can tell
what is our preferred settings as well.

> Thank you in advance!
>
> Chris
> THIS MESSAGE, ANY ATTACHMENT(S), AND THE INFORMATION CONTAINED HEREIN MAY BE PROPRIETARY TO LAIRD CONNECTIVITY, LLC. AND/OR ANOTHER PARTY, AND MAY FURTHER BE INTENDED TO BE KEPT CONFIDENTIAL. IF YOU ARE NOT THE INTENDED RECIPIENT, PLEASE DELETE THE EMAIL AND ANY ATTACHMENTS, AND IMMEDIATELY NOTIFY THE SENDER BY RETURN EMAIL. THIS MESSAGE AND ITS CONTENTS ARE THE PROPERTY OF LAIRD CONNECTIVITY, LLC. AND MAY NOT BE REPRODUCED OR USED WITHOUT THE EXPRESS WRITTEN CONSENT OF LAIRD CONNECTIVITY, LLC.



--
Luiz Augusto von Dentz