2009-06-17 12:03:44

by Andrei Emeltchenko

[permalink] [raw]
Subject: Double SSP paring error or feature?

Hi,

We have error with SSP paring. Originally we could not connect some
devices and the problem was reproduced on my PC with 2 USB Bluetooth
adapters.

bluez asks user paring confirmation 2 times.

Test:

hci1: Type: USB
BD Address: 00:02:72:16:4E:D5 ACL MTU: 1021:8 SCO MTU: 64:1
UP RUNNING PSCAN
RX bytes:12122 acl:78 sco:0 events:449 errors:0
TX bytes:22547 acl:82 sco:0 commands:294 errors:0

hci2: Type: USB
BD Address: 00:02:72:16:19:39 ACL MTU: 1021:8 SCO MTU: 64:1
UP RUNNING PSCAN
RX bytes:12593 acl:82 sco:0 events:475 errors:0
TX bytes:28404 acl:78 sco:0 commands:329 errors:0


hci1:
sudo ./l2test -i hci1 -r -E -S # server

hci2:
sudo ./l2test -i hci2 -n 00:02:72:16:4E:D5 -b 10 -N 1 -E -S -s # client

./simple-agent hci1
Agent registered
RequestConfirmation (/org/bluez/6255/hci1/dev_00_02_72_16_19_39, 533464)
Confirm passkey (yes/no): yes
RequestConfirmation (/org/bluez/6255/hci1/dev_00_02_72_16_19_39, 152200)
Confirm passkey (yes/no): yes


./simple-agent hci2
Agent registered
RequestConfirmation (/org/bluez/6255/hci2/dev_00_02_72_16_4E_D5, 533464)
Confirm passkey (yes/no): yes
RequestConfirmation (/org/bluez/6255/hci2/dev_00_02_72_16_4E_D5, 152200)
Confirm passkey (yes/no): yes

For the single connection passkey is asked 2 times.

The reason looks to be because bluetoothd does not store link keys
since ioctl HCIGETAUTHINFO returns 0.
Kernel in function hci_get_auth_info returns "conn->auth_type" which
is 0 at this stage. As I understood
"auth_type" initialized later when "l2cap_connect_req" comes in
"l2cap_check_security".

What is the best way to solv this? In kernel or in user-space? Is it an error?

Regards,
Andrei