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
Attachment:
hci.dump
Description: Binary data