2009-03-24 16:20:25

by Nick Pelly

[permalink] [raw]
Subject: [PATCH] Bluetooth: Fallback from eSCO to SCO on error code 0x1f (unspecified error).

Kyocera ED-8800 headset returns this error code when eSCO is attempted.

Signed-off-by: Nick Pelly <[email protected]>
---
net/bluetooth/hci_event.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 5553424..42cb717 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -1646,7 +1646,8 @@ static inline void hci_sync_conn_complete_evt(struct hci_dev *hdev, struct sk_bu
conn->type = SCO_LINK;
}

- if (conn->out && ev->status == 0x1c && conn->attempt < 2) {
+ if (conn->out && (ev->status == 0x1c || ev->status == 0x1f) &&
+ conn->attempt < 2) {
conn->pkt_type = (hdev->esco_type & SCO_ESCO_MASK) |
(hdev->esco_type & EDR_ESCO_MASK);
hci_setup_sync(conn, conn->link->handle);
--
1.5.5



2009-03-24 19:57:46

by Nick Pelly

[permalink] [raw]
Subject: Re: [PATCH] Bluetooth: Fallback from eSCO to SCO on error code 0x1f (unspecified error).

On Tue, Mar 24, 2009 at 3:59 AM, Marcel Holtmann <[email protected]> wrote:
> Hi Nick,
>
> like I told everybody else; NO top posting.
>
>> Here is the hcidump that prompted this patch:
>>
>> 009-03-23 17:43:50.727376 < HCI Command: Setup Synchronous Connection
>> (0x01|0x0028) plen 17
>> handle 1 voice setting 0x0060
>> 2009-03-23 17:43:50.746969 > HCI Event: Command Status (0x0f) plen 4
>> Setup Synchronous Connection (0x01|0x0028) status 0x00 ncmd 1
>> 2009-03-23 17:43:50.909963 > HCI Event: Synchronous Connect Complete
>> (0x2c) plen 17
>> status 0x1f handle 257 bdaddr 00:14:0A:01:E1:67 type eSCO
>> Error: Unspecified Error
>>
>> I have confirmed that with this patch we successfully fall back to SCO
>> with the Kyocera ED-8800
>
> can you also send me the output of hcitool info, because this error is
> kinda weird to get.

BD Address: 00:14:0A:01:E1:67
Device Name: ED-8800
LMP Version: 2.0 (0x3) LMP Subversion: 0xa45
Manufacturer: Cambridge Silicon Radio (10)
Features: 0xff 0xff 0x8f 0xfe 0x9b 0x19 0x00 0x80
<3-slot packets> <5-slot packets> <encryption> <slot offset>
<timing accuracy> <role switch> <hold mode> <sniff mode>
<park state> <RSSI> <channel quality> <SCO link> <HV2 packets>
<HV3 packets> <u-law log> <A-law log> <CVSD> <paging scheme>
<power control> <transparent SCO> <broadcast encrypt>
<EDR ACL 2 Mbps> <EDR ACL 3 Mbps> <enhanced iscan>
<interlaced iscan> <interlaced pscan> <inquiry with RSSI>
<extended SCO> <EV4 packets> <EV5 packets> <AFH cap. slave>
<AFH class. slave> <3-slot EDR ACL> <5-slot EDR ACL>
<AFH cap. master> <AFH class. master> <extended features>

> I am also suspicious about the TI chip now since I think that we are
> working around the stupidity of that chip and not any kind of remote
> headset. I would like to see the air trace (LMP negotiation) for this
> specific headset.

Sent LMP logs directly to you. The 0x1F error code is present in the
LMP packet. Appears to not be the fault of the TI chip.

Nick


Attachments:
android_8800_esco_fail.log (78.36 kB)

2009-03-24 10:59:25

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH] Bluetooth: Fallback from eSCO to SCO on error code 0x1f (unspecified error).

Hi Nick,

like I told everybody else; NO top posting.

> Here is the hcidump that prompted this patch:
>
> 009-03-23 17:43:50.727376 < HCI Command: Setup Synchronous Connection
> (0x01|0x0028) plen 17
> handle 1 voice setting 0x0060
> 2009-03-23 17:43:50.746969 > HCI Event: Command Status (0x0f) plen 4
> Setup Synchronous Connection (0x01|0x0028) status 0x00 ncmd 1
> 2009-03-23 17:43:50.909963 > HCI Event: Synchronous Connect Complete
> (0x2c) plen 17
> status 0x1f handle 257 bdaddr 00:14:0A:01:E1:67 type eSCO
> Error: Unspecified Error
>
> I have confirmed that with this patch we successfully fall back to SCO
> with the Kyocera ED-8800

can you also send me the output of hcitool info, because this error is
kinda weird to get.

I am also suspicious about the TI chip now since I think that we are
working around the stupidity of that chip and not any kind of remote
headset. I would like to see the air trace (LMP negotiation) for this
specific headset.

Regards

Marcel



2009-03-24 16:22:12

by Nick Pelly

[permalink] [raw]
Subject: Re: [PATCH] Bluetooth: Fallback from eSCO to SCO on error code 0x1f (unspecified error).

Here is the hcidump that prompted this patch:

009-03-23 17:43:50.727376 < HCI Command: Setup Synchronous Connection
(0x01|0x0028) plen 17
handle 1 voice setting 0x0060
2009-03-23 17:43:50.746969 > HCI Event: Command Status (0x0f) plen 4
Setup Synchronous Connection (0x01|0x0028) status 0x00 ncmd 1
2009-03-23 17:43:50.909963 > HCI Event: Synchronous Connect Complete
(0x2c) plen 17
status 0x1f handle 257 bdaddr 00:14:0A:01:E1:67 type eSCO
Error: Unspecified Error

I have confirmed that with this patch we successfully fall back to SCO
with the Kyocera ED-8800


On Tue, Mar 24, 2009 at 9:20 AM, Nick Pelly <[email protected]> wrote:
> Kyocera ED-8800 headset returns this error code when eSCO is attempted.
>
> Signed-off-by: Nick Pelly <[email protected]>
> ---
> net/bluetooth/hci_event.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
> index 5553424..42cb717 100644
> --- a/net/bluetooth/hci_event.c
> +++ b/net/bluetooth/hci_event.c
> @@ -1646,7 +1646,8 @@ static inline void hci_sync_conn_complete_evt(struct hci_dev *hdev, struct sk_bu
> conn->type = SCO_LINK;
> }
>
> - if (conn->out && ev->status == 0x1c && conn->attempt < 2) {
> + if (conn->out && (ev->status == 0x1c || ev->status == 0x1f) &&
> + conn->attempt < 2) {
> conn->pkt_type = (hdev->esco_type & SCO_ESCO_MASK) |
> (hdev->esco_type & EDR_ESCO_MASK);
> hci_setup_sync(conn, conn->link->handle);
> --
> 1.5.5
>
>