From: Marco Trudel <mtrudel@gmx.ch>
To: bluez-users@lists.sourceforge.net
Subject: Re: [Bluez-users] error on connect
Date: Wed, 20 Apr 2005 14:17:26 +0200 [thread overview]
Message-ID: <42664856.3050502@gmx.ch> (raw)
In-Reply-To: <1113949928.2469.88.camel@pegasus>
[-- Attachment #1: Type: text/plain, Size: 3659 bytes --]
Marcel Holtmann wrote:
> Hi Marco,
>
>
>>>>- The ACL packet that cause the problem is sent before the connection is
>>>>etablished. This is ok and defined in the specification.
>>>
>>>this is not ok and can also not happen since you only get the connection
>>>handle from the connect complete event. In BlueZ this is indicated with
>>>the hci_proto_connect_cfm() and only at that time the L2CAP layer starts
>>>sending out its connect request. Please check the sender side again.
>>
>>yes. I got this wrong. this way it makes much more sense...
>
>
> please do a "hcidump -X -V" for the sender side, too. I like to look how
> the Broadcom responds here.
here they are.
I attached the listening ones again because I updated to hcidump1.20.
The listening dongle is the acer, the sending one the ednet.
>>>>- the broadcom dongle seem to don't handle this correct. they probably
>>>>suffer a race condition. so they may work or may not work.
>>>
>>>Maybe the stacks Broadcom tested their dongles with are needing some
>>>time before they can send out the first ACL data packet. Or they do
>>>other HCI tasks before they start L2CAP. However this is a problem with
>>>the dongle, because the ACL data packet is not allowed at that time.
>>
>>ok. that leads me to some questions:
>>- what would be the behaviour of the listening dongle if you fix the
>>flow control after this error occured?
>
>
> If this package really corrupts the internal HCI flow control states of
> BlueZ then this needs to be fixed. However this will not change anything
> of the behavior, because the L2CAP connect request packet will be still
> dropped.
I just found out that the listening dongle doesn't freeze. The connecting
dongle runs into a timeout and disconnects propertly. After that
connections are possible again.
>>- (just curious) How can you find out that this packet was processed too
>>early? does bluez always know the order of processed packets like the
>>hcidump shows?
>
>
> The hcidump order should match the kernel queue order. Nobody really
> verified this, but I doubt that there is a problem.
I'm sorry, I made a thinking mistake. This shure is not a problem...
>>- Are you interested in having this ACL datapacket queue you supposed
>>inside bluez (kernel)? respectively, did you mean to do this in the program?
>
> This must be done inside the kernel and it will be an ugly workaround.
Actually I think this isn't needed because everything's fine again after
the timeout.
>>and two comments:
>>- you told bluez might be too fast for ednet. actually bluez looks like
>>it's too fast for the nokia 6230 too. i've to wait 1 second before I
>>close a connection, else the mobile phone doesn't get all packets.
>>maybee this is a bigger problem (the speed thing)...
>
>
> I meant this in comparison to the Windows stacks. We will do the final
> setup of the ACL link (packet type etc.) at the same time the L2CAP
> layer already sends its first commands. This is because BlueZ is fully
> multi-threaded and not one stupid state machine for all layers thing.
>
>
>>- I made a try with windows. it played the listening part with the
>>broadcom dongle. Unfortunately i haven't a hcidump here, but from more
>>than 100 connection tries, every single one worked...
>>but as I said, this is not reliable because I don't know what windows is
>>doing in background...
>
>
> If this is the Widcomm stack you can look at it with Spylite. For the XP
> stack I have no idea how to do that without an USB sniffer.
It's a widcomm. But I think I can live with the timeout and will not check
what windows is exactly doing...
regards
Marco
[-- Attachment #2: hcidump1.20_connecting_failure.txt --]
[-- Type: text/plain, Size: 850 bytes --]
< HCI Command: Create Connection (0x01|0x0005) plen 13
bdaddr 00:02:72:C3:26:F5 ptype 0xcc18 rswitch 0x01 clkoffset 0x0000
Packet type: DM1 DM3 DM5 DH1 DH3 DH5
> HCI Event: Command Status (0x0f) plen 4
Create Connection (0x01|0x0005) status 0x00 ncmd 1
> HCI Event: Connect Complete (0x03) plen 11
status 0x00 handle 6 bdaddr 00:02:72:C3:26:F5 type ACL encrypt 0x00
< ACL data: handle 6 flags 0x02 dlen 12
L2CAP(s): Connect req: psm 3 scid 0x0040
< HCI Command: Write Link Policy Settings (0x02|0x000d) plen 4
handle 6 policy 0x0f
Link policy: RSWITCH HOLD SNIFF PARK
> HCI Event: Command Complete (0x0e) plen 6
Write Link Policy Settings (0x02|0x000d) ncmd 1
status 0x00 handle 6
> HCI Event: Number of Completed Packets (0x13) plen 5
handle 6
> HCI Event: Max Slots Change (0x1b) plen 3
handle 6 slots 5
[-- Attachment #3: hcidump1.20_connecting_success.txt --]
[-- Type: text/plain, Size: 4920 bytes --]
< HCI Command: Create Connection (0x01|0x0005) plen 13
bdaddr 00:02:72:C3:26:F5 ptype 0xcc18 rswitch 0x01 clkoffset 0x0000
Packet type: DM1 DM3 DM5 DH1 DH3 DH5
> HCI Event: Command Status (0x0f) plen 4
Create Connection (0x01|0x0005) status 0x00 ncmd 1
> HCI Event: Connect Complete (0x03) plen 11
status 0x00 handle 6 bdaddr 00:02:72:C3:26:F5 type ACL encrypt 0x00
< ACL data: handle 6 flags 0x02 dlen 12
L2CAP(s): Connect req: psm 3 scid 0x0040
< HCI Command: Write Link Policy Settings (0x02|0x000d) plen 4
handle 6 policy 0x0f
Link policy: RSWITCH HOLD SNIFF PARK
> HCI Event: Command Complete (0x0e) plen 6
Write Link Policy Settings (0x02|0x000d) ncmd 1
status 0x00 handle 6
> HCI Event: Number of Completed Packets (0x13) plen 5
handle 6
> ACL data: handle 6 flags 0x02 dlen 16
L2CAP(s): Connect rsp: dcid 0x0040 scid 0x0040 result 0 status 0
Connection successful
< ACL data: handle 6 flags 0x02 dlen 16
L2CAP(s): Config req: dcid 0x0040 flags 0x00 clen 4
MTU 1024
> HCI Event: Max Slots Change (0x1b) plen 3
handle 6 slots 5
> ACL data: handle 6 flags 0x02 dlen 14
L2CAP(s): Config rsp: scid 0x0040 flags 0x00 result 0 clen 0
Success
> ACL data: handle 6 flags 0x02 dlen 16
L2CAP(s): Config req: dcid 0x0040 flags 0x00 clen 4
MTU 1024
< ACL data: handle 6 flags 0x02 dlen 14
L2CAP(s): Config rsp: scid 0x0040 flags 0x00 result 0 clen 0
Success
< ACL data: handle 6 flags 0x02 dlen 8
L2CAP(d): cid 0x0040 len 4 [psm 3]
RFCOMM(s): SABM: cr 1 dlci 0 pf 1 ilen 0 fcs 0x1c
> ACL data: handle 6 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 6 flags 0x02 dlen 18
L2CAP(d): cid 0x0040 len 14 [psm 3]
RFCOMM(s): PN CMD: cr 1 dlci 0 pf 0 ilen 10 fcs 0x70 mcc_len 8
dlci 10 frame_type 0 credit_flow 15 pri 7 ack_timer 0
frame_size 1019 max_retrans 0 credits 7
> ACL data: handle 6 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 10 frame_type 0 credit_flow 14 pri 7 ack_timer 0
frame_size 1019 max_retrans 0 credits 7
< ACL data: handle 6 flags 0x02 dlen 8
L2CAP(d): cid 0x0040 len 4 [psm 3]
RFCOMM(s): SABM: cr 1 dlci 10 pf 1 ilen 0 fcs 0x8c
> ACL data: handle 6 flags 0x02 dlen 8
L2CAP(d): cid 0x0040 len 4 [psm 3]
RFCOMM(s): UA: cr 1 dlci 10 pf 1 ilen 0 fcs 0x47
< ACL data: handle 6 flags 0x02 dlen 12
L2CAP(d): cid 0x0040 len 8 [psm 3]
RFCOMM(s): MSC CMD: cr 1 dlci 0 pf 0 ilen 4 fcs 0x70 mcc_len 2
dlci 10 fc 0 rtc 1 rtr 1 ic 0 dv 1 b1 1 b2 1 b3 0 len 0
< ACL data: handle 6 flags 0x02 dlen 8
L2CAP(d): cid 0x0040 len 4 [psm 3]
RFCOMM(s): DISC: cr 1 dlci 10 pf 1 ilen 0 fcs 0x6d
> ACL data: handle 6 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 10 fc 0 rtc 1 rtr 1 ic 0 dv 1 b1 1 b2 1 b3 0 len 0
< ACL data: handle 6 flags 0x02 dlen 12
L2CAP(d): cid 0x0040 len 8 [psm 3]
RFCOMM(s): MSC RSP: cr 1 dlci 0 pf 0 ilen 4 fcs 0x70 mcc_len 2
dlci 10 fc 0 rtc 1 rtr 1 ic 0 dv 1 b1 1 b2 1 b3 0 len 0
> ACL data: handle 6 flags 0x02 dlen 8
L2CAP(d): cid 0x0040 len 4 [psm 3]
RFCOMM(s): DISC: cr 0 dlci 10 pf 1 ilen 0 fcs 0xc
< ACL data: handle 6 flags 0x02 dlen 8
L2CAP(d): cid 0x0040 len 4 [psm 3]
RFCOMM(s): UA: cr 0 dlci 10 pf 1 ilen 0 fcs 0x26
< ACL data: handle 6 flags 0x02 dlen 8
L2CAP(d): cid 0x0040 len 4 [psm 3]
RFCOMM(s): DISC: cr 1 dlci 0 pf 1 ilen 0 fcs 0xfd
> ACL data: handle 6 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 10 fc 0 rtc 1 rtr 1 ic 0 dv 1 b1 1 b2 1 b3 0 len 0
> HCI Event: Number of Completed Packets (0x13) plen 5
handle 6
< ACL data: handle 6 flags 0x02 dlen 12
L2CAP(s): Disconn req: dcid 0x0040 scid 0x0040
> ACL data: handle 6 flags 0x02 dlen 8
L2CAP(d): cid 0x0040 len 4 [psm 3]
RFCOMM(s): UA: cr 1 dlci 10 pf 1 ilen 0 fcs 0x47
> ACL data: handle 6 flags 0x02 dlen 8
L2CAP(d): cid 0x0040 len 4 [psm 3]
RFCOMM(s): DM: cr 1 dlci 10 pf 1 ilen 0 fcs 0xa6
> ACL data: handle 6 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 6 flags 0x02 dlen 12
L2CAP(s): Disconn rsp: dcid 0x0040 scid 0x0040
> HCI Event: Number of Completed Packets (0x13) plen 5
handle 6
< HCI Command: Disconnect (0x01|0x0006) plen 3
handle 6 reason 0x13
Reason: Remote User Terminated Connection
> HCI Event: Command Status (0x0f) plen 4
Disconnect (0x01|0x0006) status 0x00 ncmd 1
> HCI Event: Disconn Complete (0x05) plen 4
status 0x00 handle 6 reason 0x16
Reason: Connection Terminated by Local Host
[-- Attachment #4: hcidump1.20_listening_failure.txt --]
[-- Type: text/plain, Size: 1108 bytes --]
> HCI Event: Connect Request (0x04) plen 10
bdaddr 00:02:72:C3:F1:FE class 0x3e0100 type ACL
< HCI Command: Accept Connection Request (0x01|0x0009) plen 7
bdaddr 00:02:72:C3:F1:FE role 0x01
Role: Slave
> HCI Event: Command Status (0x0f) plen 4
Accept Connection Request (0x01|0x0009) status 0x00 ncmd 1
> ACL data: handle 7 flags 0x02 dlen 12
L2CAP(s): Connect req: psm 3 scid 0x0040
> HCI Event: Connect Complete (0x03) plen 11
status 0x00 handle 7 bdaddr 00:02:72:C3:F1:FE type ACL encrypt 0x00
< HCI Command: Write Link Policy Settings (0x02|0x000d) plen 4
handle 7 policy 0x0f
Link policy: RSWITCH HOLD SNIFF PARK
> HCI Event: Command Complete (0x0e) plen 6
Write Link Policy Settings (0x02|0x000d) ncmd 1
status 0x00 handle 7
< HCI Command: Change Connection Packet Type (0x01|0x000f) plen 4
handle 7 ptype 0xcc18
Packet type: DM1 DM3 DM5 DH1 DH3 DH5
> HCI Event: Command Status (0x0f) plen 4
Change Connection Packet Type (0x01|0x000f) status 0x0c ncmd 1
Error: Command Disallowed
> HCI Event: Max Slots Change (0x1b) plen 3
handle 7 slots 5
[-- Attachment #5: hcidump1.20_listening_success.txt --]
[-- Type: text/plain, Size: 4968 bytes --]
> HCI Event: Connect Request (0x04) plen 10
bdaddr 00:02:72:C3:F1:FE class 0x3e0100 type ACL
< HCI Command: Accept Connection Request (0x01|0x0009) plen 7
bdaddr 00:02:72:C3:F1:FE 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 7 bdaddr 00:02:72:C3:F1:FE type ACL encrypt 0x00
< HCI Command: Write Link Policy Settings (0x02|0x000d) plen 4
handle 7 policy 0x0f
Link policy: RSWITCH HOLD SNIFF PARK
> HCI Event: Command Complete (0x0e) plen 6
Write Link Policy Settings (0x02|0x000d) ncmd 1
status 0x00 handle 7
< HCI Command: Change Connection Packet Type (0x01|0x000f) plen 4
handle 7 ptype 0xcc18
Packet type: DM1 DM3 DM5 DH1 DH3 DH5
> HCI Event: Command Status (0x0f) plen 4
Change Connection Packet Type (0x01|0x000f) status 0x0c ncmd 1
Error: Command Disallowed
> ACL data: handle 7 flags 0x02 dlen 12
L2CAP(s): Connect req: psm 3 scid 0x0040
< ACL data: handle 7 flags 0x02 dlen 16
L2CAP(s): Connect rsp: dcid 0x0040 scid 0x0040 result 0 status 0
Connection successful
> HCI Event: Max Slots Change (0x1b) plen 3
handle 7 slots 5
> ACL data: handle 7 flags 0x02 dlen 16
L2CAP(s): Config req: dcid 0x0040 flags 0x00 clen 4
MTU 1024
< ACL data: handle 7 flags 0x02 dlen 14
L2CAP(s): Config rsp: scid 0x0040 flags 0x00 result 0 clen 0
Success
< ACL data: handle 7 flags 0x02 dlen 16
L2CAP(s): Config req: dcid 0x0040 flags 0x00 clen 4
MTU 1024
> ACL data: handle 7 flags 0x02 dlen 14
L2CAP(s): Config rsp: scid 0x0040 flags 0x00 result 0 clen 0
Success
> ACL data: handle 7 flags 0x02 dlen 8
L2CAP(d): cid 0x0040 len 4 [psm 3]
RFCOMM(s): SABM: cr 1 dlci 0 pf 1 ilen 0 fcs 0x1c
< ACL data: handle 7 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 7 flags 0x02 dlen 18
L2CAP(d): cid 0x0040 len 14 [psm 3]
RFCOMM(s): PN CMD: cr 1 dlci 0 pf 0 ilen 10 fcs 0x70 mcc_len 8
dlci 10 frame_type 0 credit_flow 15 pri 7 ack_timer 0
frame_size 1019 max_retrans 0 credits 7
< ACL data: handle 7 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 10 frame_type 0 credit_flow 14 pri 7 ack_timer 0
frame_size 1019 max_retrans 0 credits 7
> ACL data: handle 7 flags 0x02 dlen 8
L2CAP(d): cid 0x0040 len 4 [psm 3]
RFCOMM(s): SABM: cr 1 dlci 10 pf 1 ilen 0 fcs 0x8c
< ACL data: handle 7 flags 0x02 dlen 8
L2CAP(d): cid 0x0040 len 4 [psm 3]
RFCOMM(s): UA: cr 1 dlci 10 pf 1 ilen 0 fcs 0x47
< ACL data: handle 7 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 10 fc 0 rtc 1 rtr 1 ic 0 dv 1 b1 1 b2 1 b3 0 len 0
< ACL data: handle 7 flags 0x02 dlen 8
L2CAP(d): cid 0x0040 len 4 [psm 3]
RFCOMM(s): DISC: cr 0 dlci 10 pf 1 ilen 0 fcs 0xc
> ACL data: handle 7 flags 0x02 dlen 12
L2CAP(d): cid 0x0040 len 8 [psm 3]
RFCOMM(s): MSC CMD: cr 1 dlci 0 pf 0 ilen 4 fcs 0x70 mcc_len 2
dlci 10 fc 0 rtc 1 rtr 1 ic 0 dv 1 b1 1 b2 1 b3 0 len 0
< ACL data: handle 7 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 10 fc 0 rtc 1 rtr 1 ic 0 dv 1 b1 1 b2 1 b3 0 len 0
> HCI Event: Number of Completed Packets (0x13) plen 5
handle 7
> ACL data: handle 7 flags 0x02 dlen 8
L2CAP(d): cid 0x0040 len 4 [psm 3]
RFCOMM(s): DISC: cr 1 dlci 10 pf 1 ilen 0 fcs 0x6d
< ACL data: handle 7 flags 0x02 dlen 8
L2CAP(d): cid 0x0040 len 4 [psm 3]
RFCOMM(s): UA: cr 1 dlci 10 pf 1 ilen 0 fcs 0x47
> ACL data: handle 7 flags 0x02 dlen 12
L2CAP(d): cid 0x0040 len 8 [psm 3]
RFCOMM(s): MSC RSP: cr 1 dlci 0 pf 0 ilen 4 fcs 0x70 mcc_len 2
dlci 10 fc 0 rtc 1 rtr 1 ic 0 dv 1 b1 1 b2 1 b3 0 len 0
> ACL data: handle 7 flags 0x02 dlen 8
L2CAP(d): cid 0x0040 len 4 [psm 3]
RFCOMM(s): UA: cr 0 dlci 10 pf 1 ilen 0 fcs 0x26
< ACL data: handle 7 flags 0x02 dlen 8
L2CAP(d): cid 0x0040 len 4 [psm 3]
RFCOMM(s): DM: cr 1 dlci 10 pf 1 ilen 0 fcs 0xa6
> ACL data: handle 7 flags 0x02 dlen 8
L2CAP(d): cid 0x0040 len 4 [psm 3]
RFCOMM(s): DISC: cr 1 dlci 0 pf 1 ilen 0 fcs 0xfd
< ACL data: handle 7 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 7 flags 0x02 dlen 12
L2CAP(s): Disconn req: dcid 0x0040 scid 0x0040
< ACL data: handle 7 flags 0x02 dlen 12
L2CAP(s): Disconn rsp: dcid 0x0040 scid 0x0040
> HCI Event: Number of Completed Packets (0x13) plen 5
handle 7
> HCI Event: Disconn Complete (0x05) plen 4
status 0x00 handle 7 reason 0x13
Reason: Remote User Terminated Connection
next prev parent reply other threads:[~2005-04-20 12:17 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-04-15 17:52 [Bluez-users] error on connect Marco Trudel
2005-04-15 23:20 ` Marcel Holtmann
2005-04-16 19:07 ` Marco Trudel
2005-04-16 20:09 ` Marcel Holtmann
2005-04-17 1:33 ` Marco Trudel
2005-04-17 1:46 ` Marcel Holtmann
2005-04-17 10:17 ` Marco Trudel
2005-04-18 18:13 ` Marco Trudel
2005-04-18 18:41 ` Marcel Holtmann
2005-04-19 14:48 ` Marco Trudel
2005-04-19 15:13 ` Marcel Holtmann
2005-04-19 15:24 ` Marco Trudel
2005-04-19 15:47 ` Marcel Holtmann
2005-04-19 16:00 ` Marco Trudel
2005-04-19 16:13 ` Marcel Holtmann
2005-04-19 16:32 ` Marco Trudel
2005-04-19 16:51 ` Marcel Holtmann
2005-04-19 22:11 ` Marco Trudel
2005-04-19 22:32 ` Marcel Holtmann
2005-04-20 12:17 ` Marco Trudel [this message]
2005-04-20 12:32 ` Marcel Holtmann
2005-04-20 12:44 ` Marco Trudel
2005-04-24 12:53 ` Marco Trudel
2005-04-24 14:48 ` Marcel Holtmann
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=42664856.3050502@gmx.ch \
--to=mtrudel@gmx.ch \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox