Any Bluetooth fellow devs willing to try and give some hints maybe? :)

The updated version of this issue is at:
http://stackoverflow.com/questions/2660968/how-to-prevent-android-bluetooth-rfcomm-connection-from-dying-immediately-after

Cheers,
Max


On 18 April 2010 02:36, Max Gilead <max.gil...@gmail.com> wrote:

> Hi!
>
> I'm trying to connect to Zeemote (http://zeemote.com/) gaming controller
> from Moto Droid running 2.0.1 firmware. The test application below does
> connect to the device (LED flashes) but connection is dropped immediately. I
> can connect to the device perfectly fine using bluez tools (log attached as
> well).
>
> I'm quite at a loss here, I work on it for so long that I ran out of ideas
> so any help would be very much appreciated.
>
> Btw, looks like this issue is somewhat similar to
> http://groups.google.com/group/android-developers/browse_thread/thread/a7ff7771ae3be1c/6f8bb2bc0300806c?hl=en&lnk=gst&q=bluetooth+connecting#6f8bb2bc0300806c
>
> Thanks,
> Max
>
> =========================================== Code:
>
> package zee.test;
>
> import java.io.IOException;
> import java.io.InputStream;
> import java.util.UUID;
>
> import android.app.Activity;
> import android.bluetooth.BluetoothAdapter;
> import android.bluetooth.BluetoothDevice;
> import android.bluetooth.BluetoothSocket;
> import android.os.Bundle;
> import android.util.Log;
>
> public class ZeeTest extends Activity {
>     @Override
>     public void onCreate(Bundle savedInstanceState) {
>         super.onCreate(savedInstanceState);
>         setContentView(R.layout.main);
>         try {
>             test();
>         } catch (IOException e) {
>             e.printStackTrace();
>         }
>     }
>
>     public void test() throws IOException {
>         BluetoothDevice zee =
> BluetoothAdapter.getDefaultAdapter().getRemoteDevice("00:1C:4D:02:A6:55");
>         Log.d("ZeeTest", "++++ Creating socket");
>         BluetoothSocket sock =
> zee.createRfcommSocketToServiceRecord(UUID.fromString("8e1f0cf7-508f-4875-b62c-fbb67fd34812"));
>         Log.d("", "++++ Connecting");
>         sock.connect();
>         Log.d("", "++++ Connected");
>
>
>         final InputStream in = sock.getInputStream();
>         new Thread() {
>             @Override
>             public void run() {
>                 byte[] buffer = new byte[32];
>                 int bytes = 0;
>                 int x = 0;
>                 Log.d("", "++++ Listening...");
>                 while (x < 200) {
>                     x++;
>                     try {
>                         bytes = in.read(buffer);
>                         Log.d("ZeeTest", "++++ Read "+ bytes +" bytes");
>                     } catch (IOException e) {
>                         if (x % 50 == 0) {
>                             Log.d("", "Tried "+ x +" times ("+ bytes +")");
>                         }
>                         try { Thread.sleep(100); } catch
> (InterruptedException ie) {}
>                     }
>                 }
>                 Log.d("ZeeTest", "++++ Done: thread exit");
>             }
>         }.start();
>         Log.d("ZeeTest", "++++ Done: test()");
>     }
> }
>
>
> =========================================== Log:
>
> I/ActivityManager( 1169): Start proc zee.test for activity
> zee.test/.ZeeTest: pid=4294 uid=10084 gids={3002, 3001, 3003}
> I/dalvikvm( 4294): Debugger thread not active, ignoring DDM send
> (t=0x41504e4d l=38)
> D/dalvikvm( 4287): LinearAlloc 0x0 used 640700 of 5242880 (12%)
> I/dalvikvm( 4294): Debugger thread not active, ignoring DDM send
> (t=0x41504e4d l=20)
> D/ZeeTest ( 4294): ++++ Creating socket
> D/        ( 4294): ++++ Connecting
> E/BluetoothEventLoop.cpp( 1169): event_filter: Received signal
> org.bluez.Device:PropertyChanged from
> /org/bluez/1240/hci0/dev_00_1C_4D_02_A6_55
> I/usbd    ( 1068): process_usb_uevent_message(): buffer = add@
> /devices/virtual/bluetooth/hci0/hci0:1
> I/usbd    ( 1068): main(): call select(...)
> E/BluetoothEventLoop.cpp( 1169): event_filter: Received signal
> org.bluez.Adapter:DeviceFound from /org/bluez/1240/hci0
> V/BluetoothEventRedirector( 1242): Received
> android.bluetooth.device.action.FOUND
> V/BluetoothEventRedirector( 1242): Received
> android.bleutooth.device.action.UUID
> D/        ( 4294): ++++ Connected
> D/ZeeTest ( 4294): ++++ Done: test()
> D/        ( 4294): ++++ Listening...
> I/ActivityManager( 1169): Displayed activity zee.test/.ZeeTest: 2296 ms
> (total 2296 ms)
> E/BluetoothEventLoop.cpp( 1169): event_filter: Received signal
> org.bluez.Device:PropertyChanged from
> /org/bluez/1240/hci0/dev_00_1C_4D_02_A6_55
> I/usbd    ( 1068): process_usb_uevent_message(): buffer = remove@
> /devices/virtual/bluetooth/hci0/hci0:1
> I/usbd    ( 1068): main(): call select(...)
> V/BluetoothEventRedirector( 1242): Received
> android.bleutooth.device.action.UUID
> D/        ( 4294): Tried 50 times (0)
> D/        ( 4294): Tried 100 times (0)
> D/        ( 4294): Tried 150 times (0)
> D/        ( 4294): Tried 200 times (0)
> D/ZeeTest ( 4294): ++++ Done: thread exit
>
> =========================================== Terminal log:
>
> $ sdptool browse
> Inquiring ...
> Browsing 00:1C:4D:02:A6:55 ...
>
> $ sdptool records 00:1C:4D:02:A6:55
> Service Name: Zeemote
> Service RecHandle: 0x10015
> Service Class ID List:
>   UUID 128: 8e1f0cf7-508f-4875-b62c-fbb67fd34812
> Protocol Descriptor List:
>   "L2CAP" (0x0100)
>   "RFCOMM" (0x0003)
>     Channel: 1
> Language Base Attr List:
>   code_ISO639: 0x656e
>   encoding:    0x6a
>   base_offset: 0x100
>
> $ rfcomm connect /dev/tty10 00:1C:4D:02:A6:55
> Connected /dev/rfcomm0 to 00:1C:4D:02:A6:55 on channel 1
> Press CTRL-C for hangup
>
> # rfcomm show /dev/tty10
> rfcomm0: 00:1F:3A:E4:C8:40 -> 00:1C:4D:02:A6:55 channel 1 connected
> [reuse-dlc release-on-hup tty-attached]
>
> # cat /dev/tty10
> (nothing here)
>
> # hcidump
> HCI sniffer - Bluetooth packet analyzer ver 1.42
> device: hci0 snap_len: 1028 filter: 0xffffffff
> < HCI Command: Create Connection (0x01|0x0005) plen 13
> > HCI Event: Command Status (0x0f) plen 4
> > HCI Event: Connect Complete (0x03) plen 11
> < HCI Command: Read Remote Supported Features (0x01|0x001b) plen 2
> > HCI Event: Read Remote Supported Features (0x0b) plen 11
> < ACL data: handle 11 flags 0x02 dlen 10
>     L2CAP(s): Info req: type 2
> > HCI Event: Command Status (0x0f) plen 4
> > HCI Event: Page Scan Repetition Mode Change (0x20) plen 7
> > HCI Event: Max Slots Change (0x1b) plen 3
> < HCI Command: Remote Name Request (0x01|0x0019) plen 10
> > HCI Event: Command Status (0x0f) plen 4
> > ACL data: handle 11 flags 0x02 dlen 16
>     L2CAP(s): Info rsp: type 2 result 0
>       Extended feature mask 0x0000
> < ACL data: handle 11 flags 0x02 dlen 12
>     L2CAP(s): Connect req: psm 3 scid 0x0040
> > HCI Event: Number of Completed Packets (0x13) plen 5
> > ACL data: handle 11 flags 0x02 dlen 16
>     L2CAP(s): Connect rsp: dcid 0x04fb scid 0x0040 result 1 status 2
>       Connection pending - Authorization pending
> > HCI Event: Remote Name Req Complete (0x07) plen 255
> > ACL data: handle 11 flags 0x02 dlen 16
>     L2CAP(s): Connect rsp: dcid 0x04fb scid 0x0040 result 0 status 0
>       Connection successful
> < ACL data: handle 11 flags 0x02 dlen 16
>     L2CAP(s): Config req: dcid 0x04fb flags 0x00 clen 4
>       MTU 1013
> > ACL data: handle 11 flags 0x02 dlen 14
>     L2CAP(s): Config rsp: scid 0x0040 flags 0x00 result 0 clen 0
>       Success
> > ACL data: handle 11 flags 0x02 dlen 16
>     L2CAP(s): Config req: dcid 0x0040 flags 0x00 clen 4
>       MTU 1013
> < ACL data: handle 11 flags 0x02 dlen 18
>     L2CAP(s): Config rsp: scid 0x04fb flags 0x00 result 0 clen 4
>       MTU 1013
> < ACL data: handle 11 flags 0x02 dlen 8
>     L2CAP(d): cid 0x04fb len 4 [psm 3]
>       RFCOMM(s): SABM: cr 1 dlci 0 pf 1 ilen 0 fcs 0x1c
> > HCI Event: Number of Completed Packets (0x13) plen 5
> > ACL data: handle 11 flags 0x02 dlen 8
>     L2CAP(d): cid 0x0040 len 4 [psm 3]
>       RFCOMM(s): UA: cr 1 dlci 0 pf 1 ilen 0 fcs 0xd7
> < ACL data: handle 11 flags 0x02 dlen 18
>     L2CAP(d): cid 0x04fb len 14 [psm 3]
>       RFCOMM(s): PN CMD: cr 1 dlci 0 pf 0 ilen 10 fcs 0x70 mcc_len 8
>       dlci 2 frame_type 0 credit_flow 15 pri 7 ack_timer 0
>       frame_size 1008 max_retrans 0 credits 7
> > HCI Event: Number of Completed Packets (0x13) plen 5
> > ACL data: handle 11 flags 0x02 dlen 18
>     L2CAP(d): cid 0x0040 len 14 [psm 3]
>       RFCOMM(s): PN RSP: cr 0 dlci 0 pf 0 ilen 10 fcs 0xaa mcc_len 8
>       dlci 2 frame_type 0 credit_flow 14 pri 7 ack_timer 0
>       frame_size 1008 max_retrans 0 credits 0
> < ACL data: handle 11 flags 0x02 dlen 8
>     L2CAP(d): cid 0x04fb len 4 [psm 3]
>       RFCOMM(s): SABM: cr 1 dlci 2 pf 1 ilen 0 fcs 0x59
> > ACL data: handle 11 flags 0x02 dlen 8
>     L2CAP(d): cid 0x0040 len 4 [psm 3]
>       RFCOMM(s): UA: cr 1 dlci 2 pf 1 ilen 0 fcs 0x92
> < ACL data: handle 11 flags 0x02 dlen 12
>     L2CAP(d): cid 0x04fb len 8 [psm 3]
>       RFCOMM(s): MSC CMD: cr 1 dlci 0 pf 0 ilen 4 fcs 0x70 mcc_len 2
>       dlci 2 fc 0 rtc 1 rtr 1 ic 0 dv 1 b1 0 b2 0 b3 0 len 0
> > ACL data: handle 11 flags 0x02 dlen 12
>     L2CAP(d): cid 0x0040 len 8 [psm 3]
>       RFCOMM(s): MSC CMD: cr 0 dlci 0 pf 0 ilen 4 fcs 0xaa mcc_len 2
>       dlci 2 fc 0 rtc 1 rtr 1 ic 0 dv 0 b1 0 b2 0 b3 0 len 0
> < ACL data: handle 11 flags 0x02 dlen 12
>     L2CAP(d): cid 0x04fb len 8 [psm 3]
>       RFCOMM(s): MSC RSP: cr 1 dlci 0 pf 0 ilen 4 fcs 0x70 mcc_len 2
>       dlci 2 fc 0 rtc 1 rtr 1 ic 0 dv 0 b1 0 b2 0 b3 0 len 0
> > HCI Event: Number of Completed Packets (0x13) plen 5
> > ACL data: handle 11 flags 0x02 dlen 12
>     L2CAP(d): cid 0x0040 len 8 [psm 3]
>       RFCOMM(s): MSC RSP: cr 0 dlci 0 pf 0 ilen 4 fcs 0xaa mcc_len 2
>       dlci 2 fc 0 rtc 1 rtr 1 ic 0 dv 1 b1 0 b2 0 b3 0 len 0
> > ACL data: handle 11 flags 0x02 dlen 9
>     L2CAP(d): cid 0x0040 len 5 [psm 3]
>       RFCOMM(d): UIH: cr 0 dlci 2 pf 1 ilen 0 fcs 0x5c credits 1
> < ACL data: handle 11 flags 0x02 dlen 9
>     L2CAP(d): cid 0x04fb len 5 [psm 3]
>       RFCOMM(d): UIH: cr 1 dlci 2 pf 1 ilen 0 fcs 0x86 credits 33
> > HCI Event: Number of Completed Packets (0x13) plen 5
> > HCI Event: Role Change (0x12) plen 8
> > ACL data: handle 11 flags 0x02 dlen 17
> > ACL data: handle 11 flags 0x01 dlen 17
> > ACL data: handle 11 flags 0x01 dlen 17
> > ACL data: handle 11 flags 0x01 dlen 3
>     L2CAP(d): cid 0x0040 len 50 [psm 3]
>       RFCOMM(d): UIH: cr 0 dlci 2 pf 0 ilen 46 fcs 0x40
> > ACL data: handle 11 flags 0x02 dlen 16
>     L2CAP(d): cid 0x0040 len 12 [psm 3]
>       RFCOMM(d): UIH: cr 0 dlci 2 pf 0 ilen 8 fcs 0x40
> > ACL data: handle 11 flags 0x02 dlen 46
>     L2CAP(d): cid 0x0040 len 42 [psm 3]
>       RFCOMM(d): UIH: cr 0 dlci 2 pf 0 ilen 38 fcs 0x40
> > ACL data: handle 11 flags 0x02 dlen 46
>     L2CAP(d): cid 0x0040 len 42 [psm 3]
>       RFCOMM(d): UIH: cr 0 dlci 2 pf 0 ilen 38 fcs 0x40
> > ACL data: handle 11 flags 0x02 dlen 46
>     L2CAP(d): cid 0x0040 len 42 [psm 3]
>       RFCOMM(d): UIH: cr 0 dlci 2 pf 0 ilen 38 fcs 0x40
> > ACL data: handle 11 flags 0x02 dlen 46
>     L2CAP(d): cid 0x0040 len 42 [psm 3]
>       RFCOMM(d): UIH: cr 0 dlci 2 pf 0 ilen 38 fcs 0x40
> > ACL data: handle 11 flags 0x02 dlen 16
>     L2CAP(d): cid 0x0040 len 12 [psm 3]
>       RFCOMM(d): UIH: cr 0 dlci 2 pf 0 ilen 8 fcs 0x40
> > ACL data: handle 11 flags 0x02 dlen 16
>     L2CAP(d): cid 0x0040 len 12 [psm 3]
>       RFCOMM(d): UIH: cr 0 dlci 2 pf 0 ilen 8 fcs 0x40
> > ACL data: handle 11 flags 0x02 dlen 16
>     L2CAP(d): cid 0x0040 len 12 [psm 3]
>       RFCOMM(d): UIH: cr 0 dlci 2 pf 0 ilen 8 fcs 0x40
> > ACL data: handle 11 flags 0x02 dlen 16
>     L2CAP(d): cid 0x0040 len 12 [psm 3]
>       RFCOMM(d): UIH: cr 0 dlci 2 pf 0 ilen 8 fcs 0x40
> > ACL data: handle 11 flags 0x02 dlen 16
>     L2CAP(d): cid 0x0040 len 12 [psm 3]
>       RFCOMM(d): UIH: cr 0 dlci 2 pf 0 ilen 8 fcs 0x40
> > ACL data: handle 11 flags 0x02 dlen 16
>     L2CAP(d): cid 0x0040 len 12 [psm 3]
>       RFCOMM(d): UIH: cr 0 dlci 2 pf 0 ilen 8 fcs 0x40
> > ACL data: handle 11 flags 0x02 dlen 16
>     L2CAP(d): cid 0x0040 len 12 [psm 3]
>       RFCOMM(d): UIH: cr 0 dlci 2 pf 0 ilen 8 fcs 0x40
> > ACL data: handle 11 flags 0x02 dlen 16
>     L2CAP(d): cid 0x0040 len 12 [psm 3]
>       RFCOMM(d): UIH: cr 0 dlci 2 pf 0 ilen 8 fcs 0x40
> > HCI Event: Max Slots Change (0x1b) plen 3
> > HCI Event: Mode Change (0x14) plen 6
>
> ...events are received...
>
> disconnection sequence (device being shut down):
>
>
> > HCI Event: Mode Change (0x14) plen 6
> > ACL data: handle 11 flags 0x02 dlen 17
>     L2CAP(d): cid 0x0040 len 13 [psm 3]
>       RFCOMM(d): UIH: cr 0 dlci 2 pf 0 ilen 9 fcs 0x40
> > HCI Event: Max Slots Change (0x1b) plen 3
> > ACL data: handle 11 flags 0x02 dlen 8
>     L2CAP(d): cid 0x0040 len 4 [psm 3]
>       RFCOMM(s): DISC: cr 0 dlci 2 pf 1 ilen 0 fcs 0xd9
> < ACL data: handle 11 flags 0x02 dlen 8
>     L2CAP(d): cid 0x04fb len 4 [psm 3]
>       RFCOMM(s): UA: cr 0 dlci 2 pf 1 ilen 0 fcs 0xf3
> < ACL data: handle 11 flags 0x02 dlen 8
>     L2CAP(d): cid 0x04fb len 4 [psm 3]
>       RFCOMM(s): DISC: cr 1 dlci 0 pf 1 ilen 0 fcs 0xfd
> < ACL data: handle 11 flags 0x02 dlen 12
>     L2CAP(s): Disconn req: dcid 0x04fb scid 0x0040
> > HCI Event: Number of Completed Packets (0x13) plen 5
> > ACL data: handle 11 flags 0x02 dlen 8
>     L2CAP(d): cid 0x0040 len 4 [psm 3]
>       RFCOMM(s): UA: cr 1 dlci 0 pf 1 ilen 0 fcs 0xd7
> > ACL data: handle 11 flags 0x02 dlen 12
>     L2CAP(s): Disconn rsp: dcid 0x04fb scid 0x0040
> > HCI Event: Number of Completed Packets (0x13) plen 5
> < HCI Command: Disconnect (0x01|0x0006) plen 3
> > HCI Event: Command Status (0x0f) plen 4
> > HCI Event: Disconn Complete (0x05) plen 4
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to