Bluetooth Secureaccept() Failed, Nexus 7, Android 4.2.2

android-4.2-jelly-bean, bluetooth, nexus-7, sockets

Solution

Check out my question. android bluetooth can't connect

Looks like its a problem with Android itself, and not your code.

Problem

I am running the Bluetooth Chat sample from the Android SDK 4.2 sample pack with no modifications to the code. My target is a Nexus 7 running Android 4.2.2. I get these errors as soon as I attempt a Secure Connect to a paired device. Connect Insecure also fails, resulting in similar errors. Occasionally, after I have restarted BT, the connection will succeed. I have researched this and seen lots of references to BT probs on Android 4, but I thought they were supposed to have been fixed in subsequent 4.2 releases. The Nexus 7 is my only device so I wonder whether this happens on other devices. Is there a workaround for this problem? Thanks in advance for any guidance! UPDATE: After further investigation I found this link, which indicates that there is a leak in the BT resource stack, still present in 4.2.2, which can be resolved by manually stopping/restarting BT. Has anyone found a programmatic workaround? ``` 04-16 08:50:48.505: E/BluetoothChat(28905): +++ ON CREATE +++ 04-16 08:50:48.535: E/BluetoothChat(28905): ++ ON START ++ 04-16 08:50:48.535: D/BluetoothChat(28905): setupChat() 04-16 08:50:48.535: E/BluetoothChat(28905): + ON RESUME + 04-16 08:50:48.535: D/BluetoothChatService(28905): start 04-16 08:50:48.535: D/BluetoothChatService(28905): setState() 0 -> 1 04-16 08:50:48.545: W/BluetoothAdapter(28905): getBluetoothService() called with no BluetoothManagerCallback 04-16 08:50:48.545: D/BluetoothChatService(28905): Socket Type: SecureBEGIN mAcceptThreadThread[Thread-9834,5,main] 04-16 08:50:48.545: W/BluetoothAdapter(28905): getBluetoothService() called with no BluetoothManagerCallback 04-16 08:50:48.545: D/BluetoothChatService(28905): Socket Type: InsecureBEGIN mAcceptThreadThread[Thread-9835,5,main] 04-16 08:50:48.555: I/BluetoothChat(28905): MESSAGE_STATE_CHANGE: 1 04-16 08:50:48.615: D/libEGL(28905): loaded /system/lib/egl/libEGL_tegra.so 04-16 08:50:48.635: D/libEGL(28905): loaded /system/lib/egl/libGLESv1_CM_tegra.so 04-16 08:50:48.645: D/libEGL(28905): loaded /system/lib/egl/libGLESv2_tegra.so 04-16 08:50:48.675: D/OpenGLRenderer(28905): Enabling debug mode 0 04-16 08:52:08.625: E/BluetoothChat(28905): - ON PAUSE - 04-16 08:52:08.755: D/dalvikvm(28905): GC_CONCURRENT freed 134K, 4% free 7529K/7792K, paused 3ms+3ms, total 29ms 04-16 08:52:10.115: D/BluetoothChat(28905): onActivityResult -1 04-16 08:52:10.115: D/BluetoothChatService(28905): connect to: C8:D1:5E:2F:12:E8 04-16 08:52:10.115: D/BluetoothChatService(28905): setState() 1 -> 2 04-16 08:52:10.115: I/BluetoothChatService(28905): BEGIN mConnectThread SocketType:Secure 04-16 08:52:10.115: E/BluetoothChat(28905): + ON RESUME + 04-16 08:52:10.125: W/BluetoothAdapter(28905): getBluetoothService() called with no BluetoothManagerCallback 04-16 08:52:10.125: D/BluetoothSocket(28905): connect(), SocketState: INIT, mPfd: {ParcelFileDescriptor: FileDescriptor[54]} 04-16 08:52:10.135: I/BluetoothChat(28905): MESSAGE_STATE_CHANGE: 2 04-16 08:52:11.645: D/BluetoothChatService(28905): connected, Socket Type:Secure 04-16 08:52:11.645: D/BluetoothChatService(28905): Socket TypeSecurecancel Thread[AcceptThreadSecure,5,main] 04-16 08:52:11.645: D/BluetoothChatService(28905): Socket TypeInsecurecancel Thread[AcceptThreadInsecure,5,main] 04-16 08:52:11.645: D/BluetoothChatService(28905): create ConnectedThread: Secure 04-16 08:52:11.655: E/BluetoothChatService(28905): Socket Type: Insecureaccept() failed 04-16 08:52:11.655: E/BluetoothChatService(28905): java.io.IOException: read failed, socket might closed or timeout, read ret: -1 04-16 08:52:11.655: E/BluetoothChatService(28905): at android.bluetooth.BluetoothSocket.readAll(BluetoothSocket.java:492) 04-16 08:52:11.655: E/BluetoothChatService(28905): at android.bluetooth.BluetoothSocket.waitSocketSignal(BluetoothSocket.java:469) 04-16 08:52:11.655: E/BluetoothChatService(28905): at android.bluetooth.BluetoothSocket.accept(BluetoothSocket.java:393) 04-16 08:52:11.655: E/BluetoothChatService(28905): at android.bluetooth.BluetoothServerSocket.accept(BluetoothServerSocket.java:131) 04-16 08:52:11.655: E/BluetoothChatService(28905): at android.bluetooth.BluetoothServerSocket.accept(BluetoothServerSocket.java:117) 04-16 08:52:11.655: E/BluetoothChatService(28905): at com.example.android.BluetoothChat.BluetoothChatService$AcceptThread.run(BluetoothChatService.java:301) 04-16 08:52:11.655: D/BluetoothChatService(28905): setState() 2 -> 3 04-16 08:52:11.655: I/BluetoothChatService(28905): END mAcceptThread, socket Type: Insecure 04-16 08:52:11.655: E/BluetoothChatService(28905): Socket Type: Secureaccept() failed 04-16 08:52:11.655: E/BluetoothChatService(28905): java.io.IOException: read failed, socket might closed or timeout, read ret: -1 04-16 08:52:11.655: E/BluetoothChatService(28905): at android.bluetooth.BluetoothSocket.readAll(BluetoothSocket.java:492) 04-16 08:52:11.655: E/BluetoothChatService(28905): at android.bluetooth.BluetoothSocket.waitSocketSignal(BluetoothSocket.java:469) 04-16 08:52:11.655: E/BluetoothChatService(28905): at android.bluetooth.BluetoothSocket.accept(BluetoothSocket.java:393) 04-16 08:52:11.655: E/BluetoothChatService(28905): at android.bluetooth.BluetoothServerSocket.accept(BluetoothServerSocket.java:131) 04-16 08:52:11.655: E/BluetoothChatService(28905): at android.bluetooth.BluetoothServerSocket.accept(BluetoothServerSocket.java:117) 04-16 08:52:11.655: E/BluetoothChatService(28905): at com.example.android.BluetoothChat.BluetoothChatService$AcceptThread.run(BluetoothChatService.java:301) 04-16 08:52:11.655: I/BluetoothChatService(28905): END mAcceptThread, socket Type: Secure 04-16 08:52:11.655: I/BluetoothChatService(28905): BEGIN mConnectedThread 04-16 08:52:11.665: I/BluetoothChat(28905): MESSAGE_STATE_CHANGE: 3 04-16 08:52:36.985: E/BluetoothChat(28905): - ON PAUSE - 04-16 08:52:37.005: E/BluetoothChat(28905): -- ON STOP -- 04-16 08:52:37.015: D/BluetoothChatService(28905): stop 04-16 08:52:37.015: E/BluetoothChatService(28905): disconnected 04-16 08:52:37.015: E/BluetoothChatService(28905): java.io.IOException: bt socket closed, read return: -1 04-16 08:52:37.015: E/BluetoothChatService(28905): at android.bluetooth.BluetoothSocket.read(BluetoothSocket.java:416) 04-16 08:52:37.015: E/BluetoothChatService(28905): at android.bluetooth.BluetoothInputStream.read(BluetoothInputStream.java:96) 04-16 08:52:37.015: E/BluetoothChatService(28905): at java.io.InputStream.read(InputStream.java:163) 04-16 08:52:37.015: E/BluetoothChatService(28905): at com.example.android.BluetoothChat.BluetoothChatService$ConnectedThread.run(BluetoothChatService.java:454) 04-16 08:52:37.015: D/BluetoothChatService(28905): setState() 3 -> 0 04-16 08:52:37.015: E/BluetoothChat(28905): --- ON DESTROY --- 04-16 08:52:37.015: D/BluetoothChatService(28905): start 04-16 08:52:37.015: D/BluetoothChatService(28905): setState() 0 -> 1 04-16 08:52:37.025: W/BluetoothAdapter(28905): getBluetoothService() called with no BluetoothManagerCallback 04-16 08:52:37.045: D/BluetoothChatService(28905): Socket Type: SecureBEGIN mAcceptThreadThread[Thread-9842,5,main] 04-16 08:52:37.115: W/BluetoothAdapter(28905): getBluetoothService() called with no BluetoothManagerCallback 04-16 08:52:37.125: E/BluetoothChat(28905): +++ ON CREATE +++ 04-16 08:52:37.125: D/BluetoothChatService(28905): start 04-16 08:52:37.125: D/BluetoothChatService(28905): setState() 1 -> 1 04-16 08:52:37.125: D/BluetoothChatService(28905): Socket Type: InsecureBEGIN mAcceptThreadThread[Thread-9843,5,main] 04-16 08:52:37.155: E/BluetoothChat(28905): ++ ON START ++ 04-16 08:52:37.155: D/BluetoothChat(28905): setupChat() 04-16 08:52:37.155: E/BluetoothChat(28905): + ON RESUME + 04-16 08:52:37.155: D/BluetoothChatService(28905): start 04-16 08:52:37.155: D/BluetoothChatService(28905): setState() 0 -> 1 04-16 08:52:37.165: W/BluetoothAdapter(28905): getBluetoothService() called with no BluetoothManagerCallback 04-16 08:52:37.165: W/BluetoothAdapter(28905): getBluetoothService() called with no BluetoothManagerCallback 04-16 08:52:37.165: D/BluetoothChatService(28905): Socket Type: SecureBEGIN mAcceptThreadThread[Thread-9844,5,main] 04-16 08:52:37.175: D/BluetoothChatService(28905): Socket Type: InsecureBEGIN mAcceptThreadThread[Thread-9845,5,main] 04-16 08:52:37.215: I/BluetoothChat(28905): MESSAGE_STATE_CHANGE: 0 04-16 08:52:37.215: I/BluetoothChat(28905): MESSAGE_STATE_CHANGE: 1 04-16 08:52:37.225: I/BluetoothChat(28905): MESSAGE_STATE_CHANGE: 1 04-16 08:52:37.225: I/BluetoothChat(28905): MESSAGE_STATE_CHANGE: 1 ```

Original source

Related problems