All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pedro Monjo Florit <pmonjo2000@yahoo.com>
To: bluez-users@lists.sourceforge.net
Subject: [Bluez-users] Re: SDP in Motorola phones
Date: Thu, 09 Mar 2006 11:49:48 +0100	[thread overview]
Message-ID: <4410084C.5050503@yahoo.com> (raw)
In-Reply-To: <1141751166.4258.12.camel@aeonflux.holtmann.net>

[-- Attachment #1: Type: text/plain, Size: 2240 bytes --]

Hi,

>> I am experiencing problems getting SDP information from some new 
>> Motorola phones (I am dealing with E770). Running "sdptool browse 
>> BDADDR", I get the attached hcidump. As it can be seen, after the SDP 
>> SSA request, the mobile phone does not respond any data and after 20 
>> seconds (the SDP timeout compiled in bluez-libs), sdptool issues an ACL 
>> disconnect. During this time, the phone freezes completely. If I want to 
>> get a specific service (say, OBEX), there are no problems.
>>
>>  From my understanding, the problem is that the Motorola phone does not 
>> deal correctly with the SDP query issued by bluez. I have been trying to 
>> debug sdptool and comparing to other implementations (Symbian seems to 
>> work OK with Motorola) but, as Marcel says, SDP is a horrible protocol.
>>
>> Has anybody experienced any similar problem?
> 
> this problem also exists on the RARZ V3x and I called it ByeByeMoto,
> because it stalls my complete phone. There can't be an easy workaround.
> It is a really serious bug from Motorola and they should provide free
> software upgrades to anyone. However I have no idea how they passed the
> Bluetooth qualification with these devices.

I have been trying to understand what is happening, in order to find a
workaround. I do not know what are the internal structures of the SDP
protocol and I could not follow sdp_service_search_attr_req().

In any case, I have seen that the SDP query created by Symbian works
perfectly on these Motorola phones. I have attached the hcidump's (raw
and decoded), if they could be of any use. The most important difference
is the SDP SSA packet.

Bluez:
< ACL data: handle 41 flags 0x02 dlen 24
      L2CAP(d): cid 0x0040 len 20 [psm 1]
          SDP SSA Req: tid 0x0 len 0xf
            pat uuid-16 0x1002 (PubBrwsGrp)
            max 65535
            aid(s) 0x0000 - 0xffff
            cont 00

Symbian:
  > ACL data: handle 41 flags 0x02 dlen 17
      L2CAP(d): cid 0x0040 len 13 [psm 1]
          SDP SS Req: tid 0x1 len 0x8
            pat uuid-16 0x1002 (PubBrwsGrp)
            max 65535
            cont 00

As it can be seen, tid and len are different and aid(s) is only in Bluez.

I hope that this can be useful.

Cheers,

Pedro


