Re: Unable to connect to Bluetooth LE devices with long advertising times

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Luiz,

El lun, 10 ene 2022 a las 23:07, Luiz Augusto von Dentz
(<luiz.dentz@xxxxxxxxx>) escribió:
>
> Hi Sergio,
>
> On Mon, Jan 10, 2022 at 10:31 AM Sergio Conde Gómez <skgsergio@xxxxxxxxx> wrote:
> >
> > Hello,
> >
> > I'm on kernel version 5.15.13 (shipped by Arch Linux) with bluez 5.63
> > and I'm unable to connect to Bluetooth LE devices with 5s, 7,5s, 10s
> > advertising times. As for hardware, I have a PCIe card with an Intel
> > AC9260 (WiFi + BT combo)[1].
> >
> > I've been doing some research together with an open-source firmware
> > developer and some other users for one of the devices, and we found
> > references of Linux's HCI_LE_AUTOCONN_TIMEOUT
> > (include/net/bluetooth/hci.h) being too low[2].
>
> This used to be even shorted (2s) and has been bumped to 4s, so I do
> wonder if we need to allow the full range, that said userspace can set
> its own timeout nowadays:
>
> https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf#n199

Completely missed it, thanks! What I've discovered after sending my
mail is that I could change it using btmgmt (btmgmt set-sysconfig -v
001b:2:e02e), but having this in the config file is far more
convenient as it persists.

> > Apparently, the Bluetooth Core Specification allows the advertising to
> > be from 20ms to 10,485s in multiples of 0.625ms (Vol. 6, Part B,
> > 4.4.2.2.1, page 2749 of the Core Specification 5.3), and Linux's
> > HCI_LE_AUTOCONN_TIMEOUT is set to 4s.
> >
> > I've recompiled the kernel package on my machine raising it to 20s (no
> > scientific reason for this number other than being
> > HCI_LE_CONN_TIMEOUT) and I could connect to them (with the device with
> > 10s advertising time was not successful every time but at least I
> > could connect). I retested changing the value again to 12s (to cover
> > the 10,485s, plus some extra with no scientific reasons) and I got
> > more or less the same results as with the 20s (but was quick testing
> > this morning, not as in deep as with the 20s).
> >
> > The connection procedure was just running "bluetoothctl", "scan on",
> > and when the device is first seen then "connect DEVICE_MAC".
>
> Have you tried doing a #scan off before #connect <bdaddr>? I wonder if
> the device is busy discovering, that said bumping to the maximum
> window as default sounds like a good idea. @Marcel Holtmann any
> thoughts?

Yes, but even stopping the scan without the timeout increased I can't
connect to devices with advertisement intervals of 7,5s or 10s.

What I'm not sure about is if when I had transient issues connecting
to the 10s device with the timeout increased I was stopping the scan
or not, I guess I can test now easily.

> > Now, I'm no expert in Bluetooth, BLE, or Linux Kernel, so I might be
> > doing it wrong or misunderstanding something, but changing the value
> > made it work. If this timeout is what is making us unable to connect
> > to these devices, what's the reason for this low timeout outside the
> > spec? Would be possible to fix it by not changing the devices to a
> > shorter advertisement time (which impacts battery life)?
> >
> > Regards,
> > Sergio Conde.
> >
> > [1]: https://www.intel.com/content/www/us/en/products/sku/99445/intel-wirelessac-9260/specifications.html
> > [2]: Full discussion https://github.com/pvvx/ATC_MiThermometer/issues/172
>
>
>
> --
> Luiz Augusto von Dentz

-- 
Sergio Conde




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux