title: Android Bluetooth IOException: Connection refused
body: <p>Note: also posted on <a href="https://groups.google.com/forum/?fromgroups=#!topic/android-scripting/UsPy3x4jvG0" rel="nofollow">https://groups.google.com/forum/?fromgroups=#!topic/android-scripting/UsPy3x4jvG0</a></p>
  
  <p>I am trying to connect to a Bluetooth RFCOMM device. I use sl4a and connect from a Python script. I have two android devices running the same Android version 2.3.4.</p>
  
  <p>On one device (Galaxy S2 with very close to stock kernel, rooted), the script runs fine and connect to the RFCOMM device. On the other device, an exotic Winmate E430T (specialized rugged Android phone with pretty low volume I suspect), I get a <code>java.io.IOException: Connection refused</code>.</p>
  
  <p>I tried running the example code <code>bluetooth_chat.py</code> with no success, that one is meant for Android to Android connection. I get the same error message, which would indicate the problem is not in my code but more the state of the Winmate phone (rooted or not, installed SW, configuration).</p>
  
  <p>Anyone has seen something similar? I saw the posts about unpair-repair, I tried that twice but it did not help. I also tried rebooting the Winmate after having installed Python and all modules.</p>
  
  <p>The code:</p>
  
  <pre><code>import android
  droid = android.Android()
  address = '00:12:F3:11:DC:D5'
  uuid = '00001101-0000-1000-8000-00805F9B34FB'
  droid.toggleBluetoothState(True)
  droid.bluetoothConnect(uuid, address)
  </code></pre>
  
  <p>Extract of logcat:</p>
  
  <pre><code>V/sl4a.JsonRpcServer:117(27913): Sent: {"error":null,"id":6,"result":{"which":"negative"}}
  V/sl4a.JsonRpcServer:74(27913): Received: {"params": [], "id": 7, "method": "bluetoothConnect"}
  I/ActivityManager( 1304): Starting: Intent { flg=0x18000000 cmp=com.googlecode.android_scripting/.activity.FutureActivity (has extras) } from pid 27913
  I/HK/LatinKeyboardBaseView( 1385): closing org.pocketworkstation.pckeyboard.LatinKeyboardView@407d4810
  D/sl4a.ConsoleActivity:761(27913): onResume called
  D/sl4a.ConsoleActivity:746(27913): onPause called
  V/sl4a.FutureActivity:50(27913): FutureActivity created.
  I/ActivityManager( 1304): Starting: Intent { cmp=com.googlecode.android_scripting/.activity.BluetoothDeviceList } from pid 27913
  E/BluetoothEventLoop.cpp( 1304): event_filter: Received signal org.bluez.Adapter:PropertyChanged from /org/bluez/23550/hci0
  V/BluetoothEventRedirector( 1862): Received android.bluetooth.adapter.action.DISCOVERY_STARTED
  I/HK/LatinKeyboardBaseView( 1385): closing org.pocketworkstation.pckeyboard.LatinKeyboardView@407d4810
  E/BluetoothEventLoop.cpp( 1304): event_filter: Received signal org.bluez.Adapter:DeviceFound from /org/bluez/23550/hci0
  D/BluetoothService( 1304): updateDeviceServiceChannelCache(00:12:F3:11:DC:D5)
  V/BluetoothEventRedirector( 1862): Received android.bluetooth.device.action.FOUND
  E/BluetoothEventLoop.cpp( 1304): event_filter: Received signal org.bluez.Adapter:DeviceFound from /org/bluez/23550/hci0
  D/BluetoothService( 1304): updateDeviceServiceChannelCache(0C:DF:A4:78:99:50)
  I/ActivityManager( 1304): Displayed com.googlecode.android_scripting/.activity.BluetoothDeviceList: +449ms (total +519ms)
  D/BluetoothService( 1304):  uuid(system): 00001105-0000-1000-8000-00805f9b34fb 3
  V/BluetoothEventRedirector( 1862): Received android.bluetooth.device.action.FOUND
  D/wpa_supplicant(19159): CMD: DRIVER RSSI-APPROX
  D/wpa_supplicant(19159): wpa_driver_tista_driver_cmd RSSI-APPROX
  D/wpa_supplicant(19159): rssi-approx command
  D/wpa_supplicant(19159): CMD: DRIVER LINKSPEED
  D/wpa_supplicant(19159): wpa_driver_tista_driver_cmd LINKSPEED
  D/wpa_supplicant(19159): Link Speed command
  D/wpa_supplicant(19159): buf LinkSpeed 54
  E/BluetoothEventLoop.cpp( 1304): event_filter: Received signal org.bluez.Adapter:PropertyChanged from /org/bluez/23550/hci0
  E/BluetoothService.cpp( 1304): stopDiscoveryNative: D-Bus error in StopDiscovery: org.bluez.Error.Failed (Invalid discovery session)
  V/BluetoothEventRedirector( 1862): Received android.bluetooth.adapter.action.DISCOVERY_FINISHED
  D/sl4a.ConsoleActivity$1:145(27913): Connected to TerminalManager and found bridges.size=1
  I/HK/LatinKeyboardBaseView( 1385): closing org.pocketworkstation.pckeyboard.LatinKeyboardView@407d4810
  D/sl4a.ConsoleActivity:761(27913): onResume called
  E/BluetoothEventLoop.cpp( 1304): event_filter: Received signal org.bluez.Device:PropertyChanged from /org/bluez/23550/hci0/dev_0C_DF_A4_78_99_50
  D/BluetoothService( 1304): updateDeviceServiceChannelCache(0C:DF:A4:78:99:50)
  D/BluetoothService( 1304):  uuid(system): 00001105-0000-1000-8000-00805f9b34fb 3
  D/BluetoothService( 1304):  uuid(application): 457807c0-4897-11df-9879-0800200c9a66 13
  D/BluetoothService( 1304): Making callback for 457807c0-4897-11df-9879-0800200c9a66 with result 13
  V/BluetoothEventRedirector( 1862): Received android.bleutooth.device.action.UUID
  E/sl4a.JsonRpcServer:101(27913): Invocation error.
  E/sl4a.JsonRpcServer:101(27913): java.io.IOException: Connection refused
  E/sl4a.JsonRpcServer:101(27913):    at android.bluetooth.BluetoothSocket.connectNative(Native Method)
  E/sl4a.JsonRpcServer:101(27913):    at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:204)
  E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.facade.BluetoothFacade.bluetoothConnect(BluetoothFacade.java:158)
  E/sl4a.JsonRpcServer:101(27913):    at java.lang.reflect.Method.invokeNative(Native Method)
  E/sl4a.JsonRpcServer:101(27913):    at java.lang.reflect.Method.invoke(Method.java:507)
  E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.jsonrpc.RpcReceiverManager.invoke(RpcReceiverManager.java:87)
  E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.facade.FacadeManager.invoke(FacadeManager.java:58)
  E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.rpc.MethodDescriptor.invoke(MethodDescriptor.java:109)
  E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.jsonrpc.JsonRpcServer.handleConnection(JsonRpcServer.java:99)
  E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.SimpleServer$ConnectionThread.run(SimpleServer.java:91)
  V/sl4a.JsonRpcServer:117(27913): Sent: {"error":"java.io.IOException: Connection refused","id":7,"result":null}
  V/sl4a.JsonRpcServer:74(27913): Received: {"params": [], "id": 8, "method": "bluetoothReadLine"}
  E/sl4a.JsonRpcServer:101(27913): Invocation error.
  E/sl4a.JsonRpcServer:101(27913): java.io.IOException: Bluetooth not ready for this connID.
  E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.facade.BluetoothFacade.getConnection(BluetoothFacade.java:95)
  E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.facade.BluetoothFacade.bluetoothReadLine(BluetoothFacade.java:231)
  E/sl4a.JsonRpcServer:101(27913):    at java.lang.reflect.Method.invokeNative(Native Method)
  E/sl4a.JsonRpcServer:101(27913):    at java.lang.reflect.Method.invoke(Method.java:507)
  E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.jsonrpc.RpcReceiverManager.invoke(RpcReceiverManager.java:87)
  E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.facade.FacadeManager.invoke(FacadeManager.java:58)
  E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.rpc.MethodDescriptor.invoke(MethodDescriptor.java:109)
  E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.jsonrpc.JsonRpcServer.handleConnection(JsonRpcServer.java:99)
  E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.SimpleServer$ConnectionThread.run(SimpleServer.java:91)
  V/sl4a.JsonRpcServer:117(27913): Sent: {"error":"java.io.IOException: Bluetooth not ready for this connID.","id":8,"result":null}
  V/sl4a.JsonRpcServer:74(27913): Received: {"params": ["Chat Received", null], "id": 9, "method": "dialogCreateAlert"}
  V/sl4a.JsonRpcServer:117(27913): Sent: {"error":null,"id":9,"result":null}
  V/sl4a.JsonRpcServer:74(27913): Received: {"params": ["Ok"], "id": 10, "method": "dialogSetPositiveButtonText"}
  V/sl4a.JsonRpcServer:117(27913): Sent: {"error":null,"id":10,"result":null}
  V/sl4a.JsonRpcServer:74(27913): Received: {"params": [], "id": 11, "method": "dialogShow"}
  I/ActivityManager( 1304): Starting: Intent { flg=0x18000000 cmp=com.googlecode.android_scripting/.activity.FutureActivity (has extras) } from pid 27913
  D/sl4a.ConsoleActivity:746(27913): onPause called
  </code></pre>
  
  <p>Edit 13/09/2012 09:55: I tried <code>Bluetooth Chat App</code> (BILL RAY) from the market and it allows my two phones to chat, I can connect from either side: the problem is possible to solve in Java at least. Still the <code>bluetooth_chat.py</code> example does not work.</p>
  
  <p>Edit 10:45: I tried from BeanShell still in SL4A with he same problem, works on my S2 and fails on my Winmate:</p>
  
  <p>code:</p>
  
  <pre><code>source("/sdcard/com.googlecode.bshforandroid/extras/bsh/android.bsh");
  droid = Android();
  droid.call("makeToast", "Hello, Android!");
  address = "00:12:F3:11:DC:E5";
  uuid = "00001101-0000-1000-8000-00805F9B34FB";
  droid.call("toggleBluetoothState","True");
  droid.call("bluetoothConnect",uuid, address);
  droid.call("makeToast", "Bye, Android!");
  </code></pre>
  
  <p>logcat is similar:</p>
  
  <pre><code>I/ActivityManager( 1305): Starting: Intent { act=android.bluetooth.adapter.action.REQUEST_ENABLE cmp=com.android.settings/.bluetooth.RequestPermissionActivity } from pid 7364
  D/dalvikvm( 7364): GC_CONCURRENT freed 1075K, 49% free 3716K/7239K, external 4198K/5242K, paused 2ms+14ms
  V/sl4a.JsonRpcServer:117( 7364): Sent: {"error":null,"id":0,"result":true}
  I/HK/LatinKeyboardBaseView( 1385): closing org.pocketworkstation.pckeyboard.LatinKeyboardView@4078a040
  V/sl4a.JsonRpcServer:74( 7364): Received: {"id":0,"method":"bluetoothConnect","params":["00001101-0000-1000-8000-00805F9B34FB","00:12:F3:11:DC:E5"]}
  E/BluetoothService.cpp( 1305): stopDiscoveryNative: D-Bus error in StopDiscovery: org.bluez.Error.Failed (Invalid discovery session)
  I/ActivityManager( 1305): Displayed com.googlecode.android_scripting/.activity.FutureActivity: +223ms
  I/HK/LatinKeyboardBaseView( 1385): closing org.pocketworkstation.pckeyboard.LatinKeyboardView@4078a040
  D/sl4a.ConsoleActivity:761( 7364): onResume called
  E/BluetoothEventLoop.cpp( 1305): event_filter: Received signal org.bluez.Device:PropertyChanged from /org/bluez/1804/hci0/dev_00_12_F3_11_DC_E5
  I/ActivityManager( 1305): Start proc com.google.android.carhome for broadcast com.google.android.carhome/.receiver.BluetoothLaunchReceiver: pid=7876 uid=10020 gids={3002, 3001}
  I/HK/LatinKeyboardBaseView( 1385): closing org.pocketworkstation.pckeyboard.LatinKeyboardView@4078a040
  I/ActivityThread( 7876): Pub com.google.android.carhome.config: com.google.android.carhome.CarHomeProvider
  D/BluetoothService( 1305): updateDeviceServiceChannelCache(00:12:F3:11:DC:E5)
  D/BluetoothService( 1305):  uuid(application): 00001101-0000-1000-8000-00805f9b34fb 1
  D/BluetoothService( 1305): Making callback for 00001101-0000-1000-8000-00805f9b34fb with result 1
  D/dalvikvm( 7364): GC_EXTERNAL_ALLOC freed 50K, 49% free 3698K/7239K, external 4198K/5242K, paused 131ms
  V/BluetoothEventRedirector( 7681): Received android.bleutooth.device.action.UUID
  I/BluetoothEventLoop.cpp( 1305): agent_event_filter: Received method org.bluez.Agent:OutOfBandAvailable
  I/sl4a.TerminalBridge:540( 7364): parentChanged() now width=133, height=34
  E/sl4a.JsonRpcServer:101( 7364): Invocation error.
  E/sl4a.JsonRpcServer:101( 7364): java.io.IOException: Connection refused
  E/sl4a.JsonRpcServer:101( 7364):    at android.bluetooth.BluetoothSocket.connectNative(Native Method)
  E/sl4a.JsonRpcServer:101( 7364):    at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:204)
  E/sl4a.JsonRpcServer:101( 7364):    at com.googlecode.android_scripting.facade.BluetoothFacade.bluetoothConnect(BluetoothFacade.java:158)
  E/sl4a.JsonRpcServer:101( 7364):    at java.lang.reflect.Method.invokeNative(Native Method)
  E/sl4a.JsonRpcServer:101( 7364):    at java.lang.reflect.Method.invoke(Method.java:507)
  E/sl4a.JsonRpcServer:101( 7364):    at com.googlecode.android_scripting.jsonrpc.RpcReceiverManager.invoke(RpcReceiverManager.java:87)
  E/sl4a.JsonRpcServer:101( 7364):    at com.googlecode.android_scripting.facade.FacadeManager.invoke(FacadeManager.java:58)
  E/sl4a.JsonRpcServer:101( 7364):    at com.googlecode.android_scripting.rpc.MethodDescriptor.invoke(MethodDescriptor.java:109)
  E/sl4a.JsonRpcServer:101( 7364):    at com.googlecode.android_scripting.jsonrpc.JsonRpcServer.handleConnection(JsonRpcServer.java:99)
  E/sl4a.JsonRpcServer:101( 7364):    at com.googlecode.android_scripting.SimpleServer$ConnectionThread.run(SimpleServer.java:91)
  V/sl4a.JsonRpcServer:117( 7364): Sent: {"error":"java.io.IOException: Connection refused","id":0,"result":null}
  </code></pre>