[-- Attachment #2: hcidump_R.txt --]
[-- Type: text/plain, Size: 3997 bytes --]

HCI sniffer - Bluetooth packet analyzer ver 1.18
device: hci0 snap_len: 1028 filter: 0xffffffff
> 04 04 0A DE DB EA 57 60 00 04 02 50 01 
< 01 09 04 07 DE DB EA 57 60 00 01 
> 04 0F 04 00 01 09 04 
> 04 03 0B 00 29 00 DE DB EA 57 60 00 01 00 
< 01 0D 08 04 29 00 0F 00 
> 04 20 07 DE DB EA 57 60 00 01 
> 04 0E 06 01 0D 08 00 29 00 
< 01 0F 04 04 29 00 18 CC 
> 04 0F 04 00 01 0F 04 
> 04 1D 05 00 29 00 18 CC 
> 02 29 20 0C 00 08 00 01 00 02 01 04 00 01 00 47 00 
< 02 29 20 10 00 0C 00 01 00 03 01 08 00 40 00 47 00 00 00 00 
  00 
> 04 13 05 01 29 00 01 00 
> 04 1B 03 29 00 05 
> 02 29 20 0C 00 08 00 01 00 04 02 04 00 40 00 00 00 
< 02 29 20 0E 00 0A 00 01 00 05 02 06 00 47 00 00 00 00 00 
< 02 29 20 0C 00 08 00 01 00 04 01 04 00 47 00 00 00 
> 04 13 05 01 29 00 01 00 
> 04 13 05 01 29 00 01 00 
> 02 29 20 0E 00 0A 00 01 00 05 01 06 00 40 00 00 00 00 00 
> 02 29 20 11 00 0D 00 40 00 02 00 01 00 08 35 03 19 10 02 FF 
  FF 00 
< 02 29 20 22 00 1E 00 47 00 03 00 01 00 19 00 05 00 05 00 00 
  00 00 00 01 00 00 00 01 00 01 00 01 00 02 00 01 00 03 00 
> 04 13 05 01 29 00 01 00 
> 02 29 20 17 00 13 00 40 00 04 00 02 00 0E 00 00 00 00 04 00 
  35 05 0A 00 00 FF FF 00 
< 02 29 20 9A 00 96 00 47 00 05 00 02 00 91 00 8E 35 8C 09 00 
  00 0A 00 00 00 00 09 00 01 35 03 19 10 00 09 00 03 19 00 01 
  09 00 04 35 0B 35 09 19 01 00 09 00 01 09 00 01 09 00 05 35 
  03 19 10 02 09 00 06 35 09 09 65 6E 09 00 6A 09 01 00 09 01 
  00 25 0A 53 44 50 20 53 65 72 76 65 72 09 01 01 25 22 42 6C 
  75 65 74 6F 6F 74 68 20 73 65 72 76 69 63 65 20 64 69 73 63 
  6F 76 65 72 79 20 73 65 72 76 65 72 09 01 02 25 05 42 6C 75 
  65 5A 09 02 00 35 03 09 01 00 09 02 01 0A 44 0F E3 CF 00 
> 04 13 05 01 29 00 01 00 
> 02 29 20 17 00 13 00 40 00 04 00 03 00 0E 00 01 00 00 04 00 
  35 05 0A 00 00 FF FF 00 
< 02 29 20 7D 00 79 00 47 00 05 00 03 00 74 00 71 35 6F 09 00 
  00 0A 00 01 00 00 09 00 01 35 03 19 10 01 09 00 06 35 09 09 
  65 6E 09 00 6A 09 01 00 09 01 00 25 18 50 75 62 6C 69 63 20 
  42 72 6F 77 73 65 20 47 72 6F 75 70 20 52 6F 6F 74 09 01 01 
  25 1F 52 6F 6F 74 20 6F 66 20 70 75 62 6C 69 63 20 62 72 6F 
  77 73 65 20 68 69 65 72 61 72 63 68 79 09 01 02 25 05 42 6C 
  75 65 5A 09 02 00 19 10 02 00 
> 04 13 05 01 29 00 01 00 
> 02 29 20 17 00 13 00 40 00 04 00 04 00 0E 00 01 00 01 04 00 
  35 05 0A 00 00 FF FF 00 
< 02 29 20 92 00 8E 00 47 00 05 00 04 00 89 00 86 35 84 09 00 
  00 0A 00 01 00 01 09 00 01 35 03 19 11 05 09 00 04 35 11 35 
  03 19 01 00 35 05 19 00 03 08 03 35 03 19 00 08 09 00 05 35 
  03 19 10 02 09 00 09 35 08 35 06 19 11 05 09 01 00 09 01 00 
  25 10 4F 62 65 78 20 50 75 73 68 20 53 65 72 76 65 72 09 01 
  01 25 1C 4B 44 45 20 4F 42 45 58 20 4F 62 6A 65 63 74 20 50 
  75 73 68 20 53 65 72 76 69 63 65 09 03 03 35 0E 08 FF 08 01 
  08 02 08 03 08 04 08 05 08 06 00 
> 04 13 05 01 29 00 01 00 
> 02 29 20 17 00 13 00 40 00 04 00 05 00 0E 00 01 00 02 04 00 
  35 05 0A 00 00 FF FF 00 
< 02 29 20 6F 00 6B 00 47 00 05 00 05 00 66 00 63 35 61 09 00 
  00 0A 00 01 00 02 09 00 01 35 03 19 11 01 09 00 04 35 0C 35 
  03 19 01 00 35 05 19 00 03 08 05 09 00 05 35 03 19 10 02 09 
  01 00 25 0D 4B 42 74 53 65 72 69 61 6C 43 68 61 74 09 01 01 
  25 21 4B 44 45 20 42 6C 75 65 74 6F 6F 74 68 20 53 65 72 69 
  61 6C 20 43 68 61 74 20 53 65 72 76 69 63 65 00 
> 04 13 05 01 29 00 01 00 
> 02 29 20 17 00 13 00 40 00 04 00 06 00 0E 00 01 00 03 04 00 
  35 05 0A 00 00 FF FF 00 
< 02 29 20 85 00 81 00 47 00 05 00 06 00 7C 00 79 35 77 09 00 
  00 0A 00 01 00 03 09 00 01 35 03 19 11 01 09 00 04 35 0C 35 
  03 19 01 00 35 05 19 00 03 08 1B 09 00 05 35 03 19 10 02 09 
  01 00 25 12 4B 44 45 20 42 65 6D 75 73 65 64 20 53 65 72 76 
  65 72 09 01 01 25 32 4B 44 45 20 53 65 72 76 65 72 20 66 6F 
  72 20 74 68 65 20 42 65 6D 75 73 65 64 20 72 65 6D 6F 74 65 
  20 63 6F 6E 74 72 6F 6C 20 70 72 6F 74 6F 63 6F 6C 00 
> 04 13 05 01 29 00 01 00 
> 02 29 20 0C 00 08 00 01 00 06 03 04 00 40 00 47 00 
< 02 29 20 0C 00 08 00 01 00 07 03 04 00 40 00 47 00 
> 04 13 05 01 29 00 01 00 


[-- Attachment #3: hcidump_X_V.txt --]
[-- Type: text/plain, Size: 8272 bytes --]

> HCI Event: Connect Request (0x04) plen 10
    bdaddr 00:60:57:EA:DB:DE class 0x500204 type ACL
< HCI Command: Accept Connection Request (0x01|0x0009) plen 7
    bdaddr 00:60:57:EA:DB:DE role 0x01
    Role: Slave
> HCI Event: Command Status (0x0f) plen 4
    Accept Connection Request (0x01|0x0009) status 0x00 ncmd 1
> HCI Event: Connect Complete (0x03) plen 11
    status 0x00 handle 41 bdaddr 00:60:57:EA:DB:DE type ACL encrypt 0x00
< HCI Command: Write Link Policy Settings (0x02|0x000d) plen 4
    handle 41 policy 0x0f
    Link policy: RSWITCH HOLD SNIFF PARK 
> HCI Event: Page Scan Repetition Mode Change (0x20) plen 7
  0000: de db ea 57 60 00 01                              ...W`..
> HCI Event: Command Complete (0x0e) plen 6
    Write Link Policy Settings (0x02|0x000d) ncmd 1
    status 0x00 handle 41
< HCI Command: Change Connection Packet Type (0x01|0x000f) plen 4
    handle 41 ptype 0xcc18
    Packet type: DM1 DM3 DM5 DH1 DH3 DH5 
  0000: 29 00 18 cc                                       )...
> HCI Event: Command Status (0x0f) plen 4
    Change Connection Packet Type (0x01|0x000f) status 0x00 ncmd 1
> HCI Event: Connection Packet Type Changed (0x1d) plen 5
    status 0x00 handle 41 ptype 0xcc18
    Packet type: DM1 DM3 DM5 DH1 DH3 DH5 
> ACL data: handle 41 flags 0x02 dlen 12
    L2CAP(s): Connect req: psm 1 scid 0x0045
< ACL data: handle 41 flags 0x02 dlen 16
    L2CAP(s): Connect rsp: dcid 0x0040 scid 0x0045 result 0 status 0
      Connection successful
> HCI Event: Number of Completed Packets (0x13) plen 5
    handle 41
> HCI Event: Max Slots Change (0x1b) plen 3
  0000: 29 00 05                                          )..
> ACL data: handle 41 flags 0x02 dlen 12
    L2CAP(s): Config req: dcid 0x0040 flags 0x00 clen 0
< ACL data: handle 41 flags 0x02 dlen 14
    L2CAP(s): Config rsp: scid 0x0045 flags 0x00 result 0 clen 0
      Success
< ACL data: handle 41 flags 0x02 dlen 12
    L2CAP(s): Config req: dcid 0x0045 flags 0x00 clen 0
> HCI Event: Number of Completed Packets (0x13) plen 5
    handle 41
> HCI Event: Number of Completed Packets (0x13) plen 5
    handle 41
> ACL data: handle 41 flags 0x02 dlen 14
    L2CAP(s): Config rsp: scid 0x0040 flags 0x00 result 0 clen 0
      Success
> ACL data: handle 41 flags 0x02 dlen 17
    L2CAP(d): cid 0x0040 len 13 [psm 1]
        SDP SS Req: tid 0x1 len 0x8
          pat uuid-16 0x1002 (PubBrwsGrp)
          max 65535
          cont 00
< ACL data: handle 41 flags 0x02 dlen 34
    L2CAP(d): cid 0x0045 len 30 [psm 1]
        SDP SS Rsp: tid 0x1 len 0x19
          count 5
          handles 0x0 0x10000 0x10001 0x10002 0x10003
          cont 00
> HCI Event: Number of Completed Packets (0x13) plen 5
    handle 41
> ACL data: handle 41 flags 0x02 dlen 23
    L2CAP(d): cid 0x0040 len 19 [psm 1]
        SDP SA Req: tid 0x2 len 0xe
          handle 0x0
          max 1024
          aid(s) 0x0000 - 0xffff
          cont 00
< ACL data: handle 41 flags 0x02 dlen 154
    L2CAP(d): cid 0x0045 len 150 [psm 1]
        SDP SA Rsp: tid 0x2 len 0x91
          count 142
          aid 0x0000 (SrvRecHndl)
             uint 0x0
          aid 0x0001 (SrvClassIDList)
             < uuid-16 0x1000 (SDServer) >
          aid 0x0003 (SrvID)
             uuid-16 0x0001 (SDP)
          aid 0x0004 (ProtocolDescList)
             < < uuid-16 0x0100 (L2CAP) uint 0x1 uint 0x1 > >
          aid 0x0005 (BrwGrpList)
             < uuid-16 0x1002 (PubBrwsGrp) >
          aid 0x0006 (LangBaseAttrIDList)
             < uint 0x656e uint 0x6a uint 0x100 >
          aid 0x0100 (SrvName)
             str "SDP Server"
          aid 0x0101 (SrvDesc)
             str "Bluetooth service discovery server"
          aid 0x0102 (ProviderName)
             str "BlueZ"
          aid 0x0200 (VersionNumList)
             < uint 0x100 >
          aid 0x0201 (SrvDBState)
             uint 0x440fe3cf
          cont 00
> HCI Event: Number of Completed Packets (0x13) plen 5
    handle 41
> ACL data: handle 41 flags 0x02 dlen 23
    L2CAP(d): cid 0x0040 len 19 [psm 1]
        SDP SA Req: tid 0x3 len 0xe
          handle 0x10000
          max 1024
          aid(s) 0x0000 - 0xffff
          cont 00
< ACL data: handle 41 flags 0x02 dlen 125
    L2CAP(d): cid 0x0045 len 121 [psm 1]
        SDP SA Rsp: tid 0x3 len 0x74
          count 113
          aid 0x0000 (SrvRecHndl)
             uint 0x10000
          aid 0x0001 (SrvClassIDList)
             < uuid-16 0x1001 (BrwsGrpDesc) >
          aid 0x0006 (LangBaseAttrIDList)
             < uint 0x656e uint 0x6a uint 0x100 >
          aid 0x0100 (SrvName)
             str "Public Browse Group Root"
          aid 0x0101 (SrvDesc)
             str "Root of public browse hierarchy"
          aid 0x0102 (ProviderName)
             str "BlueZ"
          aid 0x0200 (VersionNumList)
             uuid-16 0x1002 (PubBrwsGrp)
          cont 00
> HCI Event: Number of Completed Packets (0x13) plen 5
    handle 41
> ACL data: handle 41 flags 0x02 dlen 23
    L2CAP(d): cid 0x0040 len 19 [psm 1]
        SDP SA Req: tid 0x4 len 0xe
          handle 0x10001
          max 1024
          aid(s) 0x0000 - 0xffff
          cont 00
< ACL data: handle 41 flags 0x02 dlen 146
    L2CAP(d): cid 0x0045 len 142 [psm 1]
        SDP SA Rsp: tid 0x4 len 0x89
          count 134
          aid 0x0000 (SrvRecHndl)
             uint 0x10001
          aid 0x0001 (SrvClassIDList)
             < uuid-16 0x1105 (OBEXObjPush) >
          aid 0x0004 (ProtocolDescList)
             < < uuid-16 0x0100 (L2CAP) > <
             uuid-16 0x0003 (RFCOMM) uint 0x3 > <
             uuid-16 0x0008 (OBEX) > >
          aid 0x0005 (BrwGrpList)
             < uuid-16 0x1002 (PubBrwsGrp) >
          aid 0x0009 (BTProfileDescList)
             < < uuid-16 0x1105 (OBEXObjPush) uint 0x100 > >
          aid 0x0100 (SrvName)
             str "Obex Push Server"
          aid 0x0101 (SrvDesc)
             str "KDE OBEX Object Push Service"
          aid 0x0303 (SuppFormatsList)
             < uint 0xff uint 0x1 uint 0x2 uint 0x3 uint 0x4 uint 0x5 uint 0x6 >
          cont 00
> HCI Event: Number of Completed Packets (0x13) plen 5
    handle 41
> ACL data: handle 41 flags 0x02 dlen 23
    L2CAP(d): cid 0x0040 len 19 [psm 1]
        SDP SA Req: tid 0x5 len 0xe
          handle 0x10002
          max 1024
          aid(s) 0x0000 - 0xffff
          cont 00
< ACL data: handle 41 flags 0x02 dlen 111
    L2CAP(d): cid 0x0045 len 107 [psm 1]
        SDP SA Rsp: tid 0x5 len 0x66
          count 99
          aid 0x0000 (SrvRecHndl)
             uint 0x10002
          aid 0x0001 (SrvClassIDList)
             < uuid-16 0x1101 (SP) >
          aid 0x0004 (ProtocolDescList)
             < < uuid-16 0x0100 (L2CAP) > <
             uuid-16 0x0003 (RFCOMM) uint 0x5 > >
          aid 0x0005 (BrwGrpList)
             < uuid-16 0x1002 (PubBrwsGrp) >
          aid 0x0100 (SrvName)
             str "KBtSerialChat"
          aid 0x0101 (SrvDesc)
             str "KDE Bluetooth Serial Chat Service"
          cont 00
> HCI Event: Number of Completed Packets (0x13) plen 5
    handle 41
> ACL data: handle 41 flags 0x02 dlen 23
    L2CAP(d): cid 0x0040 len 19 [psm 1]
        SDP SA Req: tid 0x6 len 0xe
          handle 0x10003
          max 1024
          aid(s) 0x0000 - 0xffff
          cont 00
< ACL data: handle 41 flags 0x02 dlen 133
    L2CAP(d): cid 0x0045 len 129 [psm 1]
        SDP SA Rsp: tid 0x6 len 0x7c
          count 121
          aid 0x0000 (SrvRecHndl)
             uint 0x10003
          aid 0x0001 (SrvClassIDList)
             < uuid-16 0x1101 (SP) >
          aid 0x0004 (ProtocolDescList)
             < < uuid-16 0x0100 (L2CAP) > <
             uuid-16 0x0003 (RFCOMM) uint 0x1b > >
          aid 0x0005 (BrwGrpList)
             < uuid-16 0x1002 (PubBrwsGrp) >
          aid 0x0100 (SrvName)
             str "KDE Bemused Server"
          aid 0x0101 (SrvDesc)
             str "KDE Server for the Bemused remote control protocol"
          cont 00
> HCI Event: Number of Completed Packets (0x13) plen 5
    handle 41
> ACL data: handle 41 flags 0x02 dlen 12
    L2CAP(s): Disconn req: dcid 0x0040 scid 0x0045
< ACL data: handle 41 flags 0x02 dlen 12
    L2CAP(s): Disconn rsp: dcid 0x0040 scid 0x0045
> HCI Event: Number of Completed Packets (0x13) plen 5
    handle 41


      reply	other threads:[~2006-03-09 10:49 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-03-07 16:27 [Bluez-users] SDP in Motorola phones Pedro Monjo Florit
2006-03-07 17:06 ` Marcel Holtmann
2006-03-09 10:49   ` Pedro Monjo Florit [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4410084C.5050503@yahoo.com \
    --to=pmonjo2000@yahoo.com \
    --cc=bluez-users@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.