Re: Missing properties during pairing, refcounting bug?

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

 



Hi Bastien,

On Sat, Dec 07, 2013, Bastien Nocera wrote:
> Johan was blaming my "slow" Bluetooth adapter for the missing Class
> property when pairing was remote initiated,

I don't recall blaming your Bluetooth adapter, but simply concluding
that it seems either the local or remote side is slow in doing the name
discovery, based on the HCI log you produced. Your discovery of the
issue going away by adding delay before replying to the PIN request
seemed to support this conclusion.

> but it seems that there is another reason for the trouble. Here's an
> annotated bluetoothd log, with what my (uninformed) analysis.
> 
> I've used an old Sony Ericsson phone, as can be seen from the name in
> the logs, instead of a much harder to control "keyboard". I've also made
> sure that the phone wasn't visible so as to avoid properties being
> gathered from the discovery process.
> 
> # I select my computer for pairing on the phone
> bluetoothd[31569]: src/adapter.c:connected_callback() hci0 device 00:1E:45:AD:F1:96 connected eir_len 5
> bluetoothd[31569]: src/device.c:device_create() dst 00:1E:45:AD:F1:96
> bluetoothd[31569]: src/device.c:device_new() address 00:1E:45:AD:F1:96
> bluetoothd[31569]: src/device.c:device_new() Creating device /org/bluez/hci0/dev_00_1E_45_AD_F1_96
> bluetoothd[31569]: src/device.c:btd_device_set_temporary() temporary 1
> bluetoothd[31569]: src/adapter.c:adapter_connect_list_remove() device /org/bluez/hci0/dev_00_1E_45_AD_F1_96 is not on the list, ignoring
> ** Message: calling device_set_class in connected_callback
> bluetoothd[31569]: src/device.c:device_set_class() /org/bluez/hci0/dev_00_1E_45_AD_F1_96 0x5A0204
> ** Message: calling set_class 0x5A0204 for Bastien's K850i
> 
> # At this point, the device is connected because we're doing a SDP
> search on the connecting device
> bluetoothd[31569]: src/adapter.c:dev_disconnected() Device 00:1E:45:AD:F1:96 disconnected, reason 3
> 
> # We're done with poking at the remote device, so we disconnect
> bluetoothd[31569]: src/adapter.c:adapter_remove_connection() 
> bluetoothd[31569]: src/adapter.c:adapter_remove_connection() Removing temporary device /org/bluez/hci0/dev_00_1E_45_AD_F1_96
> bluetoothd[31569]: src/device.c:device_remove() Removing device /org/bluez/hci0/dev_00_1E_45_AD_F1_96
> bluetoothd[31569]: src/device.c:btd_device_unref() Freeing device /org/bluez/hci0/dev_00_1E_45_AD_F1_96
> 
> # We remove the device we just created?!

Yep. Device which have dev->temporary = TRUE get removed when the
connection to them is lost. The temporary flag in turn gets cleared upon
successful pairing or when we've initiated some procedure through
Device1.Connect() or Device1.Pair().

That said, I think it would make sense to apply the same policy on
remotely initiated connections as we do for devices we've discovered but
not yet connected to. In other words, I think we should have the same 3
minute timer for this kind of device objects and only remove them if
pairing didn't happen by that time. Does it sound like it might solve
the issue?

Johan
--
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