Reputation: 39539
I am having problems with bluetooth SPP on a samsung galaxy note with android 2.3.6 - it works for a while but suddenly the connection is terminated - works continous on other phones. Here the part of the log where it happens
D/BLZ20_ASOCKWRP(11288): asocket_read
I/BLZ20_WRAPPER(11288): blz20_wrp_poll: nfds 2, timeout -1 ms
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: transp poll : (fd 46) returned r_ev [POLLIN ] (0x1)
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: return 1
D/BLZ20_WRAPPER(11288): blz20_wrp_read: read 43 bytes out of 43 on fd 46
D/BLZ20_ASOCKWRP(11288): asocket_write
I/BLZ20_WRAPPER(11288): blz20_wrp_poll: nfds 2, timeout -1 ms
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: transp poll : (fd 46) returned r_ev [POLLOUT ] (0x4)
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: return 1
D/BLZ20_WRAPPER(11288): blz20_wrp_write: wrote 10 bytes out of 10 on fd 46
I//system/bin/btld(11351): btlif_bts_api_data_cb: btlif_bts_api_data_cb : hdl 35, len 10
I//system/bin/btld(11351): bts_alloc_buf: hdr:0x405241a4, max 1712, offset 20, len 0
I//system/bin/btld(11351): bts_alloc_buf: peer mtu 127
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_WRITE_EVT
I//system/bin/btld(11351): rfc_setup_rx_buf: pushed in queue p_buf #0: 0x405241a4, len:0, offset:20
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
I/BluetoothPolicyService( 2767): getBluetoothDataTransferAllowed
D/BLZ20_ASOCKWRP(11288): asocket_read
I/BLZ20_WRAPPER(11288): blz20_wrp_poll: nfds 2, timeout -1 ms
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: transp poll : (fd 46) returned r_ev [POLLIN ] (0x1)
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: return 1
D/BLZ20_WRAPPER(11288): blz20_wrp_read: read 9 bytes out of 9 on fd 46
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
I/BluetoothPolicyService( 2767): getBluetoothDataTransferAllowed
D/BLZ20_ASOCKWRP(11288): asocket_read
I/BLZ20_WRAPPER(11288): blz20_wrp_poll: nfds 2, timeout -1 ms
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: transp poll : (fd 46) returned r_ev [POLLIN ] (0x1)
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: return 1
D/BLZ20_WRAPPER(11288): blz20_wrp_read: read 67 bytes out of 67 on fd 46
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
I/BluetoothPolicyService( 2767): getBluetoothDataTransferAllowed
D/BLZ20_ASOCKWRP(11288): asocket_read
I/BLZ20_WRAPPER(11288): blz20_wrp_poll: nfds 2, timeout -1 ms
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: transp poll : (fd 46) returned r_ev [POLLIN ] (0x1)
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: return 1
D/BLZ20_WRAPPER(11288): blz20_wrp_read: read 69 bytes out of 69 on fd 46
D/BLZ20_ASOCKWRP(11288): asocket_write
I/BLZ20_WRAPPER(11288): blz20_wrp_poll: nfds 2, timeout -1 ms
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: transp poll : (fd 46) returned r_ev [POLLOUT ] (0x4)
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: return 1
D/BLZ20_WRAPPER(11288): blz20_wrp_write: wrote 10 bytes out of 10 on fd 46
I//system/bin/btld(11351): btlif_bts_api_data_cb: btlif_bts_api_data_cb : hdl 35, len 10
I//system/bin/btld(11351): bts_alloc_buf: hdr:0x405370b0, max 1712, offset 20, len 0
I//system/bin/btld(11351): bts_alloc_buf: peer mtu 127
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_WRITE_EVT
I//system/bin/btld(11351): rfc_setup_rx_buf: pushed in queue p_buf #0: 0x405370b0, len:0, offset:20
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
I/BluetoothPolicyService( 2767): getBluetoothDataTransferAllowed
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
D/BLZ20_ASOCKWRP(11288): asocket_read
I/BLZ20_WRAPPER(11288): blz20_wrp_poll: nfds 2, timeout -1 ms
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: transp poll : (fd 46) returned r_ev [POLLIN ] (0x1)
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: return 1
D/BLZ20_WRAPPER(11288): blz20_wrp_read: read 65 bytes out of 65 on fd 46
I/BluetoothPolicyService( 2767): getBluetoothDataTransferAllowed
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
D/BLZ20_ASOCKWRP(11288): asocket_read
I/BLZ20_WRAPPER(11288): blz20_wrp_poll: nfds 2, timeout -1 ms
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: transp poll : (fd 46) returned r_ev [POLLIN ] (0x1)
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: return 1
D/BLZ20_WRAPPER(11288): blz20_wrp_read: read 0 bytes out of 0 on fd 46
I/BLZ20_WRAPPER(11288): blz20_wrp_read: connection aborted
D/BLZ20_WRAPPER(11288): blz20_wrp_read: set errno 103 (Software caused connection abort) l.1910
D/BLZ20_ASOCKWRP(11288): asocket_abort [46,47,48]
I/BLZ20_WRAPPER(11288): blz20_wrp_shutdown: s 46, how 2
D/BLZ20_WRAPPER(11288): blz20_wrp_shutdown: fd (-1:46), bta 2, rc 1, wflags 0x800, cflags 0x0, port 9050
I/BLZ20_WRAPPER(11288): blz20_wrp_shutdown: shutdown socket
D/BLZ20_WRAPPER(11288): blz20_wrp_write: wrote 1 bytes out of 1 on fd 48
D/BLZ20_ASOCKWRP(11288): asocket_destroy
D/BLZ20_ASOCKWRP(11288): asocket_abort [46,47,48]
I/BLZ20_WRAPPER(11288): blz20_wrp_shutdown: s 46, how 2
D/BLZ20_WRAPPER(11288): blz20_wrp_shutdown: fd (-1:46), bta 2, rc 1, wflags 0x800, cflags 0x0, port 9050
I/BLZ20_WRAPPER(11288): blz20_wrp_shutdown: shutdown socket
D/BLZ20_WRAPPER(11288): blz20_wrp_write: wrote 1 bytes out of 1 on fd 48
I/BLZ20_WRAPPER(11288): blz20_wrp_close: s 48
D/BLZ20_WRAPPER(11288): blz20_wrp_close: std close (48)
I/BLZ20_WRAPPER(11288): blz20_wrp_close: s 47
D/BLZ20_WRAPPER(11288): blz20_wrp_close: std close (47)
I/BLZ20_WRAPPER(11288): blz20_wrp_close: s 46
D/BLZ20_WRAPPER(11288): blz20_wrp_close: fd (-1:46), bta 2, rc 1, wflags 0x800, cflags 0x0, port 9050
Upvotes: 3
Views: 1436
Reputation: 3099
a bit more detail that i've stumbled upon. this appears to be related to the amount of spam the samsung BT stack generates. I have a BT device that generates ~10.5k of data per second. when connected to a samsung device that has this issue, i only get about 3k of data per second. eventually the stack just crashes. i know logging is expensive on android devices, and doing what ligi suggests decreases the amount of messages generated by the stack; i'm thinking this is the root cause.
in my case, wrapping the stream i was reading from with a BufferedInputStream
seems to have solved the problem, and gotten me back to 10.5 k/s.
Upvotes: 0
Reputation: 39539
The problem was that I did subsequent read-calls too often without data being available. While this is working well on most phones ( read just returns 0 bytes read ) - this fails on some Samsung phones - a solution is to check via available() if there is actually data available before doing the read.
Upvotes: 4