Re: Determining whether a Bluetooth device supports pairing

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

 



Hi John,

>>> Am I missing some method for determining whether or not a device
>>> supports pairing?  Or do we need to handle SMP_PAIRING_NOTSUPP
>>> specially?
>> 
>> I do not remember any indication from the Bluetooth Core specification
>> that would tell you in advance if you support pairing or not. Mainly
>> since most devices actually just support pairing. Can you show us the
>> btmon trace output of the advertising reports.
> 
> Here's the advertising report and scan response:
> 
> -- >8 --
>> HCI Event: LE Meta Event (0x3e) plen 33
>      LE Advertising Report (0x02)
>        Num reports: 1
>        Event type: Connectable undirected - ADV_IND (0x00)
>        Address type: Public (0x00)
>        Address: A0:E6:F8:4A:AE:AD (Texas Instruments)
>        Data length: 21
>        Flags: 0x06
>          LE General Discoverable Mode
>          BR/EDR Not Supported
>        128-bit Service UUIDs (complete): 1 entry
>          Vendor specific (03b80e5a-ede8-4b33-a751-6ce34ec4c700)
>        RSSI: -66 dBm (0xbe)
>> HCI Event: LE Meta Event (0x3e) plen 42
>      LE Advertising Report (0x02)
>        Num reports: 1
>        Event type: Scan response - SCAN_RSP (0x04)
>        Address type: Public (0x00)
>        Address: A0:E6:F8:4A:AE:AD (Texas Instruments)
>        Data length: 30
>        Name (complete): Akai LPK25 Wireless
>        Slave Conn. Interval: 0x000a - 0x0014
>        TX power: 0 dBm
>        RSSI: -67 dBm (0xbd)
> -- 8< --

so there is nothing that tells us that pairing is not support. Except the UI could use the Vendor specific UUID to decide to do special handling of this device.

>> One thing that I can think of is that Pair Device should return a
>> reasonable error code so that bluetoothd can detect non-supported
>> pairing and treat it as non-bonded device. Best would be a full btmon
>> -w trace.log trace with a recent kernel that also monitors mgmt
>> commands and events.
> 
> I've attached the full trace, but I think this is the interesting
> section:
> 
> -- >8 --
> @ MGMT Command: Pair Device (0x0019) plen 8
>        LE Address: A0:E6:F8:4A:AE:AD (Texas Instruments)
>        Capability: KeyboardDisplay (0x04)
> < ACL Data TX: Handle 3585 flags 0x00 dlen 11
>      SMP: Pairing Request (0x01) len 6
>        IO capability: KeyboardDisplay (0x04)
>        OOB data: Authentication data not present (0x00)
>        Authentication requirement: Bonding, MITM, SC, No Keypresses, CT2 (0x2d)
>        Max encryption key size: 16
>        Initiator key distribution: EncKey Sign LinkKey (0x0d)
>        Responder key distribution: EncKey IdKey Sign LinkKey (0x0f)
>> HCI Event: Number of Completed Packets (0x13) plen 5
>        Num handles: 1
>        Handle: 3585
>        Count: 1
>> ACL Data RX: Handle 3585 flags 0x02 dlen 6
>      SMP: Pairing Failed (0x05) len 1
>        Reason: Pairing not supported (0x05)
> @ MGMT Event: Authentication Failed (0x0011) plen 8
>        LE Address: A0:E6:F8:4A:AE:AD (Texas Instruments)
>        Status: Authentication Failed (0x05)
> @ MGMT Event: Command Complete (0x0001) plen 10
>      Pair Device (0x0019) plen 7
>        Status: Authentication Failed (0x05)
>        LE Address: A0:E6:F8:4A:AE:AD (Texas Instruments)

So I think we should return a proper error code that indicates that Pairing is not supported here. That way then bluetoothd can decide to handle this gracefully. Frankly I have not seen a device that doesn't support pairing in a long time. Also we should add proper mgmt-tester test cases for pairing not supported cases.

Regards

Marcel


--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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