Bug 69181

Summary: cannot switch Cambridge Silicon Radio 8510 A10 aka Sitecom CNT-524 into hci mode
Product: Drivers Reporter: kernel
Component: BluetoothAssignee: linux-bluetooth (linux-bluetooth)
Status: NEW ---    
Severity: low CC: alan, mybigspam
Priority: P1    
Hardware: x86-64   
OS: Linux   
Kernel Version: 3.8.0-35 Subsystem:
Regression: No Bisected commit-id:

Description kernel 2014-01-21 23:27:10 UTC
this device starts in HID mode and non of the methods provided in bluez.git tools/hid2hci can switch it to hci mode 

steps to reproduce: 
 - insert BT dongle 

 - determine device path 
DEVPATH=$(udevadm trigger  --subsystem-match=usb --attr-match=idVendor=0a12 --attr-match=idProduct=100b --verbose | cut -d '/' -f 3-)

 - try to switch device to hci mode
/lib/udev/hid2hci --mode=hci --method=[csr|logitech-hid|dell] --devpath=${DEVPATH} 

 - check mode with lsusb 
$ lsusb -s 3:5 -v | head -n 16

Bus 003 Device 002: ID 0a12:100b Cambridge Silicon Radio, Ltd 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x100b 
  bcdDevice           88.91
  iManufacturer           0 
  iProduct                2 CSR8510 A10
  iSerial                 0 


Actual result:
 - device stays in hid mode

Expected result:
 - device switches to hci mode 

Additional Information:

a usb control message SET_REPORT report id: 0x01, report type: feature (0x03) to interface 0 with following report bytes switches the device to hci mode. 

char report[] = { 0x1 , 0x5 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 }

the method for switching back is not known to me and might be unavailable.

after switching to hci mode the device changes ids

$ lsusb -s 3:6 -v | head -n 16

Bus 003 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           88.91
  iManufacturer           0 
  iProduct                2 CSR8510 A10
  iSerial                 0 


a patch for hid2hci has been sent to the linux-bluetooth mailing list for review