2009-06-01 14:18:44

by Frédéric Brière

[permalink] [raw]
Subject: eSCO->SCO fallback still doesn't work for me

I don't know if I'm the unlucky owner of yet another broken Bluetooth
adapter, but I still can't get eSCO->SCO fallback to work, even with
2.6.30-rc7. Attempting to connect to my headset yields:

ALSA lib pcm_bluetooth.c:464:(bluetooth_hsp_hw_params) BT_SETCONFIGURATION failed : Input/output error(5)

While my syslog shows:

hcid[6085]: Audio API: received BT_GETCAPABILITIES_REQ
hcid[6085]: Audio API: sending BT_GETCAPABILITIES_RSP
hcid[6085]: Audio API: received BT_SETCONFIGURATION_REQ
hcid[6085]: config sco - device = 00:0b:2e:03:07:1b access_mode = 2
hcid[6085]: connect(): Protocol not supported (93)
hcid[6085]: Unable to lock headset
hcid[6085]: config failed
hcid[6085]: Audio API: sending BT_SETCONFIGURATION_RSP

Only by ripping out eSCO support completely[*] can I manage to connect.


I'm attaching the (binary) HCI dump of such a failed connection. Here's
the output of hciconfig, as well as the relevant part of /proc/usb:

hci0: Type: USB
BD Address: 00:10:60:A5:27:84 ACL MTU: 192:8 SCO MTU: 64:8
UP RUNNING PSCAN ISCAN
RX bytes:2414 acl:32 sco:0 events:72 errors:0
TX bytes:996 acl:30 sco:0 commands:34 errors:0
Features: 0xff 0xff 0x8f 0xf8 0x18 0x18 0x00 0x80
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: SLAVE ACCEPT
Name: 'toroia-0'
Class: 0x080100
Service Classes: Capturing
Device Class: Computer, Uncategorized
HCI Ver: 1.1 (0x1) HCI Rev: 0x639 LMP Ver: 1.1 (0x1) LMP Subver: 0x639
Manufacturer: Cambridge Silicon Radio (10)

T: Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 4 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=e0(unk. ) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=0a12 ProdID=0001 Rev=15.93
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(unk. ) Sub=01 Prot=01 Driver=btusb
E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=btusb
E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=btusb
E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms
I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=btusb
E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms
I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=btusb
E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms
I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=btusb
E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms
I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=btusb
E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms


Let me know if I can be of any help.


[*] The disable_esco parameter doesn't work for me. This only turns off
the one lmp_esco_capable() in net/bluetooth/sco.c, which is not
enough; there are two more in net/bluetooth/hci_conn.c which will
make any connection attempt fail. (There are also two others in
net/bluetooth/hci_event.c, but they don't appear to have any
impact.)

--
/*
* Buddy system. Hairy. You really aren't expected to understand this
*
*/
-- From /usr/src/linux/mm/page_alloc.cA


Attachments:
(No filename) (3.35 kB)
hci.dump (1.64 kB)
Download all attachments