Hi there. I'm working on application where Gear connects to iPhone via Bluetooth LE. The next roles is selected:
Gear (Central) and iPhone (Peripheral). I have some issue (strange for me) when Gear is connecting to iPhone.
Let me describe what I do step by step. I'll put only Tizen calls without error processing and my internal logic.
- Initialization
bt_initialize(); bt_adapter_get_state(&state); if (state == BT_ADAPTER_DISABLED) { return error; }
- Start scanning
bt_gatt_set_connection_state_changed_cb( __bt_gatt_connection_state_changed_cb, NULL); bt_adapter_le_start_scan(__bt_adapter_le_scan_result_cb, NULL);
I see in system logs that service with requested UUID is found.01-10 17:25:35.019+0200 I/BLUETOOTH_FRWK_API( 9148): bt-adapter-le.c: bluetooth_start_le_discovery(110) > [32m ### Start LE scan [0m 01-10 17:25:35.019+0200 I/BLUETOOTH_FRWK_API( 9148): bt-adapter-le.c: bluetooth_start_le_discovery(112) > [32m Sync Request => type=BT_BLUEZ_SERVICE, fn=BT_START_LE_DISCOVERY(0x11) [0m 01-10 17:25:35.039+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-request-handler.c: __bt_service_method(163) > Method[service_request] Object Path[/org/projectx/bt_service] Interface Name[org.projectx.bt] 01-10 17:25:35.039+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-request-handler.c: __bt_service_method(236) > Service type = 0, fn = BT_START_LE_DISCOVERY (0x11) 01-10 17:25:35.039+0200 I/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-adapter-le.c: _bt_set_scan_parameters(797) > Set scan parameters 01-10 17:25:35.039+0200 I/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-adapter-le.c: _bt_start_le_scan(1338) > Start LE Full Scan 01-10 17:25:35.049+0200 D/BLUETOOTH_FRWK_API( 9148): bt-adapter-le.c: _bt_set_le_scan_status(92) > set LE scan mode : 1 01-10 17:25:35.579+0200 I/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-receiver.c: __bt_adapter_property_changed_event(617) > Property LEDiscovering 01-10 17:25:35.579+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-receiver.c: __bt_adapter_property_changed_event(659) > LEDiscovering 1
# 9148 is a PID of my application, I stripped logs to remove information about my app # This is log from my scan_result_cb 01-10 17:25:35.979+0200 ( 9148): __bt_adapter_le_scan_result_cb:76: Service is scanning 01-10 17:25:35.979+0200 ( 9148): [__bt_adapter_le_scan_result_cb, line = 104] Remote address = 6F:0B:DA:7A:B4:D5 01-10 17:25:35.979+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-sender.c: _bt_send_event_to_dest(413) > event_type [3], event [14] 01-10 17:25:35.979+0200 I/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-sender.c: _bt_send_event_to_dest(454) > [32m Signal : LEDeviceFound [0m 01-10 17:25:35.989+0200 ( 9148): __bt_adapter_le_scan_result_cb:125: UUID 0 = 00001101-0000-1000-8000-00805F9B3400 01-10 17:25:35.989+0200 ( 9148): __bt_adapter_le_scan_result_cb:130: Found desired UUID 00001101-0000-1000-8000-00805F9B3400 01-10 17:25:36.009+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-sender.c: _bt_send_event_to_dest(413) > event_type [3], event [14] 01-10 17:25:36.009+0200 I/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-sender.c: _bt_send_event_to_dest(454) > [32m Signal : LEDeviceFound [0m 01-10 17:25:36.039+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-receiver.c: __bt_device_property_changed_event(904) > + 01-10 17:25:36.039+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-receiver.c: __bt_device_property_changed_event(916) > Property UUIDs 01-10 17:25:36.039+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-receiver.c: __bt_device_property_changed_event(1223) > -
- Wait until device with requested servise found or timeout expired. After that stop scanning.
bt_adapter_le_stop_scan();
System logs.# 6F:0B:DA:7A:B4:XX is a hidden iPhone bluetooth address 01-10 17:25:36.079+0200 I/BLUETOOTH_FRWK_API( 2498): bt-gatt-client.c: _bluetooth_gatt_check_service_change_watcher_address(137) > service_monitor_list [6F:0B:DA:7A:B4:XX] - Input [6F:0B:DA:7A:B4:XX] 01-10 17:25:36.079+0200 I/BLUETOOTH_FRWK_API( 2498): bt-event-handler.c: __bt_manager_event_filter(2738) > ### GATT Service added [/org/bluez/hci0/dev_6F_0B_DA_7A_B4_D5/service0039] [6F:0B:DA:7A:B4:XX] 01-10 17:25:36.079+0200 I/BLUETOOTH_FRWK_API( 2522): bt-telephony.c: __bt_telephony_adapter_filter(2295) > Adapter Path = [/org/bluez/hci0/dev_6F_0B_DA_7A_B4_D5/service0039/char003a/desc003d] 01-10 17:25:36.089+0200 I/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-receiver.c: __bt_gatt_char_property_changed_event(1519) > Property Flags 01-10 17:25:36.089+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-sender.c: _bt_send_event_to_dest(413) > event_type [3], event [14] 01-10 17:25:36.089+0200 I/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-sender.c: _bt_send_event_to_dest(454) > [32m Signal : LEDeviceFound [0m 01-10 17:25:36.139+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-sender.c: _bt_send_event_to_dest(413) > event_type [3], event [14] 01-10 17:25:36.139+0200 I/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-sender.c: _bt_send_event_to_dest(454) > [32m Signal : LEDeviceFound [0m 01-10 17:25:36.149+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-sender.c: _bt_send_event_to_dest(413) > event_type [3], event [14] 01-10 17:25:36.149+0200 I/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-sender.c: _bt_send_event_to_dest(454) > [32m Signal : LEDeviceFound [0m 01-10 17:25:36.159+0200 I/BLUETOOTH_FRWK_API( 9148): bt-adapter-le.c: bluetooth_stop_le_discovery(131) > [32m ### Stop LE scan [0m 01-10 17:25:36.159+0200 I/BLUETOOTH_FRWK_API( 9148): bt-adapter-le.c: bluetooth_stop_le_discovery(133) > [32m Sync Request => type=BT_BLUEZ_SERVICE, fn=BT_STOP_LE_DISCOVERY(0x12) [0m 01-10 17:25:36.159+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-request-handler.c: __bt_service_method(163) > Method[service_request] Object Path[/org/projectx/bt_service] Interface Name[org.projectx.bt] 01-10 17:25:36.159+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-request-handler.c: __bt_service_method(236) > Service type = 0, fn = BT_STOP_LE_DISCOVERY (0x12) 01-10 17:25:36.159+0200 I/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-adapter-le.c: _bt_stop_le_scan(1433) > Just stop LE scan 01-10 17:25:36.179+0200 D/BLUETOOTH_FRWK_API( 9148): bt-adapter-le.c: _bt_set_le_scan_status(92) > set LE scan mode : 0 # This is my custom Bluetooth Service. UUID is correct. It has 1 characteristic, so logs are correct. 01-10 17:25:36.179+0200 I/BLUETOOTH_FRWK_API( 2498): bt-gatt-client.c: bluetooth_gatt_get_service_property(257) > ======> Service : 00001101-0000-1000-8000-00805f9b3400 [Unknown] 01-10 17:25:36.179+0200 D/BLUETOOTH_FRWK_API( 2498): bt-gatt-client.c: bluetooth_gatt_get_service_property(287) > Characteristics count : 1
- The next step is initiate connection.
bt_gatt_connect(iphone_address, true); bt_gatt_client_h client_handle = NULL; bt_gatt_client_create(iphone_address, &client_handle);
After that I can see next logs.01-10 17:25:36.179+0200 W/WECONN ( 2498): <__on_change_gatt_client:366> { 01-10 17:25:36.179+0200 W/WECONN ( 2498): <__on_change_gatt_client:370> chage_type : 0, service_uuid : 00001101-0000-1000-8000-00805f9b3400 01-10 17:25:36.179+0200 D/WECONN ( 2498): <__on_change_gatt_client:846> remote_address : B4:D5 01-10 17:25:36.179+0200 W/WECONN ( 2498): <__is_device_matched_to:2565> le : B4:D5, br_edr : 99:42, identifier : B4:D5 01-10 17:25:36.179+0200 D/WECONN ( 2498): <wc_bt_get_gatt_client_service:2003> ## # I think this is a root cause why connection is not established. I don't know what is service with UUID 9a3f68e0-86ce-11e5-a309-0002a5d5c51b. # I don't have such UUID in my code at all. Error -61 means BT_ERROR_NO_DATA. 01-10 17:25:36.179+0200 E/WECONN ( 2498): <wc_bt_get_gatt_client_service:2007> ret : -61 01-10 17:25:36.179+0200 E/WECONN ( 2498): <__create_gatt_handle_into:1169> Fail wc_bt_get_gatt_client_service[9a3f68e0-86ce-11e5-a309-0002a5d5c51b]/[-61] 01-10 17:25:36.189+0200 W/WECONN ( 2498): <__on_change_gatt_client:374> } 01-10 17:25:36.189+0200 I/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-receiver.c: __bt_adapter_property_changed_event(617) > Property LEDiscovering 01-10 17:25:36.189+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-receiver.c: __bt_adapter_property_changed_event(659) > LEDiscovering 0 01-10 17:25:36.189+0200 E/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-receiver.c: __bt_adapter_property_changed_event(684) > Dbus Error GDBus.Error:org.bluez.Error.Failed: No discovery started 01-10 17:25:36.199+0200 D/BLUETOOTH_FRWK_API( 9148): bt-common.c: _bt_check_privilege(1884) > Sync Request => type=service_type, fn=service_function(0x159) 01-10 17:25:36.199+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-request-handler.c: __bt_service_method(163) > Method[service_request] Object Path[/org/projectx/bt_service] Interface Name[org.projectx.bt] 01-10 17:25:36.199+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-request-handler.c: __bt_service_method(236) > Service type = 4, fn = BT_CONNECT_LE (0x159) 01-10 17:25:36.199+0200 I/BLUETOOTH_FRWK_API( 9148): bt-device.c: bluetooth_connect_le(354) > [32m ### Connect LE [0m 01-10 17:25:36.199+0200 I/BLUETOOTH_FRWK_API( 9148): bt-device.c: bluetooth_connect_le(357) > [32m Async Request => type=BT_BLUEZ_SERVICE, fn=BT_CONNECT_LE(0x159) [0m01-10 17:25:36.209+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-request-handler.c: __bt_service_method(163) > Method[service_request] Object Path[/org/projectx/bt_service] Interface Name[org.projectx.bt] 01-10 17:25:36.209+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-request-handler.c: __bt_service_method(224) > Request ID: 21 01-10 17:25:36.209+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-request-handler.c: __bt_service_method(236) > Service type = 0, fn = BT_CONNECT_LE (0x159) 01-10 17:25:36.209+0200 E/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-adapter-le.c: _bt_hold_current_advertising(505) > It's NOT advertising 01-10 17:25:36.209+0200 E/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-device.c: _bt_connect_le_device(1947) > Unable to hold advertising 01-10 17:25:36.279+0200 D/BLUETOOTH_FRWK_API( 9148): bt-device.c: bluetooth_is_device_connected(320) > Sync Request => type=BT_BLUEZ_SERVICE, fn=BT_IS_DEVICE_CONNECTED(0x5a) 01-10 17:25:36.329+0200 I/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-device.c: __bt_connect_le_device_internal(1880) > Connect LE [6F:0B:DA:7A:B4:XX] 01-10 17:25:36.329+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-request-handler.c: __bt_service_method(279) > INSERT INTO REQ LIST 01-10 17:25:36.329+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-request-handler.c: __bt_service_method(163) > Method[service_request] Object Path[/org/projectx/bt_service] Interface Name[org.projectx.bt] 01-10 17:25:36.329+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-request-handler.c: __bt_service_method(236) > Service type = 0, fn = BT_IS_DEVICE_CONNECTED (0x5a) 01-10 17:25:36.329+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-device.c: _bt_is_device_connected(1609) > 6F:0B:DA:7A:B4:XX connection_type: 64 # I suppose that 1 means true and there is a connection. 01-10 17:25:36.399+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-device.c: _bt_is_gatt_connected(1578) > gatt is connected : 1 01-10 17:25:36.399+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-request-handler.c: __bt_bluez_request(926) > is_connected: 1 01-10 17:25:36.399+0200 I/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_primary_services(320) > + 01-10 17:25:36.399+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-adapter.c: _bt_get_discovering_property(2803) > discoverable_v:0 01-10 17:25:36.409+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-sender.c: _bt_send_event(44) > event_type [3], event [13] 01-10 17:25:36.409+0200 D/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-sender.c: _bt_send_event(391) > Path : /org/projectx/bt/le/adapter 01-10 17:25:36.409+0200 I/BLUETOOTH_FRWK_SERVICE( 2755): bt-service-event-sender.c: _bt_send_event(392) > [32m Signal : LEDiscoveryFinished [0m 01-10 17:25:36.409+0200 D/BLUETOOTH_FRWK_API( 9148): bt-request-sender.c: __send_request_cb(300) > + 01-10 17:25:36.409+0200 D/BLUETOOTH_FRWK_API( 9148): bt-request-sender.c: __bt_get_event_info(117) > service_function : BT_CONNECT_LE (0x159) 01-10 17:25:36.409+0200 D/BLUETOOTH_FRWK_API( 9148): bt-request-sender.c: __send_request_cb(401) > - 01-10 17:25:36.549+0200 I/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_service_property(257) > ======> Service : 00001101-0000-1000-8000-00805f9b3400 [Unknown] 01-10 17:25:36.549+0200 D/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_service_property(287) > Characteristics count : 1 01-10 17:25:36.589+0200 I/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_service_property(257) > ======> Service : 89d3502b-0f36-433a-8ef4-c502ad55f8dc [Apple Media Service] 01-10 17:25:36.589+0200 D/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_service_property(287) > Characteristics count : 3 01-10 17:25:36.639+0200 I/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_service_property(257) > ======> Service : 7905f431-b5ce-4e99-a40f-4b1e122d00d0 [Apple Notification Center Service] 01-10 17:25:36.639+0200 D/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_service_property(287) > Characteristics count : 3 01-10 17:25:36.689+0200 I/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_service_property(257) > ======> Service : 0000180a-0000-1000-8000-00805f9b34fb [Device Information] 01-10 17:25:36.689+0200 D/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_service_property(287) > Characteristics count : 2 01-10 17:25:36.739+0200 I/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_service_property(257) > ======> Service : 00001805-0000-1000-8000-00805f9b34fb [Current Time Service] 01-10 17:25:36.739+0200 D/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_service_property(287) > Characteristics count : 2 01-10 17:25:36.789+0200 I/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_service_property(257) > ======> Service : 0000180f-0000-1000-8000-00805f9b34fb [Battery Service] 01-10 17:25:36.789+0200 D/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_service_property(287) > Characteristics count : 1 01-10 17:25:36.839+0200 I/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_service_property(257) > ======> Service : 9fa480e0-4967-4542-9390-d343dc5d04ae [Unknown] 01-10 17:25:36.839+0200 D/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_service_property(287) > Characteristics count : 1 01-10 17:25:36.889+0200 I/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_service_property(257) > ======> Service : d0611e78-bbb4-4591-a5f8-487910ae4366 [Unknown] 01-10 17:25:36.889+0200 D/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_service_property(287) > Characteristics count : 1 01-10 17:25:36.939+0200 I/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_service_property(257) > ======> Service : 00001801-0000-1000-8000-00805f9b34fb [Generic Attribute] 01-10 17:25:36.939+0200 D/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_service_property(287) > Characteristics count : 1 01-10 17:25:36.989+0200 I/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_service_property(257) > ======> Service : 00001800-0000-1000-8000-00805f9b34fb [Generic Access] 01-10 17:25:36.989+0200 D/BLUETOOTH_FRWK_API( 9148): bt-gatt-client.c: bluetooth_gatt_get_service_property(287) > Characteristics count : 2
After that I see error logs from my app denoting that timeout has expired (I set 10 seconds to give enough time).
As I see error happened on function wc_bt_get_gatt_client_service() with error code -61 (BT_ERROR_NO_DATA).01-10 17:25:36.179+0200 E/WECONN ( 2498): <wc_bt_get_gatt_client_service:2007> ret : -61 01-10 17:25:36.179+0200 E/WECONN ( 2498): <__create_gatt_handle_into:1169> Fail wc_bt_get_gatt_client_service[9a3f68e0-86ce-11e5-a309-0002a5d5c51b]/[-61]
I have no idea what is the mysterious UUID 9a3f68e0-86ce-11e5-a309-0002a5d5c51b and why it requested.
Thank you in advance.