Re: Is there a way to force legacy LE pairing for a device

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

 



Hi Jacek,

On Mon, Nov 1, 2021 at 10:26 AM Jacek Konieczny <jajcus@xxxxxxxxxx> wrote:
>
> Hi,
>
> I have a problem connecting to a BT device from a Linux desktop –
> pairing fails, while an Android phone pairs properly.
>
> The obvious difference in the btsnoop logs is in the pairing request.
>
> Android:
> < ACL Data TX: Handle 65 flags 0x00 dlen 11
>
>
> #995 150.491086
>       SMP: Pairing Request (0x01) len 6
>         IO capability: KeyboardDisplay (0x04)
>         OOB data: Authentication data not present (0x00)
>         Authentication requirement: Bonding, MITM, Legacy, No Keypresses
> (0x05)
>         Max encryption key size: 16
>         Initiator key distribution: EncKey IdKey Sign (0x07)
>         Responder key distribution: EncKey IdKey Sign (0x07)
> [...]
> > ACL Data RX: Handle 65 flags 0x02 dlen 11
>
>
> #1006 150.571137
>       SMP: Pairing Response (0x02) len 6
>         IO capability: NoInputNoOutput (0x03)
>         OOB data: Authentication data not present (0x00)
>         Authentication requirement: Bonding, No MITM, Legacy, No
> Keypresses (0x01)
>         Max encryption key size: 16
>         Initiator key distribution: EncKey (0x01)
>         Responder key distribution: EncKey (0x01)
>
>
> And on Linux:
> < ACL Data TX: Handle 16 flags 0x00 dlen 11               #53 [hci0]
> 132.273100
>       SMP: Pairing Request (0x01) len 6
>         IO capability: NoInputNoOutput (0x03)
>         OOB data: Authentication data not present (0x00)
>         Authentication requirement: Bonding, No MITM, SC, No Keypresses,
> CT2 (0x29)
>         Max encryption key size: 16
>         Initiator key distribution: EncKey Sign LinkKey (0x0d)
>         Responder key distribution: EncKey IdKey Sign LinkKey (0x0f)
> [...]
> > ACL Data RX: Handle 16 flags 0x02 dlen 6                #57 [hci0]
> 132.362160
>       SMP: Pairing Failed (0x05) len 1
>         Reason: Invalid parameters (0x0a)
>
>
>
> So it looks like 'Bonding, MITM, Legacy, No Keypresses' used by Android
> works and 'Bonding, No MITM, SC, No Keypresses, CT2' used by the desktop
> Linux (bluez 5.62, kernel '5.6.2-050602-lowlatency' from Ubuntu) does
> not (note: I am still quite ignorant about Bluetooth stuff).

What android version are we talking about here?

> So my question is: is there any way to force using legacy pairing? Even
> if that requires bluez or kernel patching (though, I would rather avoid
> that).

So Invalid Parameter is normally used when the stack doesn't
understand something in the request:

'x0A Invalid Parameters The Invalid Parameters error code indicates
that the command length is invalid or that a
parameter is outside of the specified range.'

>From the looks of it Android doesn't set SC nor CT2, which were bits
introduced after 4.0, so perhaps with this version of Android we
cannot use one of these bits (CT2 most likely).

>
> Greets,
> Jacek



-- 
Luiz Augusto von Dentz




[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