From: Andrejs Hanins <andrejs.hanins@ubnt.com>
To: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
Cc: Lukasz Rymanowski <lukasz.rymanowski@gmail.com>,
Arman Uguray <armansito@chromium.org>,
"linux-bluetooth@vger.kernel.org"
<linux-bluetooth@vger.kernel.org>,
Marcin Kraglak <marcin.kraglak@tieto.com>,
Szymon Janc <szymon.janc@tieto.com>
Subject: Re: Non-consecutive handle values in GATT
Date: Tue, 17 Mar 2015 15:33:44 +0200 [thread overview]
Message-ID: <55082D38.4020306@ubnt.com> (raw)
In-Reply-To: <CABBYNZJK7SVUbThK_wfVFa2NvxK5NiFJ4HRA-FK3Pmo9+peYZw@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 3686 bytes --]
Hi Luiz,
On 2015.03.17. 15:07, Luiz Augusto von Dentz wrote:
> Hi Andrejs,
>
>
>>>>> ACL data: handle 64 flags 0x02 dlen 20
>>>> ATT: Read By Type resp (0x09)
>>>> length: 7
>>>> handle 0x0110, value 0x02 0x11 0x01 0x00 0x2a
>>>> handle 0x0120, value 0x02 0x21 0x01 0x01 0x2a
>>>> < ACL data: handle 64 flags 0x00 dlen 11
>>>> ATT: Read By Type req (0x08)
>>>> start 0x0121, end 0x0121
>>>> type-uuid 0x2803 <--- as without patch, this seems to be suspicious. Single att read request with wrong UUID.
>>>
>>> Maybe this is off by 1 error except if start 0x0100, end 0x0121 range
>>> actually exclude the last, but it would be still wrong the start
>>> 0x0121, end 0x0121, anyway this seems to be some other problem.
>
> Actually this is fine, we are discovering the characteristics since
> they may not fit in a single frame we just continue from where we stop
> at 0x0121 until the end of the service range with just happen to be
> 0x0121.
>
>>>
>>>>
>>>>
>>>>> HCI Event: Number of Completed Packets (0x13) plen 5
>>>> handle 64 packets 2
>>>>> ACL data: handle 64 flags 0x02 dlen 9
>>>> ATT: Error (0x01)
>>>> Error: Attribute not found (10)
>>>> Read By Type req (0x08) on handle 0x0121
>>>> < ACL data: handle 64 flags 0x00 dlen 9
>>>> ATT: Find Information req (0x04)
>>>> start 0x0112, end 0x011f
>>>>> ACL data: handle 64 flags 0x02 dlen 9
>>>> ATT: Error (0x01)
>>>> Error: Attribute not found (10)
>>>> Find Information req (0x04) on handle 0x0112
>>>> < ACL data: handle 64 flags 0x00 dlen 11
>>>> ATT: Read By Type req (0x08)
>>>> start 0x0300, end 0x0320
>>>> type-uuid 0x2803
>>>>> HCI Event: Number of Completed Packets (0x13) plen 5
>>>> handle 64 packets 1
>>>>> ACL data: handle 64 flags 0x02 dlen 27
>>>> ATT: Read By Type resp (0x09)
>>>> length: 21
>>>> handle 0x0310, value 0x3e 0x11 0x03 0x34 0x5b 0xe2 0x12 0x5e 0xb1 0x45 0x03 0xb6 0x29 0x24 0x55 0x8a 0x11 0x1e 0x36
>>>> < ACL data: handle 64 flags 0x00 dlen 11
>>>> ATT: Read By Type req (0x08)
>>>> start 0x0311, end 0x0320
>>>> type-uuid 0x2803
>>>>> HCI Event: Number of Completed Packets (0x13) plen 5
>>>> handle 64 packets 2
>>>>> ACL data: handle 64 flags 0x02 dlen 9
>>>> ATT: Error (0x01)
>>>> Error: Attribute not found (10)
>>>> Read By Type req (0x08) on handle 0x0311
>>>
>>> Can you collect the trace in binary format, e.g. btmon -w <file>, I
>>> can perhaps try to create the very same database for unit tests, also
>>> it would be good to have bluetoothd traces.
>> Traces attached.
>
> Can you please enable bt_gatt_client debug with the following patch:
>
> diff --git a/src/device.c b/src/device.c
> index aaa9f43..6a23adc 100644
> --- a/src/device.c
> +++ b/src/device.c
> @@ -3989,6 +3989,11 @@ static void
> gatt_client_service_changed(uint16_t start_handle,
> DBG("start 0x%04x, end: 0x%04x", start_handle, end_handle);
> }
>
> +static void gatt_debug(const char *str, void *user_data)
> +{
> + DBG("%s", str);
> +}
> +
> static void gatt_client_init(struct btd_device *device)
> {
> gatt_client_cleanup(device);
> @@ -4000,6 +4005,8 @@ static void gatt_client_init(struct btd_device *device)
> return;
> }
>
> + bt_gatt_client_set_debug(device->client, gatt_debug, NULL, NULL);
> +
> /* Notify attio so it can react to notifications */
> g_slist_foreach(device->attios, attio_connected, device->attrib);
>
>
See attachments. Fresh dumps from both btmon and daemon. With your patch "shared/gatt-client: Fix handling of services" applied.
[-- Attachment #2: noncons_handles.dump --]
[-- Type: application/octet-stream, Size: 4631 bytes --]
[-- Attachment #3: bluez.log --]
[-- Type: text/x-log, Size: 12545 bytes --]
bluetoothd[12005]: Bluetooth daemon 5.29
bluetoothd[12005]: src/main.c:parse_config() parsing main.conf
bluetoothd[12005]: src/main.c:parse_config() Key file does not have key 'DiscoverableTimeout'
bluetoothd[12005]: src/main.c:parse_config() Key file does not have key 'PairableTimeout'
bluetoothd[12005]: src/main.c:parse_config() Key file does not have key 'AutoConnectTimeout'
bluetoothd[12005]: src/main.c:parse_config() Key file does not have key 'Name'
bluetoothd[12005]: src/main.c:parse_config() Key file does not have key 'Class'
bluetoothd[12005]: src/main.c:parse_config() Key file does not have key 'DeviceID'
bluetoothd[12005]: src/main.c:parse_config() Key file does not have key 'ReverseServiceDiscovery'
bluetoothd[12005]: src/main.c:parse_config() ControllerMode=le
bluetoothd[12005]: src/adapter.c:adapter_init() sending read version command
bluetoothd[12005]: Starting SDP server
bluetoothd[12005]: src/sdpd-service.c:register_device_id() Adding device id record for 0002:1d6b:0246:051d
bluetoothd[12005]: src/plugin.c:plugin_init() Loading builtin plugins
bluetoothd[12005]: src/plugin.c:add_plugin() Loading hostname plugin
bluetoothd[12005]: Ignoring (cli) wiimote
bluetoothd[12005]: Ignoring (cli) autopair
bluetoothd[12005]: Ignoring (cli) policy
bluetoothd[12005]: Ignoring (cli) gatt_example
bluetoothd[12005]: Ignoring (cli) neard
bluetoothd[12005]: Ignoring (cli) sap
bluetoothd[12005]: Ignoring (cli) a2dp
bluetoothd[12005]: Ignoring (cli) avrcp
bluetoothd[12005]: Ignoring (cli) network
bluetoothd[12005]: Ignoring (cli) input
bluetoothd[12005]: Ignoring (cli) hog
bluetoothd[12005]: Ignoring (cli) health
bluetoothd[12005]: Ignoring (cli) gap
bluetoothd[12005]: Ignoring (cli) scanparam
bluetoothd[12005]: Ignoring (cli) deviceinfo
bluetoothd[12005]: Ignoring (cli) alert
bluetoothd[12005]: Ignoring (cli) time
bluetoothd[12005]: Ignoring (cli) proximity
bluetoothd[12005]: Ignoring (cli) thermometer
bluetoothd[12005]: Ignoring (cli) heartrate
bluetoothd[12005]: Ignoring (cli) cyclingspeed
bluetoothd[12005]: src/plugin.c:plugin_init() Loading plugins /home/andrey/git/bluez/plugins/.libs
bluetoothd[12005]: Ignoring (cli) external_dummy
bluetoothd[12005]: src/main.c:main() Entering main loop
bluetoothd[12005]: src/rfkill.c:rfkill_event() RFKILL event idx 2 type 2 op 0 soft 0 hard 0
bluetoothd[12005]: Bluetooth management interface 1.8 initialized
bluetoothd[12005]: src/adapter.c:read_version_complete() sending read supported commands command
bluetoothd[12005]: src/adapter.c:read_version_complete() sending read index list command
bluetoothd[12005]: src/adapter.c:read_commands_complete() Number of commands: 56
bluetoothd[12005]: src/adapter.c:read_commands_complete() Number of events: 29
bluetoothd[12005]: src/adapter.c:read_commands_complete() enabling kernel-side connection control
bluetoothd[12005]: src/adapter.c:read_index_list_complete() Number of controllers: 1
bluetoothd[12005]: src/adapter.c:read_index_list_complete() Found index 0
bluetoothd[12005]: src/adapter.c:index_added() index 0
bluetoothd[12005]: src/adapter.c:btd_adapter_new() System name: BlueZ 5.29
bluetoothd[12005]: src/adapter.c:btd_adapter_new() Major class: 0
bluetoothd[12005]: src/adapter.c:btd_adapter_new() Minor class: 0
bluetoothd[12005]: src/adapter.c:btd_adapter_new() Modalias: usb:v1D6Bp0246d051D
bluetoothd[12005]: src/adapter.c:btd_adapter_new() Discoverable timeout: 180 seconds
bluetoothd[12005]: src/adapter.c:btd_adapter_new() Pairable timeout: 0 seconds
bluetoothd[12005]: src/adapter.c:index_added() sending read info command for index 0
bluetoothd[12005]: src/adapter.c:read_info_complete() index 0 status 0x00
bluetoothd[12005]: src/adapter.c:clear_uuids() sending clear uuids command for index 0
bluetoothd[12005]: src/adapter.c:clear_devices() sending clear devices command for index 0
bluetoothd[12005]: src/gatt-database.c:btd_gatt_database_new() GATT Manager registered for adapter: /org/bluez/hci0
bluetoothd[12005]: src/adapter.c:adapter_service_add() /org/bluez/hci0
bluetoothd[12005]: src/sdpd-service.c:add_record_to_server() Adding record with handle 0x10001
bluetoothd[12005]: src/sdpd-service.c:add_record_to_server() Record pattern UUID 00000007-0000-1000-8000-00805f9
bluetoothd[12005]: src/sdpd-service.c:add_record_to_server() Record pattern UUID 00000100-0000-1000-8000-00805f9
bluetoothd[12005]: src/sdpd-service.c:add_record_to_server() Record pattern UUID 00001002-0000-1000-8000-00805f9
bluetoothd[12005]: src/sdpd-service.c:add_record_to_server() Record pattern UUID 00001800-0000-1000-8000-00805f9
bluetoothd[12005]: src/adapter.c:adapter_service_insert() /org/bluez/hci0
bluetoothd[12005]: src/adapter.c:add_uuid() sending add uuid command for index 0
bluetoothd[12005]: src/gatt-database.c:gatt_db_service_added() GATT Service added to local database
bluetoothd[12005]: Failed to obtain handles for "Service Changed" characteristic
bluetoothd[12005]: src/adapter.c:adapter_service_add() /org/bluez/hci0
bluetoothd[12005]: src/sdpd-service.c:add_record_to_server() Adding record with handle 0x10002
bluetoothd[12005]: src/sdpd-service.c:add_record_to_server() Record pattern UUID 00000007-0000-1000-8000-00805f9
bluetoothd[12005]: src/sdpd-service.c:add_record_to_server() Record pattern UUID 00000100-0000-1000-8000-00805f9
bluetoothd[12005]: src/sdpd-service.c:add_record_to_server() Record pattern UUID 00001002-0000-1000-8000-00805f9
bluetoothd[12005]: src/sdpd-service.c:add_record_to_server() Record pattern UUID 00001801-0000-1000-8000-00805f9
bluetoothd[12005]: src/adapter.c:adapter_service_insert() /org/bluez/hci0
bluetoothd[12005]: src/adapter.c:add_uuid() sending add uuid command for index 0
bluetoothd[12005]: src/gatt-database.c:gatt_db_service_added() GATT Service added to local database
bluetoothd[12005]: plugins/hostname.c:hostname_probe()
bluetoothd[12005]: src/adapter.c:btd_adapter_unblock_address() hci0 00:00:00:00:00:00
bluetoothd[12005]: src/adapter.c:load_link_keys() hci0 keys 0 debug_keys 0
bluetoothd[12005]: src/adapter.c:load_ltks() hci0 keys 0
bluetoothd[12005]: src/adapter.c:load_irks() hci0 irks 0
bluetoothd[12005]: src/adapter.c:load_conn_params() hci0 conn params 0
bluetoothd[12005]: src/adapter.c:adapter_service_insert() /org/bluez/hci0
bluetoothd[12005]: src/adapter.c:add_uuid() sending add uuid command for index 0
bluetoothd[12005]: src/adapter.c:set_did() hci0 source 2 vendor 1d6b product 246 version 51d
bluetoothd[12005]: src/adapter.c:adapter_register() Adapter /org/bluez/hci0 registered
bluetoothd[12005]: src/adapter.c:set_dev_class() sending set device class command for index 0
bluetoothd[12005]: src/adapter.c:set_name() sending set local name command for index 0
bluetoothd[12005]: src/adapter.c:set_mode() sending set mode command for index 0
bluetoothd[12005]: src/adapter.c:set_discoverable() sending set mode command for index 0
bluetoothd[12005]: src/adapter.c:set_mode() sending set mode command for index 0
bluetoothd[12005]: src/adapter.c:load_link_keys_complete() link keys loaded for hci0
bluetoothd[12005]: src/adapter.c:load_ltks_complete() LTKs loaded for hci0
bluetoothd[12005]: src/adapter.c:load_irks_complete() IRKs loaded for hci0
bluetoothd[12005]: src/adapter.c:load_conn_params_complete() Connection Parameters loaded for hci0
bluetoothd[12005]: src/adapter.c:local_name_changed_callback() Name: BlueZ 5.29
bluetoothd[12005]: src/adapter.c:local_name_changed_callback() Short name:
bluetoothd[12005]: src/adapter.c:local_name_changed_callback() Current alias: BlueZ 5.29
bluetoothd[12005]: src/adapter.c:new_settings_callback() Settings: 0x00000a10
bluetoothd[12005]: src/adapter.c:settings_changed() Changed settings: 0x0000000a
bluetoothd[12005]: src/adapter.c:new_settings_callback() Settings: 0x00000a12
bluetoothd[12005]: src/adapter.c:settings_changed() Changed settings: 0x00000002
bluetoothd[12005]: src/adapter.c:new_settings_callback() Settings: 0x00000a1a
bluetoothd[12005]: src/adapter.c:settings_changed() Changed settings: 0x00000008
bluetoothd[12005]: plugins/hostname.c:property_changed() static hostname: UFHR
bluetoothd[12005]: plugins/hostname.c:property_changed() pretty hostname:
bluetoothd[12005]: plugins/hostname.c:update_name() name: UFHR
bluetoothd[12005]: src/adapter.c:adapter_set_name() name: UFHR
bluetoothd[12005]: src/adapter.c:adapter_set_name() alias: UFHR
bluetoothd[12005]: src/adapter.c:set_name() sending set local name command for index 0
bluetoothd[12005]: plugins/hostname.c:property_changed() chassis: vm
bluetoothd[12005]: src/adapter.c:local_name_changed_callback() Name: UFHR
bluetoothd[12005]: src/adapter.c:local_name_changed_callback() Short name:
bluetoothd[12005]: src/adapter.c:local_name_changed_callback() Current alias: UFHR
bluetoothd[12005]: src/adapter.c:new_settings_callback() Settings: 0x00000a1b
bluetoothd[12005]: src/adapter.c:settings_changed() Changed settings: 0x00000001
bluetoothd[12005]: src/adapter.c:adapter_start() adapter /org/bluez/hci0 has been enabled
bluetoothd[12005]: src/adapter.c:trigger_passive_scanning()
bluetoothd[12005]: src/adapter.c:start_discovery() sender :1.6
bluetoothd[12005]: src/adapter.c:trigger_start_discovery()
bluetoothd[12005]: src/adapter.c:cancel_passive_scanning()
bluetoothd[12005]: src/adapter.c:start_discovery_timeout()
bluetoothd[12005]: src/adapter.c:start_discovery_complete() status 0x00
bluetoothd[12005]: src/adapter.c:discovering_callback() hci0 type 6 discovering 1
bluetoothd[12005]: src/adapter.c:device_found_callback() hci0 addr 20:73:6A:17:69:31, rssi -59 flags 0x0000 eir_len 35
bluetoothd[12005]: src/device.c:device_create() dst 20:73:6A:17:69:31
bluetoothd[12005]: src/device.c:device_new() address 20:73:6A:17:69:31
bluetoothd[12005]: src/device.c:device_new() Creating device /org/bluez/hci0/dev_20_73_6A_17_69_31
bluetoothd[12005]: src/device.c:device_set_legacy() legacy 0
bluetoothd[12005]: src/device.c:device_set_rssi() rssi -59
bluetoothd[12005]: src/adapter.c:device_found_callback() hci0 addr 60:03:08:D2:5B:20, rssi -66 flags 0x0000 eir_len 15
bluetoothd[12005]: src/device.c:device_create() dst 60:03:08:D2:5B:20
bluetoothd[12005]: src/device.c:device_new() address 60:03:08:D2:5B:20
bluetoothd[12005]: src/device.c:device_new() Creating device /org/bluez/hci0/dev_60_03_08_D2_5B_20
bluetoothd[12005]: src/device.c:device_set_legacy() legacy 0
bluetoothd[12005]: src/device.c:device_set_rssi() rssi -66
bluetoothd[12005]: src/adapter.c:stop_discovery() sender :1.6
bluetoothd[12005]: src/adapter.c:discovery_destroy() owner :1.6
bluetoothd[12005]: src/device.c:device_set_rssi() rssi 0
bluetoothd[12005]: src/device.c:device_set_rssi() rssi 0
bluetoothd[12005]: src/adapter.c:stop_discovery_complete() status 0x00
bluetoothd[12005]: src/adapter.c:trigger_passive_scanning()
bluetoothd[12005]: src/adapter.c:discovering_callback() hci0 type 6 discovering 0
bluetoothd[12005]: src/device.c:btd_device_set_temporary() temporary 0
bluetoothd[12005]: src/device.c:device_connect_le() Connection attempt to: 20:73:6A:17:69:31
bluetoothd[12005]: src/adapter.c:connected_callback() hci0 device 20:73:6A:17:69:31 connected eir_len 0
bluetoothd[12005]: attrib/gattrib.c:g_attrib_ref() 0x24cbd00: g_attrib_ref=1
bluetoothd[12005]: src/device.c:gatt_debug() MTU exchange complete, with MTU: 23
bluetoothd[12005]: src/device.c:gatt_debug() Primary services found: 3
bluetoothd[12005]: src/device.c:gatt_debug() start: 0x0100, end: 0x0121, uuid: 00001800-0000-1000-8000-00805f9b34fb
bluetoothd[12005]: src/device.c:gatt_debug() start: 0x0200, end: 0x0200, uuid: 00001801-0000-1000-8000-00805f9b34fb
bluetoothd[12005]: src/device.c:gatt_debug() start: 0x0300, end: 0x0320, uuid: 8832ab08-ba2d-0184-004c-68c08e2190bf
bluetoothd[12005]: src/device.c:gatt_debug() Secondary service discovery failed. ATT ECODE: 0x0a
bluetoothd[12005]: src/device.c:gatt_debug() Characteristics found: 2
bluetoothd[12005]: src/device.c:gatt_debug() start: 0x0110, end: 0x011f, value: 0x0111, props: 0x02, uuid: 00002a00-0000-1
bluetoothd[12005]: src/device.c:gatt_debug() start: 0x0120, end: 0x0121, value: 0x0121, props: 0x02, uuid: 00002a01-0000-1
bluetoothd[12005]: src/device.c:gatt_debug() Characteristics found: 1
bluetoothd[12005]: src/device.c:gatt_debug() start: 0x0310, end: 0x0320, value: 0x0311, props: 0x3e, uuid: 361e118a-5524-2
bluetoothd[12005]: src/device.c:gatt_debug() Failed to initialize gatt-client
bluetoothd[12005]: src/device.c:gatt_client_ready_cb() status: failed, error: 10
bluetoothd[12005]: src/device.c:gatt_service_removed() start: 0x0100, end: 0x0121
next prev parent reply other threads:[~2015-03-17 13:33 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-04 18:45 Non-consecutive handle values in GATT Andrejs Hanins
2015-03-04 21:39 ` Arman Uguray
2015-03-04 22:21 ` Lukasz Rymanowski
2015-03-04 22:34 ` Andrejs Hanins
2015-03-05 8:39 ` Luiz Augusto von Dentz
2015-03-16 11:05 ` Luiz Augusto von Dentz
2015-03-16 13:20 ` Andrejs Hanins
2015-03-16 13:54 ` Andrejs Hanins
2015-03-16 14:13 ` Luiz Augusto von Dentz
2015-03-16 14:22 ` Andrejs Hanins
2015-03-17 13:07 ` Luiz Augusto von Dentz
2015-03-17 13:33 ` Andrejs Hanins [this message]
2015-03-17 15:01 ` Luiz Augusto von Dentz
2015-03-18 13:27 ` Luiz Augusto von Dentz
2015-03-18 13:54 ` Andrejs Hanins
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55082D38.4020306@ubnt.com \
--to=andrejs.hanins@ubnt.com \
--cc=armansito@chromium.org \
--cc=linux-bluetooth@vger.kernel.org \
--cc=luiz.dentz@gmail.com \
--cc=lukasz.rymanowski@gmail.com \
--cc=marcin.kraglak@tieto.com \
--cc=szymon.janc@tieto.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox