I have a Samsung Spica i5700, which I have already updated to Android 2.1. I am using a phone with an application called Run.GPS ( http://www.rungps.net ). This application records data such as GPS location, route, speed, bearing, etc. It can also record heart rate if the user has the Zephyr HxM ("HxM") Bluetooth heart rate monitor, which I have.
I can connect HxM to the phone through the standard bluetooth utility. I am prompted to enter the PIN that I enter, and the device displays as “Pair but not connected.”
In the Run.GPS application itself, I click "Connect Heartrate Monitor". This time expires after 30 seconds, and the error message "Cannot connect to the heart rate monitor. Try other settings.
I used a friend of HTC Windows Mobile as a control device to see if HxM works there. It does. The Run.GPS application automatically sets the baud rate (initially on the 9600 IIRC, although the connection also worked at higher baud rates), and you can choose between different COM ports as well as a .Net COM port.
I tested my Spica Android a bit to find out why the Bluetooth connection is not working. Below are some of the log files that I connected via adb when I clicked the “Connect to Heart Monitor” button in the Run.GPS application.
I would like to know any tips (including if I post to the wrong forum here ;-)) - is it possible to experiment with the transfer speed in Android, etc. I still don’t know if the problem is with the Run.GPS application (I already posted it on the development forum) or with Android 2.1. I checked another app - Endomondo - it's also a sports tracking app that only supports heart rate monitoring with HxM. There, it seems, the same error occurred - I clicked "Connect Zephyr HxM". For several seconds they showed me the status of "Connecting ...", but then it was rated for "Not connected." I, therefore, tend to search for Android for the problem.
Here is adb log code output when trying to connect
./adb logcat | grep Run.GPS D/WYNEX> (11551): Excute :: Run.GPS Trainer UV, (null) E/Run.GPS (11997): Cannot connect to BT device E/Run.GPS (11997): java.io.IOException: Service discovery failed E/Run.GPS (11997): at android.bluetooth.BluetoothSocket$SdpHelper.doSdp(BluetoothSocket.java:374) E/Run.GPS (11997): at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:184) E/Run.GPS (11997): at ju.a(Unknown Source) E/Run.GPS (11997): at qk.j(Unknown Source) E/Run.GPS (11997): at fs.c(Unknown Source) E/Run.GPS (11997): at le.a(Unknown Source) E/Run.GPS (11997): at sb(Unknown Source) E/Run.GPS (11997): at pb.a(Unknown Source) E/Run.GPS (11997): at as.a(Unknown Source) E/Run.GPS (11997): at am.b(Unknown Source) E/Run.GPS (11997): at gf.onTouchEvent(Unknown Source) E/Run.GPS (11997): at android.view.View.dispatchTouchEvent(View.java:3709) E/Run.GPS (11997): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) E/Run.GPS (11997): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) E/Run.GPS (11997): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1665) E/Run.GPS (11997): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107) E/Run.GPS (11997): at android.app.Activity.dispatchTouchEvent(Activity.java:2061) E/Run.GPS (11997): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1649) E/Run.GPS (11997): at android.view.ViewRoot.handleMessage(ViewRoot.java:1694) E/Run.GPS (11997): at android.os.Handler.dispatchMessage(Handler.java:99) E/Run.GPS (11997): at android.os.Looper.loop(Looper.java:123) E/Run.GPS (11997): at android.app.ActivityThread.main(ActivityThread.java:4363) E/Run.GPS (11997): at java.lang.reflect.Method.invokeNative(Native Method) E/Run.GPS (11997): at java.lang.reflect.Method.invoke(Method.java:521) E/Run.GPS (11997): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) E/Run.GPS (11997): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) E/Run.GPS (11997): at dalvik.system.NativeStart.main(Native Method) E/Run.GPS (11997): Cannot connect to BT device E/Run.GPS (11997): java.io.IOException: Service discovery failed
Here is the dmesg output when trying to connect a heart rate monitor
<4>[74726.239833] select 11691 (.serviceModeApp), adj 15, size 3205, to kill <4>[74726.240741] select 11739 (com.wssnps), adj 15, size 3207, to kill <4>[74726.246870] select 11750 (id.partnersetup), adj 15, size 3219, to kill <4>[74726.253390] select 11857 (p.bluetoothicon), adj 15, size 3299, to kill <4>[74726.259879] select 13131 (ndroid.settings), adj 15, size 4586, to kill <4>[74726.266372] send sigkill to 13131 (ndroid.settings), adj 15, size 4586 <7>[74733.945097] [BT] GPIO_BT_WAKE = 1 <7>[74733.945121] [BT] wake_lock(bt_wake_lock) <7>[74733.951799] [BT] GPIO_BT_HOST_WAKE = 1 <7>[74733.951822] [BT] wake_lock timeout = 5 sec <7>[74735.890196] [BT] GPIO_BT_HOST_WAKE = 0 <7>[74736.150987] [BT] GPIO_BT_HOST_WAKE = 1 <7>[74736.151009] [BT] wake_lock timeout = 5 sec <7>[74737.490185] [BT] GPIO_BT_HOST_WAKE = 0 <7>[74740.073913] [BT] GPIO_BT_HOST_WAKE = 1 <7>[74740.073948] [BT] wake_lock timeout = 5 sec <7>[74741.315336] [BT] GPIO_BT_HOST_WAKE = 0 <7>[74743.249747] [BT] GPIO_BT_HOST_WAKE = 1 <7>[74743.249768] [BT] wake_lock timeout = 5 sec <7>[74744.865099] [BT] GPIO_BT_HOST_WAKE = 0 <7>[74745.154487] [BT] GPIO_BT_HOST_WAKE = 1 <7>[74745.154509] [BT] wake_lock timeout = 5 sec <7>[74748.852534] [BT] GPIO_BT_HOST_WAKE = 0 <7>[74749.156256] [BT] GPIO_BT_HOST_WAKE = 1 <7>[74749.156278] [BT] wake_lock timeout = 5 sec <7>[74750.490018] [BT] GPIO_BT_HOST_WAKE = 0 <4>[74754.230424] select 11691 (.serviceModeApp), adj 15, size 3191, to kill <4>[74754.231326] select 11739 (com.wssnps), adj 15, size 3193, to kill <4>[74754.237473] select 11750 (id.partnersetup), adj 15, size 3205, to kill <4>[74754.243950] select 11857 (p.bluetoothicon), adj 15, size 3283, to kill <4>[74754.250452] select 13140 (com.svox.pico), adj 15, size 3465, to kill <4>[74754.256787] send sigkill to 13140 (com.svox.pico), adj 15, size 3465
Here's the logcat output when I click "connect zephyr" in Endomondo
I/PUSH Event(19147): MotionEvent : QueuedEvent{43d7d480 MotionEvent{440b5680 action=1 x=228.28438 y=212.55624 pressure=0.0 size=0.0}} D/BluetoothZephyrService(23605): connect to: 00:07:80:88:F5:AD D/BluetoothSocket(23605): BluetoothSocket created fd: -1uuid00001101-0000-1000-8000-00805f9b34fbport -1 D/BluetoothSocket.cpp(23605): initSocketNative I/BLZ20_WRAPPER(23605): blz20_wrp_socket: fam 31, type 1, prot BTPROTO_RFCOMM D/BLZ20_WRAPPER(23605): blz20_init: initializing... D/BTL_IFC_WRP(23605): wsactive_init: init active list I/BTL_IFC (23605): main_client_thread: Client main thread starting D/BLZ20_WRAPPER(23605): blz20_init: success I/BTL_IFC (23605): BTL_IFC_RegisterSubSystem: Register subsystem [(null)] I/BTL_IFC (23605): btl_ifc_ctrl_connect: Connect control channel for subsystem [(null)] D/BTL_IFC_WRP(23605): wrp_sock_create: CTRL D/BTL_IFC_WRP(23605): wrp_alloc_new_sock: wrp_alloc_new_sock sub 1 D/BTL_IFC_WRP(23605): wrp_sock_create: 28 D/BTL_IFC_WRP(23605): wrp_sock_connect: wrp_sock_connect 127.0.0.1:9000 (28) I/BTL-IFS (21889): main_server_thread: [CTRL] Client connected (14) I/BTL_IFC_WRP(23605): wrp_sock_connect: Connected. (28) I/BTL_IFC (23605): send_ctrl_msg: [BTL_IFC CTRL] send BTLIF_REGISTER_SUBSYS_REQ ((null)) 0 pbytes (hdl 28) I/BTL-IFS (21889): attach_client: multiclient index 1 I/BTL-IFS (21889): attach_client: ######## Attached client subsystem (14) ######## I/BTL-IFS (21889): btl_if_notify_local_event: Notify local event BTLIF_SUBSYSTEM_ATTACHED D/ (21889): btlif_bts_api_ctrl_cb: btlif_bts_api_ctrl_cb : id BTLIF_SUBSYSTEM_ATTACHED (4112) on hdl 14 I/ (21889): btlif_rfc_ctrl_chan_attached: client attached ctrl handle 14 D/BTL-IFS (21889): send_registration_rsp: send_registration_rsp [0] I/BTL-IFS (21889): send_ctrl_msg: [BTL_IFS CTRL] send BTLIF_REGISTER_SUBSYS_RSP (CTRL) 2 pbytes (hdl 14) D/BTL_IFC (23605): BTL_IFC_RegisterSubSystem: add new ctrl fd to active set D/BTL_IFC_WRP(23605): wrp_wsock_create: (null) D/BTL_IFC_WRP(23605): wrp_alloc_new_sock: wrp_alloc_new_sock sub 15 D/BTL_IFC_WRP(23605): wrp_wsock_create: 32 D/BLZ20_WRAPPER(23605): btsk_alloc_add: success I/BLZ20_WRAPPER(23605): blz20_wrp_socket: return 32 D/BLZ20_WRAPPER(23605): blz20_wrp_setsockopt: fd (-1:32), bta -1, rc 0, wflags 0x0 I/BLZ20_WRAPPER(23605): blz20_wrp_setsockopt: configure rfcomm lm mode 0x26, (master:0, auth 1, enc 1) I/BLZ20_WRAPPER(23605): blz20_wrp_setsockopt: success D/BLZ20_WRAPPER(23605): blz20_wrp_setsockopt: fd (-1:32), bta -1, rc 0, wflags 0x0 I/BLZ20_WRAPPER(23605): blz20_wrp_setsockopt: configure rfcomm sndbuf len 71680 bytes I/BLZ20_WRAPPER(23605): blz20_wrp_setsockopt: success D/BluetoothSocket.cpp(23605): ...fd 32 created (RFCOMM, lm = 26) D/BluetoothSocket.cpp(23605): initSocketFromFdNative D/BluetoothZephyrService(23605): setState() 0 -> 2 I/BluetoothZephyrService(23605): BEGIN mConnectThread E/BluetoothService.cpp(19147): stopDiscoveryNative: D-Bus error in StopDiscovery: org.bluez.Error.Failed (Invalid discovery session) D/BluetoothSocket(23605): connect D/BluetoothSocket(23605): doSdp I/BluetoothService.cpp(19147): ... Object Path = /org/bluez/21902/hci0/dev_00_07_80_88_F5_AD I/BluetoothService.cpp(19147): ... Pattern = 00001101-0000-1000-8000-00805f9b34fb, strlen = 36 I/BluetoothZephyr(23605): MESSAGE_STATE_CHANGE: 2 D/DEVICE (21902): *************DiscoverServices******** I/DTUN_HCID(21902): dtun_client_get_remote_svc_channel: starting discovery on (uuid16=0x0011) I/DTUN_HCID(21902): bdaddr=00:07:80:88:F5:AD I/DTUN_CLNT(21902): Client calling DTUN_METHOD_DM_GET_REMOTE_SERVICE_CHANNEL (id 4) I/ (21889): DTUN_ReceiveCtrlMsg: [DTUN] Received message [BTLIF_DTUN_METHOD_CALL] 4354 I/ (21889): handle_method_call: handle_method_call :: received DTUN_METHOD_DM_GET_REMOTE_SERVICE_CHANNEL (id 4), len 134 E/BTLD (21889): ****************search UUID = 1101*********** I//system/bin/btld(21888): btapp_dm_GetRemoteServiceChannel() W/BTLD (21889): SDP - Rcvd conn cnf with error: 0x4 CID 0x42 I/BTL-IFS (21889): send_ctrl_msg: [BTL_IFS CTRL] send BTLIF_DTUN_SIGNAL_EVT (CTRL) 13 pbytes (hdl 10) I/DTUN_CLNT(21902): dtun-rx signal [DTUN_SIG_DM_RMT_SERVICE_CHANNEL] (id 42) len 15 I/DTUN_HCID(21902): dtun_dm_sig_rmt_service_channel: success=1, service=00000000 E/DTUN_HCID(21902): discovery unsuccessful! V/BluetoothEventRedirector(21741): Received android.bleutooth.device.action.UUID E/CachedBluetoothDevice(21741): onUuidChanged: Time since last connect9266997 D/BluetoothService(19147): Cleaning up failed UUID channel lookup: 00:07:80:88:F5:AD 00001101-0000-1000-8000-00805f9b34fb D/BluetoothSocket(23605): onRfcommChannelFound -1 D/BluetoothZephyrService(23605): setState() 2 -> 1 D/BluetoothSocket(23605): close D/BluetoothSocket(23605): cancel D/BluetoothSocket.cpp(23605): abortNative D/BluetoothSocket.cpp(23605): ...asocket_abort(32) complete D/BluetoothSocket.cpp(23605): destroyNative D/BluetoothSocket.cpp(23605): ...asocket_destroy(32) complete D/BluetoothZephyrService(23605): start D/BluetoothSocket(23605): close D/BluetoothSocket(23605): BluetoothSocket created fd: -1uuidnullport 1 D/BluetoothSocket.cpp(23605): initSocketNative I/BLZ20_WRAPPER(23605): blz20_wrp_socket: fam 31, type 1, prot BTPROTO_RFCOMM D/BTL_IFC_WRP(23605): wrp_wsock_create: (null) D/BTL_IFC_WRP(23605): wrp_alloc_new_sock: wrp_alloc_new_sock sub 15 D/BTL_IFC_WRP(23605): wrp_wsock_create: 32 D/BLZ20_WRAPPER(23605): btsk_alloc_add: success D/BLZ20_WRAPPER(23605): btsk_dump_list: fd (-1:32), bta -1, rc 0, wflags 0x0 I/BLZ20_WRAPPER(23605): blz20_wrp_socket: return 32 E/BLZ20_WRAPPER(23605): ##### ERROR : btsk_check_duplicates: WARNING : duplicate entries found for key 4, val 32##### D/BLZ20_WRAPPER(23605): btsk_check_duplicates: fd (-1:32), bta -1, rc 0, wflags 0x0 D/BLZ20_WRAPPER(23605): btsk_check_duplicates: fd (-1:32), bta -1, rc 0, wflags 0x0 E/BLZ20_WRAPPER(23605): ##### ERROR : btsk_check_duplicates: ### ASSERT : frameworks/base/core/jni/../../../../vendor/brcm/adaptation/btl-if/client/blz20_wrapper.c line 534 duplicates found (2) ######## D/BLZ20_WRAPPER(23605): blz20_wrp_setsockopt: fd (-1:32), bta -1, rc 0, wflags 0x0 I/BLZ20_WRAPPER(23605): blz20_wrp_setsockopt: configure rfcomm lm mode 0x26, (master:0, auth 1, enc 1) I/BLZ20_WRAPPER(23605): blz20_wrp_setsockopt: success E/BLZ20_WRAPPER(23605): ##### ERROR : btsk_check_duplicates: WARNING : duplicate entries found for key 4, val 32##### D/BLZ20_WRAPPER(23605): btsk_check_duplicates: fd (-1:32), bta -1, rc 0, wflags 0x0 D/BLZ20_WRAPPER(23605): btsk_check_duplicates: fd (-1:32), bta -1, rc 0, wflags 0x0 E/BLZ20_WRAPPER(23605): ##### ERROR : btsk_check_duplicates: ### ASSERT : frameworks/base/core/jni/../../../../vendor/brcm/adaptation/btl-if/client/blz20_wrapper.c line 534 duplicates found (2) ######## D/BLZ20_WRAPPER(23605): blz20_wrp_setsockopt: fd (-1:32), bta -1, rc 0, wflags 0x0 I/BLZ20_WRAPPER(23605): blz20_wrp_setsockopt: configure rfcomm sndbuf len 71680 bytes I/BLZ20_WRAPPER(23605): blz20_wrp_setsockopt: success D/BluetoothSocket.cpp(23605): ...fd 32 created (RFCOMM, lm = 26) D/BluetoothSocket.cpp(23605): initSocketFromFdNative D/BluetoothSocket(23605): bindListen D/BluetoothSocket.cpp(23605): bindListenNative I/BLZ20_WRAPPER(23605): blz20_wrp_bind: s 32 E/BLZ20_WRAPPER(23605): ##### ERROR : btsk_check_duplicates: WARNING : duplicate entries found for key 4, val 32##### D/BLZ20_WRAPPER(23605): btsk_check_duplicates: fd (-1:32), bta -1, rc 0, wflags 0x0 D/BLZ20_WRAPPER(23605): btsk_check_duplicates: fd (-1:32), bta -1, rc 0, wflags 0x0 E/BLZ20_WRAPPER(23605): ##### ERROR : btsk_check_duplicates: ### ASSERT : frameworks/base/core/jni/../../../../vendor/brcm/adaptation/btl-if/client/blz20_wrapper.c line 534 duplicates found (2) ######## D/BLZ20_WRAPPER(23605): blz20_wrp_bind: bind socket fd (-1:32), bta -1, rc 0, wflags 0x0 D/BLZ20_WRAPPER(23605): __bind_prot_rfcomm: rc_chan 1 D/BTL_IFC_WRP(23605): wrp_sock_bind: wrp_sock_bind on port 9050 I/BLZ20_WRAPPER(23605): blz20_wrp_listen: s 32, backlog 1 E/BLZ20_WRAPPER(23605): ##### ERROR : btsk_check_duplicates: WARNING : duplicate entries found for key 4, val 32##### D/BLZ20_WRAPPER(23605): btsk_check_duplicates: fd (-1:32), bta -1, rc 1, wflags 0x0 D/BLZ20_WRAPPER(23605): btsk_check_duplicates: fd (-1:32), bta -1, rc 0, wflags 0x0 E/BLZ20_WRAPPER(23605): ##### ERROR : btsk_check_duplicates: ### ASSERT : frameworks/base/core/jni/../../../../vendor/brcm/adaptation/btl-if/client/blz20_wrapper.c line 534 duplicates found (2) ######## D/BLZ20_WRAPPER(23605): blz20_wrp_listen: fd (-1:32), bta -1, rc 1, wflags 0x0 D/BLZ20_WRAPPER(23605): btlif_send_msg_wait_response: send BTLIF_BTS_RFC_LISTEN_REQ, wait for |BTLIF_BTS_RFC_LISTEN_RSP| D/BTL_IFC (23605): BTL_IFC_CtrlSend: BTL_IFC_CtrlSend I/BTL_IFC (23605): send_ctrl_msg: [BTL_IFC CTRL] send BTLIF_BTS_RFC_LISTEN_REQ ((null)) 20 pbytes (hdl 28) D/ (21889): btlif_bts_api_ctrl_cb: btlif_bts_api_ctrl_cb : id BTLIF_BTS_RFC_LISTEN_REQ (4433) on hdl 14 I/ (21889): btlif_rfc_listen_req: Allocated dynamic server channel 4 D/ (21889): bts_chan_alloc_add: bts_chan_alloc_add : success (tot 1) D/ (21889): bts_chan_dump_all: D/ (21889): bts_chan_dump_all: type 3, dhdl -1, bta_hdl -1, scn -1, phdl 65535, lstpnd 0, -1:-1 (L:D) I/ (21889): btlif_rfc_listen_req: start rfcomm server on scn 4, role 1, sec_mask 0x30 D/ (21889): jw_if_rfcomm_srv_cback: event=BTA_JV_RFCOMM_START_EVT I/ (21889): jw_if_rfcomm_srv_cback: [BTA_JV_RFCOMM_START_EVT] start status: 0, handle:0, security id: 47 I/ (21889): jv_rfc_srv_listen_started: jv_rfc_srv_listen_started I/BTL-IFS (21889): send_ctrl_msg: [BTL_IFS CTRL] send BTLIF_BTS_RFC_LISTEN_RSP () 17 pbytes (hdl 14) I/BTL_IFC (23605): btl_ifc_ctrl_rx: [BTL_IFC CTRL] recv BTLIF_BTS_RFC_LISTEN_RSP ((null)) 19 pbytes (hdl 28) I/BLZ20_WRAPPER(23605): btlif_ctrl_callback: btlif_ctrl_callback : msg id BTLIF_BTS_RFC_LISTEN_RSP E/BLZ20_WRAPPER(23605): ##### ERROR : btsk_check_duplicates: WARNING : duplicate entries found for key 4, val 32##### D/BLZ20_WRAPPER(23605): btsk_check_duplicates: fd (-1:32), bta -1, rc 1, wflags 0x2 D/BLZ20_WRAPPER(23605): btsk_check_duplicates: fd (-1:32), bta -1, rc 0, wflags 0x0 E/BLZ20_WRAPPER(23605): ##### ERROR : btsk_check_duplicates: ### ASSERT : frameworks/base/core/jni/../../../../vendor/brcm/adaptation/btl-if/client/blz20_wrapper.c line 534 duplicates found (2) ######## I/BLZ20_WRAPPER(23605): btlif_process_listen_rsp: listen response for bta hdl 0 D/BLZ20_WRAPPER(23605): btlif_signal_event: fd (-1:32), bta 0, rc 1, wflags 0x2 D/BLZ20_WRAPPER(23605): btlif_signal_event: event BTLIF_BTS_RFC_LISTEN_RSP matched D/BLZ20_WRAPPER(23605): btlif_send_msg_wait_response: unblocked fd (-1:32), bta 0, rc 1, wflags 0x0 I/BLZ20_WRAPPER(23605): __listen_prot_rfcomm: success, scn 4 D/BTL_IFC_WRP(23605): wrp_sock_listen_bl: wrp_sock_listen_bl : fd 32 127.0.0.1:9050 backlog 1 I/BLZ20_WRAPPER(23605): __listen_prot_rfcomm: success D/BluetoothSocket.cpp(23605): ...bindListenNative(32) success I/DTUN_CLNT(21902): Client calling DTUN_METHOD_DM_ADD_SDP_REC (id 17) I/ (21889): DTUN_ReceiveCtrlMsg: [DTUN] Received message [BTLIF_DTUN_METHOD_CALL] 4354 I/ (21889): handle_method_call: handle_method_call :: received DTUN_METHOD_DM_ADD_SDP_REC (id 17), len 270 I/ (21889): btapp_bts_convert_rc_chan_to_scn: found scn 4 I/BTL-IFS (21889): send_ctrl_msg: [BTL_IFS CTRL] send BTLIF_DTUN_SIGNAL_EVT (CTRL) 12 pbytes (hdl 10) I/DTUN_CLNT(21902): dtun-rx signal [DTUN_SIG_DM_SDP_REC_HANDLE] (id 50) len 14 I/DTUN_HCID(21902): dtun_dm_sig_sdp_rec_handle: handle = 0x10006 D/BluetoothService(19147): new handle 0 I/BluetoothZephyr(23605): MESSAGE_STATE_CHANGE: 1 I/BluetoothZephyr(23605): Unable to connect device D/BluetoothZephyrService(23605): setState() 1 -> 1 D/BluetoothZephyrService(23605): BEGIN mAcceptThreadThread[Thread-9,5,main] D/BluetoothSocket(23605): accept D/BluetoothSocket.cpp(23605): acceptNative I/BluetoothZephyr(23605): MESSAGE_STATE_CHANGE: 1 D/WynexActivity(19215): <><><>ACTION ::android.intent.action.TIME_TICK D/LocationMasfClient(19147): getNetworkLocation(): Location not found in cache, making network request D/ProtoRequestListener(19147): requestFailed() I/power (19147): *** set_screen_state 0